This commit introduces a comprehensive set of features, establishing the core functionality of the application using an MVVM architecture with Hilt for dependency injection.
**Key Changes:**
* **UI & Navigation:**
* Implemented navigation between the main feed, post details, and login screens using Jetpack Navigation Compose.
* Added `TalkScreen` for displaying a feed of posts and `PostDetailScreen` for viewing individual posts and their comments.
* Created a `LoginScreen` with input fields and authentication logic.
* Introduced `PostCardItem` and `CommentItem` Composables for a consistent and reusable UI.
* Added shared element transitions for a smoother user experience when navigating to post details.
* **Architecture & State Management:**
* Integrated Hilt for dependency injection across ViewModels and Repositories.
* Created ViewModels (`TalkViewModel`, `PostDetailViewModel`, `UserViewModel`, `CommentViewModel`, etc.) to manage UI state and business logic.
* Implemented Repository pattern for abstracting data sources from the backend API.
* Defined UI state data classes to ensure a predictable and observable state flow.
* **Data & Models:**
* Introduced data models for `PostCard` and `CommentCard` to aggregate and display complex data structures.
* Added `PostDetailRepository` to orchestrate fetching of post and comment data concurrently.
* Refined DTOs, such as `CreateCommentDto`, for API interactions.
* **Dependencies & Tooling:**
* Added Hilt, Navigation Compose, and Lifecycle ViewModel dependencies.
* Included the `pangu-jvm` library for improved text formatting with spacing between Chinese and English characters.
18 lines
609 B
XML
18 lines
609 B
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project version="4">
|
|
<component name="deploymentTargetSelector">
|
|
<selectionStates>
|
|
<SelectionState runConfigName="app">
|
|
<option name="selectionMode" value="DROPDOWN" />
|
|
<DropdownSelection timestamp="2025-10-05T14:23:49.203872Z">
|
|
<Target type="DEFAULT_BOOT">
|
|
<handle>
|
|
<DeviceId pluginId="PhysicalDevice" identifier="serial=6fbe7ac" />
|
|
</handle>
|
|
</Target>
|
|
</DropdownSelection>
|
|
<DialogSelection />
|
|
</SelectionState>
|
|
</selectionStates>
|
|
</component>
|
|
</project> |