47 lines
2.9 KiB
Markdown
47 lines
2.9 KiB
Markdown
# Android Changelog
|
|
|
|
## 2026-03-08
|
|
### Step 1 - Build and app wiring
|
|
- Added Android project plugin configuration for Hilt and Kotlin serialization.
|
|
- Added dependency repositories and explicit app module include in settings.
|
|
- Added app dependencies for Retrofit/OkHttp, DataStore, coroutines, Hilt, and unit testing.
|
|
- Enabled INTERNET permission and registered MessengerApplication in manifest.
|
|
- Added MessengerApplication with HiltAndroidApp.
|
|
|
|
### Step 2 - Network/data core + DI
|
|
- Fixed DTO/Auth API serialization annotations and endpoint declarations for `/api/v1/auth/login`, `/api/v1/auth/refresh`, `/api/v1/auth/me`.
|
|
- Implemented DataStore-based token persistence with a corrected `getTokens()` read path.
|
|
- Added auth network stack: bearer interceptor, 401 authenticator with refresh flow and retry guard.
|
|
- Added clean-layer contracts and implementations: `domain/common`, `domain/auth`, `data/auth/repository`.
|
|
- Wired dependencies with Hilt modules for DataStore, OkHttp/Retrofit, and repository bindings.
|
|
|
|
### Step 3 - Minimal auth UI and navigation
|
|
- Replaced Phase 0 placeholder UI with Compose auth flow (`AuthViewModel` + login screen).
|
|
- Added loading/error states for login and startup session restore.
|
|
- Added navigation graph: `AuthGraph (login)` to placeholder `Chats` screen after successful auth.
|
|
- Implemented automatic session restore on app start using stored tokens.
|
|
|
|
### Step 4 - Unit tests
|
|
- Added `DataStoreTokenRepositoryTest` for token save/read and clear behavior.
|
|
- Added `NetworkAuthRepositoryTest` for login success path and 401 -> `InvalidCredentials` error mapping.
|
|
|
|
### Step 5 - Chat Room models and persistence core
|
|
- Added domain chat model (`ChatItem`) for chat list rendering concerns.
|
|
- Added Room entities: `chats`, `users_short` with sort-friendly indices.
|
|
- Added `ChatDao` with `observeChats()`, `upsertChats()`, and transactional `clearAndReplaceChats()`.
|
|
- Added `MessengerDatabase` and Hilt database wiring (`DatabaseModule`).
|
|
|
|
### Step 6 - Chat API and repository sync
|
|
- Added chat REST API client for `/api/v1/chats` and `/api/v1/chats/{chat_id}`.
|
|
- Added chat DTOs and remote/local mappers (`ChatReadDto -> ChatEntity/UserShortEntity -> ChatItem`).
|
|
- Implemented `NetworkChatRepository` with cache-first flow strategy (Room first, then server sync).
|
|
- Added chat domain contracts/use-cases (`ChatRepository`, observe/refresh use-cases).
|
|
- Wired chat API/repository via Hilt modules.
|
|
|
|
### Step 7 - Realtime manager and chat list updates
|
|
- Added a unified realtime manager abstraction and WebSocket implementation for `/api/v1/realtime/ws?token=...`.
|
|
- Implemented auto-reconnect with exponential backoff and max cap.
|
|
- Added realtime event parser for `receive_message`, `message_updated`, `message_deleted`, `chat_updated`, `chat_deleted`, `user_online`, `user_offline`.
|
|
- Added use-case level realtime event handling that updates Room and triggers repository refreshes when needed.
|
|
- Wired realtime manager into DI.
|