Commit Graph

7 Commits

Author SHA1 Message Date
4ecb402e69 refactor: extract InMemoryMediaRepository from InMemoryAppContentRepository
- Create InMemoryMediaRepository to hold in-memory media state (movies,
  series, episodes), lazy series content loading, and watch progress updates
- InMemoryAppContentRepository delegates MediaRepository via Kotlin's by
  delegation, injecting InMemoryMediaRepository as a composite component
- CompositeMediaRepository now uses InMemoryMediaRepository directly as the
  online repository instead of AppContentRepository
2026-02-22 14:38:22 +01:00
69fda1fef2 refactor: add CompositeMediaRepository to switch between offline/online based on user session
Extract AppContentRepository interface from MediaRepository for home/library-specific features.
CompositeMediaRepository delegates to OfflineMediaRepository or AppContentRepository based on
UserSessionRepository.isOfflineMode, allowing content ViewModels to use a single MediaRepository
interface that automatically switches data source.
2026-02-22 14:18:27 +01:00
d5c0bbded6 feat: add DownloadsViewModel for managing offline media downloads 2026-02-22 13:41:52 +01:00
ce126988d9 feat: add images to libraries on LibrariesContent screen 2026-02-22 12:50:56 +01:00
781d36cc99 refactor: replace Room backing store in InMemoryMediaRepository with MutableStateFlows
- Remove RoomMediaLocalDataSource dependency from InMemoryMediaRepository;
  libraries, movies, series, and episodes are now held in MutableStateFlows
- observeSeriesWithContent derives from _series flow via map {}
- updateWatchProgress mutates _movies / _episodes in-memory
- ensureSeriesContentLoaded checks and updates _series in-memory
- Reorganize Room package: move entities/DAOs from local/room to room/entity and room/dao
2026-02-22 11:05:28 +01:00
6f34190ed0 feat: add player screen to TV app via compose navigation
- Add PlayerRoute to the Route sealed interface
- Refactor PlayerViewModel to expose loadMedia() for external callers
- Add onPlay() to EpisodeScreenViewModel and MovieScreenViewModel
- Wire play/resume buttons in TV episode and movie screens
- Create TvPlayerScreen with TV-optimized controls: seek bar, playback
  buttons, track selection panels, queue panel, and state cards
- Register PlayerRoute in TvRouteEntryBuilder and TvNavigationModule
- Add media3-ui dependency to app-tv module
2026-02-22 11:05:27 +01:00
7333781f83 refactor: modularize app into multi-module architecture 2026-02-22 11:05:26 +01:00