mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Change backdrop periodically
This commit is contained in:
parent
48a933136f
commit
3e043d5118
1 changed files with 40 additions and 18 deletions
|
|
@ -30,8 +30,10 @@ import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
|
import kotlinx.coroutines.CancellationException
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
|
@ -47,8 +49,10 @@ import org.jellyfin.sdk.model.api.LyricDto
|
||||||
import org.jellyfin.sdk.model.extensions.ticks
|
import org.jellyfin.sdk.model.extensions.ticks
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
import kotlin.random.Random
|
||||||
import kotlin.time.Duration
|
import kotlin.time.Duration
|
||||||
import kotlin.time.Duration.Companion.milliseconds
|
import kotlin.time.Duration.Companion.milliseconds
|
||||||
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
@HiltViewModel(assistedFactory = NowPlayingViewModel.Factory::class)
|
@HiltViewModel(assistedFactory = NowPlayingViewModel.Factory::class)
|
||||||
|
|
@ -209,16 +213,22 @@ class NowPlayingViewModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var backDropJob: Job? = null
|
||||||
|
|
||||||
private fun updateBackdrop(audio: AudioItem?) {
|
private fun updateBackdrop(audio: AudioItem?) {
|
||||||
|
backDropJob?.cancel()
|
||||||
|
backDropJob =
|
||||||
viewModelScope.launchDefault {
|
viewModelScope.launchDefault {
|
||||||
val showBackdrop =
|
val showBackdrop =
|
||||||
userPreferencesService
|
userPreferencesService
|
||||||
.getCurrent()
|
.getCurrent()
|
||||||
.appPreferences.musicPreferences.showBackdrop
|
.appPreferences.musicPreferences.showBackdrop
|
||||||
if (audio?.albumId != null && showBackdrop) {
|
if (showBackdrop) {
|
||||||
|
if (audio?.albumId != null) {
|
||||||
try {
|
try {
|
||||||
api.userLibraryApi.getItem(audio.albumId).content.let {
|
api.userLibraryApi.getItem(audio.albumId).content.let {
|
||||||
val backdropItem = getBackdropItemForAlbum(api, BaseItem(it, false))
|
val backdropItem =
|
||||||
|
getBackdropItemForAlbum(api, BaseItem(it, false))
|
||||||
if (backdropItem != null) {
|
if (backdropItem != null) {
|
||||||
backdropService.submit(backdropItem)
|
backdropService.submit(backdropItem)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -232,6 +242,18 @@ class NowPlayingViewModel
|
||||||
} else {
|
} else {
|
||||||
backdropService.clearBackdrop()
|
backdropService.clearBackdrop()
|
||||||
}
|
}
|
||||||
|
// TODO needs smoother transition
|
||||||
|
delay(60.seconds)
|
||||||
|
try {
|
||||||
|
val index = Random.nextInt(state.value.musicServiceState.queueSize)
|
||||||
|
val newAudio =
|
||||||
|
onMain { player.getMediaItemAt(index) }.localConfiguration?.tag as? AudioItem
|
||||||
|
updateBackdrop(newAudio)
|
||||||
|
} catch (_: CancellationException) {
|
||||||
|
} catch (ex: Exception) {
|
||||||
|
Timber.w(ex, "Error getting random audio")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue