Inject DeviceProfileBuilder instead of DeviceProfile itself

Consumers of the device profile can create and cache it themselves
This commit is contained in:
Maxr1998 authored and Niels van Velzen committed 2022-09-24 15:36:43 +02:00
1 parent 807fed61cf
commit 480c1e9b2b
3 files changed
+7 -8

No files matched your search

@@ -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<DeviceProfileBuilder>().getDeviceProfile() }
single(named(ExternalPlayer.DEVICE_PROFILE_NAME)) { get<DeviceProfileBuilder>().getExternalPlayerProfile() }
// ExoPlayer factories
single<DataSource.Factory> {
@@ -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
@@ -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<Application>())
private val _mediaQueue: MutableLiveData<QueueItem.Loaded> = MutableLiveData()
val mediaQueue: LiveData<QueueItem.Loaded> get() = _mediaQueue
private var deviceProfile = deviceProfileBuilder.getDeviceProfile()
private var currentPlayOptions: PlayOptions? = null
/**