diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt index d21b2b17..eacc17cf 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/MusicService.kt @@ -230,7 +230,10 @@ class MusicService private suspend fun updateQueueSize() { withContext(Dispatchers.Main) { _state.update { - it.copy(queueSize = player.mediaItemCount) + it.copy( + queueVersion = it.queueVersion + 1, + queueSize = player.mediaItemCount, + ) } } start() @@ -278,6 +281,7 @@ class MusicService @Stable data class MusicServiceState( + val queueVersion: Long, val queueSize: Int, val currentIndex: Int, val currentItemId: UUID?, @@ -286,7 +290,7 @@ data class MusicServiceState( val loadingState: LoadingState = LoadingState.Pending, ) { companion object { - val EMPTY = MusicServiceState(0, 0, null, false, null) + val EMPTY = MusicServiceState(0L, 0, 0, null, false, null) } } @@ -357,9 +361,10 @@ private class MusicPlayerListener( @Composable fun rememberQueue( player: Player, + queueVersion: Long, queueSize: Int, ): List = - remember(queueSize) { + remember(queueVersion, queueSize) { object : AbstractList() { override val size: Int get() = player.mediaItemCount diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt index 9811c5ae..763cd178 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/NowPlayingPage.kt @@ -66,7 +66,12 @@ fun NowPlayingPage( val context = LocalContext.current val state by viewModel.state.collectAsState() val player = viewModel.player - val queue = rememberQueue(player, state.musicServiceState.queueSize) + val queue = + rememberQueue( + player, + state.musicServiceState.queueVersion, + state.musicServiceState.queueSize, + ) val current = queue.getOrNull(state.musicServiceState.currentIndex) val controllerViewState = viewModel.controllerViewState