mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
Separate mobile downloads from TV playback
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package hu.bbara.purefin.tv.di
|
||||
|
||||
import androidx.media3.datasource.DataSource
|
||||
import androidx.media3.datasource.okhttp.OkHttpDataSource
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import hu.bbara.purefin.core.data.download.DownloadState
|
||||
import hu.bbara.purefin.core.data.download.MediaDownloadController
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import org.jellyfin.sdk.model.UUID
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object TvPlaybackModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providePlaybackDataSourceFactory(
|
||||
okHttpDataSourceFactory: OkHttpDataSource.Factory
|
||||
): DataSource.Factory {
|
||||
return okHttpDataSourceFactory
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideMediaDownloadController(): MediaDownloadController {
|
||||
return TvNoOpMediaDownloadController
|
||||
}
|
||||
}
|
||||
|
||||
internal object TvNoOpMediaDownloadController : MediaDownloadController {
|
||||
private val notDownloaded = MutableStateFlow<DownloadState>(DownloadState.NotDownloaded)
|
||||
|
||||
override fun observeActiveDownloads(): Flow<Map<String, Float>> = flowOf(emptyMap())
|
||||
|
||||
override fun observeDownloadState(contentId: String) = notDownloaded
|
||||
|
||||
override suspend fun downloadMovie(movieId: UUID) = Unit
|
||||
|
||||
override suspend fun cancelDownload(movieId: UUID) = Unit
|
||||
|
||||
override suspend fun downloadEpisode(episodeId: UUID) = Unit
|
||||
|
||||
override suspend fun downloadEpisodes(episodeIds: List<UUID>) = Unit
|
||||
|
||||
override suspend fun cancelEpisodeDownload(episodeId: UUID) = Unit
|
||||
|
||||
override suspend fun enableSmartDownload(seriesId: UUID) = Unit
|
||||
|
||||
override suspend fun syncSmartDownloads() = Unit
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package hu.bbara.purefin.tv.di
|
||||
|
||||
import hu.bbara.purefin.core.data.download.DownloadState
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class TvNoOpMediaDownloadControllerTest {
|
||||
|
||||
@Test
|
||||
fun `tv no-op download controller always reports no downloads`() = runBlocking {
|
||||
assertEquals(emptyMap<String, Float>(), TvNoOpMediaDownloadController.observeActiveDownloads().first())
|
||||
assertEquals(
|
||||
DownloadState.NotDownloaded,
|
||||
TvNoOpMediaDownloadController.observeDownloadState("movie-1").value
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user