From 480c1e9b2b9782f84e9049d8d4ceffeef5dcdbd5 Mon Sep 17 00:00:00 2001 From: Maxr1998 Date: Sat, 2 Oct 2021 00:15:35 +0200 Subject: [PATCH] Inject DeviceProfileBuilder instead of DeviceProfile itself Consumers of the device profile can create and cache it themselves --- app/src/main/java/org/jellyfin/mobile/app/AppModule.kt | 3 --- .../main/java/org/jellyfin/mobile/bridge/ExternalPlayer.kt | 5 +++-- .../java/org/jellyfin/mobile/player/queue/QueueManager.kt | 7 ++++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/jellyfin/mobile/app/AppModule.kt b/app/src/main/java/org/jellyfin/mobile/app/AppModule.kt index b4377924..2ef91d60 100644 --- a/app/src/main/java/org/jellyfin/mobile/app/AppModule.kt +++ b/app/src/main/java/org/jellyfin/mobile/app/AppModule.kt @@ -19,7 +19,6 @@ import okhttp3.OkHttpClient import org.chromium.net.CronetEngine import org.chromium.net.CronetProvider import org.jellyfin.mobile.MainViewModel -import org.jellyfin.mobile.bridge.ExternalPlayer import org.jellyfin.mobile.player.audio.car.LibraryBrowser import org.jellyfin.mobile.player.deviceprofile.DeviceProfileBuilder import org.jellyfin.mobile.player.interaction.PlayerEvent @@ -67,8 +66,6 @@ val applicationModule = module { // Media player helpers single { MediaSourceResolver(get()) } single { DeviceProfileBuilder() } - single { get().getDeviceProfile() } - single(named(ExternalPlayer.DEVICE_PROFILE_NAME)) { get().getExternalPlayerProfile() } // ExoPlayer factories single { diff --git a/app/src/main/java/org/jellyfin/mobile/bridge/ExternalPlayer.kt b/app/src/main/java/org/jellyfin/mobile/bridge/ExternalPlayer.kt index fde2027b..1ada256e 100644 --- a/app/src/main/java/org/jellyfin/mobile/bridge/ExternalPlayer.kt +++ b/app/src/main/java/org/jellyfin/mobile/bridge/ExternalPlayer.kt @@ -15,6 +15,7 @@ import kotlinx.coroutines.launch import org.jellyfin.mobile.R import org.jellyfin.mobile.app.AppPreferences import org.jellyfin.mobile.player.PlayerException +import org.jellyfin.mobile.player.deviceprofile.DeviceProfileBuilder import org.jellyfin.mobile.player.interaction.PlayOptions import org.jellyfin.mobile.player.source.ExternalSubtitleStream import org.jellyfin.mobile.player.source.JellyfinMediaSource @@ -36,7 +37,6 @@ import org.json.JSONObject import org.koin.core.component.KoinComponent import org.koin.core.component.get import org.koin.core.component.inject -import org.koin.core.qualifier.named import timber.log.Timber class ExternalPlayer( @@ -49,7 +49,8 @@ class ExternalPlayer( private val appPreferences: AppPreferences by inject() private val webappFunctionChannel: WebappFunctionChannel by inject() private val mediaSourceResolver: MediaSourceResolver by inject() - private val externalPlayerProfile: DeviceProfile by inject(named(DEVICE_PROFILE_NAME)) + private val deviceProfileBuilder: DeviceProfileBuilder by inject() + private val externalPlayerProfile: DeviceProfile = deviceProfileBuilder.getExternalPlayerProfile() private val apiClient: ApiClient = get() private val videosApi: VideosApi = apiClient.videosApi diff --git a/app/src/main/java/org/jellyfin/mobile/player/queue/QueueManager.kt b/app/src/main/java/org/jellyfin/mobile/player/queue/QueueManager.kt index 65f887e8..4c503ec8 100644 --- a/app/src/main/java/org/jellyfin/mobile/player/queue/QueueManager.kt +++ b/app/src/main/java/org/jellyfin/mobile/player/queue/QueueManager.kt @@ -15,6 +15,7 @@ import com.google.android.exoplayer2.source.hls.HlsMediaSource import com.google.android.exoplayer2.trackselection.DefaultTrackSelector import org.jellyfin.mobile.player.PlayerException import org.jellyfin.mobile.player.PlayerViewModel +import org.jellyfin.mobile.player.deviceprofile.DeviceProfileBuilder import org.jellyfin.mobile.player.interaction.PlayOptions import org.jellyfin.mobile.player.source.JellyfinMediaSource import org.jellyfin.mobile.player.source.MediaSourceResolver @@ -23,26 +24,26 @@ import org.jellyfin.mobile.utils.selectTrackByTypeAndGroup import org.jellyfin.sdk.api.client.ApiClient import org.jellyfin.sdk.api.client.extensions.videosApi import org.jellyfin.sdk.api.operations.VideosApi -import org.jellyfin.sdk.model.api.DeviceProfile import org.jellyfin.sdk.model.api.MediaProtocol import org.jellyfin.sdk.model.api.MediaStream import org.jellyfin.sdk.model.api.PlayMethod import org.koin.core.component.KoinComponent import org.koin.core.component.get import org.koin.core.component.inject -import java.util.* +import java.util.UUID class QueueManager( private val viewModel: PlayerViewModel, ) : KoinComponent { private val apiClient: ApiClient = get() private val mediaSourceResolver: MediaSourceResolver by inject() - private val deviceProfile: DeviceProfile by inject() + private val deviceProfileBuilder: DeviceProfileBuilder by inject() private val videosApi: VideosApi = apiClient.videosApi val trackSelector = DefaultTrackSelector(viewModel.getApplication()) private val _mediaQueue: MutableLiveData = MutableLiveData() val mediaQueue: LiveData get() = _mediaQueue + private var deviceProfile = deviceProfileBuilder.getDeviceProfile() private var currentPlayOptions: PlayOptions? = null /**