From f7f65c44a7d93b477cfb587e3d35b07df81d579e Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Fri, 7 Oct 2022 16:11:12 +0200 Subject: [PATCH] Make likeAt in Controls saveable --- .../vimusic/ui/screens/player/Controls.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/Controls.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/Controls.kt index a0d6193..2972880 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/Controls.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/Controls.kt @@ -21,10 +21,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.BasicText import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.autoSaver import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -47,11 +47,13 @@ import it.vfsfitvnm.vimusic.ui.styling.favoritesIcon import it.vfsfitvnm.vimusic.utils.bold import it.vfsfitvnm.vimusic.utils.forceSeekToNext import it.vfsfitvnm.vimusic.utils.forceSeekToPrevious +import it.vfsfitvnm.vimusic.utils.produceSaveableState import it.vfsfitvnm.vimusic.utils.rememberRepeatMode import it.vfsfitvnm.vimusic.utils.secondary import it.vfsfitvnm.vimusic.utils.semiBold import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOn @Composable fun Controls( @@ -74,9 +76,13 @@ fun Controls( mutableStateOf(null) } - val likedAt by remember(mediaId) { - Database.likedAt(mediaId).distinctUntilChanged() - }.collectAsState(initial = null, context = Dispatchers.IO) + val likedAt by produceSaveableState(initialValue = null, stateSaver = autoSaver()) { + Database + .likedAt(mediaId) + .flowOn(Dispatchers.IO) + .distinctUntilChanged() + .collect { value = it } + } val shouldBePlayingTransition = updateTransition(shouldBePlaying, label = "shouldBePlaying")