This commit introduces a dedicated user detail screen, enabling users to view profiles, and refactors the navigation flow, particularly for post and image details, to be more modular and robust.
**Key Changes:**
* **feat(UserDetailScreen):**
* Added a new `UserDetailScreen` to display user information, including their avatar, name, bio, and a list of their posts.
* Implemented a `UserDetailViewModel` to fetch user data and their associated posts from the repository.
* The screen is composed of several modular components: `UserDetailCard`, `UserStatsSection`, and `PostsSection`.
* Includes loading skeletons and an empty state for the user's post list.
* Integrated a pull-to-refresh mechanism to update user data.
* **feat(Navigation):**
* Added a new `UserDetail` route (`user_detail/{userId}`) to the navigation graph.
* Users can now navigate from a post card or post detail view to the author's `UserDetailScreen`.
* Clicking a post in the `UserDetailScreen` navigates to the corresponding `PostDetailScreen`.
* **refactor(Navigation & Post/Image Detail):**
* Decoupled the text and image detail views, removing the `PostDetailContainer` that previously managed mode switching with `AnimatedContent`.
* `PostDetailScreen` and `ImageDetailScreen` are now independent navigation destinations.
* Navigation from a post to its image view is now a direct navigation action to `ImageDetailScreen`, simplifying the logic.
* The route for `PostDetail` has been simplified to `post_detail/{postId}`, removing the `mode` parameter.
* **feat(Shared Element Transition):**
* Implemented a shared element transition for the user avatar, animating it from `PostCardItem` to `UserDetailScreen`.
* The avatar transition key is based on `user_avatar_{userId}` for consistent animations.
* **refactor(ImageDetailScreen):**
* Improved the shared element transition for images by setting `placeHolderSize` to `animatedSize` and disabling `renderInOverlayDuringTransition`, which can resolve certain animation artifacts.
* **refactor(Repository):**
* Added `getUserPosts(userId)` to the `UserRepository` to fetch all post metadata for a specific user.
Description
No description provided
Languages
Kotlin
100%