diff --git a/core/src/main/java/hu/bbara/purefin/data/CompositeMediaRepository.kt b/core/src/main/java/hu/bbara/purefin/data/CompositeMediaRepository.kt index 69ea5216..3e350957 100644 --- a/core/src/main/java/hu/bbara/purefin/data/CompositeMediaRepository.kt +++ b/core/src/main/java/hu/bbara/purefin/data/CompositeMediaRepository.kt @@ -25,12 +25,12 @@ import javax.inject.Singleton class CompositeMediaRepository @Inject constructor( @Offline private val offlineRepository: MediaRepository, @Online private val onlineRepository: MediaRepository, -) : MediaCatalogReader, MediaProgressWriter { +) : MediaRepository { private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) // TODO move this into the domain layer and there you can use NetworkMonitor. Data should be free of android stuff. - private val activeRepository: Flow = flowOf(onlineRepository) + private val activeRepository: Flow = flowOf(onlineRepository) override val movies: StateFlow> = activeRepository .flatMapLatest { it.movies } diff --git a/core/src/main/java/hu/bbara/purefin/data/MediaCatalogReader.kt b/core/src/main/java/hu/bbara/purefin/data/MediaCatalogReader.kt deleted file mode 100644 index f8cd13ff..00000000 --- a/core/src/main/java/hu/bbara/purefin/data/MediaCatalogReader.kt +++ /dev/null @@ -1,21 +0,0 @@ -package hu.bbara.purefin.data - -import hu.bbara.purefin.model.Episode -import hu.bbara.purefin.model.Genre -import hu.bbara.purefin.model.Movie -import hu.bbara.purefin.model.Series -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.StateFlow -import java.util.UUID - -//TODO rename MediaRepository -interface MediaCatalogReader { - val movies: StateFlow> - val series: StateFlow> - val episodes: StateFlow> - val genres: StateFlow> - suspend fun getMovie(id: UUID): Flow - suspend fun getSeries(id: UUID): Flow - suspend fun getEpisode(id: UUID): Flow - fun observeSeriesWithContent(seriesId: UUID): Flow -} diff --git a/core/src/main/java/hu/bbara/purefin/data/MediaRepository.kt b/core/src/main/java/hu/bbara/purefin/data/MediaRepository.kt index 5674cceb..6abd115a 100644 --- a/core/src/main/java/hu/bbara/purefin/data/MediaRepository.kt +++ b/core/src/main/java/hu/bbara/purefin/data/MediaRepository.kt @@ -1,4 +1,20 @@ package hu.bbara.purefin.data -interface MediaRepository : MediaCatalogReader, MediaProgressWriter { -} \ No newline at end of file +import hu.bbara.purefin.model.Episode +import hu.bbara.purefin.model.Genre +import hu.bbara.purefin.model.Movie +import hu.bbara.purefin.model.Series +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow +import java.util.UUID + +interface MediaRepository : MediaProgressWriter { + val movies: StateFlow> + val series: StateFlow> + val episodes: StateFlow> + val genres: StateFlow> + suspend fun getMovie(id: UUID): Flow + suspend fun getSeries(id: UUID): Flow + suspend fun getEpisode(id: UUID): Flow + fun observeSeriesWithContent(seriesId: UUID): Flow +} diff --git a/core/src/main/java/hu/bbara/purefin/feature/browse/home/AppViewModel.kt b/core/src/main/java/hu/bbara/purefin/feature/browse/home/AppViewModel.kt index 7691ab53..50f7bf6d 100644 --- a/core/src/main/java/hu/bbara/purefin/feature/browse/home/AppViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/feature/browse/home/AppViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import hu.bbara.purefin.data.HomeRepository -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.data.UserSessionRepository import hu.bbara.purefin.download.MediaDownloadController import hu.bbara.purefin.model.LibraryKind @@ -34,7 +34,7 @@ import javax.inject.Inject @HiltViewModel class AppViewModel @Inject constructor( private val homeRepository: HomeRepository, - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val userSessionRepository: UserSessionRepository, private val navigationManager: NavigationManager, private val mediaDownloadManager: MediaDownloadController, diff --git a/core/src/main/java/hu/bbara/purefin/feature/content/episode/EpisodeScreenViewModel.kt b/core/src/main/java/hu/bbara/purefin/feature/content/episode/EpisodeScreenViewModel.kt index 4a374828..2e101b56 100644 --- a/core/src/main/java/hu/bbara/purefin/feature/content/episode/EpisodeScreenViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/feature/content/episode/EpisodeScreenViewModel.kt @@ -3,7 +3,7 @@ package hu.bbara.purefin.feature.content.episode import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.download.DownloadState import hu.bbara.purefin.download.MediaDownloadController import hu.bbara.purefin.model.Episode @@ -22,7 +22,7 @@ import javax.inject.Inject @HiltViewModel class EpisodeScreenViewModel @Inject constructor( - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val navigationManager: NavigationManager, private val mediaDownloadManager: MediaDownloadController, ): ViewModel() { diff --git a/core/src/main/java/hu/bbara/purefin/feature/content/movie/MovieScreenViewModel.kt b/core/src/main/java/hu/bbara/purefin/feature/content/movie/MovieScreenViewModel.kt index faa0b077..01a63c91 100644 --- a/core/src/main/java/hu/bbara/purefin/feature/content/movie/MovieScreenViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/feature/content/movie/MovieScreenViewModel.kt @@ -3,7 +3,7 @@ package hu.bbara.purefin.feature.content.movie import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.download.DownloadState import hu.bbara.purefin.download.MediaDownloadController import hu.bbara.purefin.model.Movie @@ -21,7 +21,7 @@ import javax.inject.Inject @HiltViewModel class MovieScreenViewModel @Inject constructor( - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val navigationManager: NavigationManager, private val mediaDownloadManager: MediaDownloadController, ): ViewModel() { diff --git a/core/src/main/java/hu/bbara/purefin/feature/content/series/SeriesViewModel.kt b/core/src/main/java/hu/bbara/purefin/feature/content/series/SeriesViewModel.kt index 2ad237dd..671d287c 100644 --- a/core/src/main/java/hu/bbara/purefin/feature/content/series/SeriesViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/feature/content/series/SeriesViewModel.kt @@ -3,7 +3,7 @@ package hu.bbara.purefin.feature.content.series import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.download.DownloadState import hu.bbara.purefin.download.MediaDownloadController import hu.bbara.purefin.model.Episode @@ -25,7 +25,7 @@ import javax.inject.Inject @HiltViewModel class SeriesViewModel @Inject constructor( - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val navigationManager: NavigationManager, private val mediaDownloadManager: MediaDownloadController, ) : ViewModel() { diff --git a/core/src/main/java/hu/bbara/purefin/feature/search/SearchViewModel.kt b/core/src/main/java/hu/bbara/purefin/feature/search/SearchViewModel.kt index 3452874b..3e502d79 100644 --- a/core/src/main/java/hu/bbara/purefin/feature/search/SearchViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/feature/search/SearchViewModel.kt @@ -3,7 +3,7 @@ package hu.bbara.purefin.feature.search import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.data.UserSessionRepository import hu.bbara.purefin.image.ArtworkKind import hu.bbara.purefin.image.ImageUrlBuilder @@ -26,7 +26,7 @@ import javax.inject.Inject @HiltViewModel @OptIn(FlowPreview::class) class SearchViewModel @Inject constructor( - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val userSessionRepository: UserSessionRepository, private val navigationManager: NavigationManager, ) : ViewModel() { diff --git a/core/src/main/java/hu/bbara/purefin/module/RepositoryModule.kt b/core/src/main/java/hu/bbara/purefin/module/RepositoryModule.kt index 13430177..0511d8a5 100644 --- a/core/src/main/java/hu/bbara/purefin/module/RepositoryModule.kt +++ b/core/src/main/java/hu/bbara/purefin/module/RepositoryModule.kt @@ -5,8 +5,8 @@ import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import hu.bbara.purefin.data.CompositeMediaRepository -import hu.bbara.purefin.data.MediaCatalogReader import hu.bbara.purefin.data.MediaProgressWriter +import hu.bbara.purefin.data.MediaRepository @Module @@ -14,8 +14,8 @@ import hu.bbara.purefin.data.MediaProgressWriter abstract class RepositoryModule { @Binds - abstract fun bindMediaCatalogReader(impl: CompositeMediaRepository): MediaCatalogReader + abstract fun bindMediaRepository(impl: CompositeMediaRepository): MediaRepository @Binds abstract fun bindMediaProgressWrite(impl: CompositeMediaRepository): MediaProgressWriter -} \ No newline at end of file +} diff --git a/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt b/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt index c3fbc9a8..559cc629 100644 --- a/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt +++ b/core/src/main/java/hu/bbara/purefin/player/viewmodel/PlayerViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import hu.bbara.purefin.data.MediaCatalogReader +import hu.bbara.purefin.data.MediaRepository import hu.bbara.purefin.image.ArtworkKind import hu.bbara.purefin.image.ImageUrlBuilder import hu.bbara.purefin.model.PlayableMedia @@ -31,7 +31,7 @@ import javax.inject.Inject class PlayerViewModel @Inject constructor( savedStateHandle: SavedStateHandle, private val playerManager: PlayerManager, - private val mediaCatalogReader: MediaCatalogReader, + private val mediaCatalogReader: MediaRepository, private val progressManager: ProgressManager, ) : ViewModel() { companion object {