mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-09 08:01:20 +02:00
Add version to state
This commit is contained in:
parent
1af906fe90
commit
84611c24ed
2 changed files with 14 additions and 4 deletions
|
|
@ -230,7 +230,10 @@ class MusicService
|
||||||
private suspend fun updateQueueSize() {
|
private suspend fun updateQueueSize() {
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
_state.update {
|
_state.update {
|
||||||
it.copy(queueSize = player.mediaItemCount)
|
it.copy(
|
||||||
|
queueVersion = it.queueVersion + 1,
|
||||||
|
queueSize = player.mediaItemCount,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
start()
|
start()
|
||||||
|
|
@ -278,6 +281,7 @@ class MusicService
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class MusicServiceState(
|
data class MusicServiceState(
|
||||||
|
val queueVersion: Long,
|
||||||
val queueSize: Int,
|
val queueSize: Int,
|
||||||
val currentIndex: Int,
|
val currentIndex: Int,
|
||||||
val currentItemId: UUID?,
|
val currentItemId: UUID?,
|
||||||
|
|
@ -286,7 +290,7 @@ data class MusicServiceState(
|
||||||
val loadingState: LoadingState = LoadingState.Pending,
|
val loadingState: LoadingState = LoadingState.Pending,
|
||||||
) {
|
) {
|
||||||
companion object {
|
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
|
@Composable
|
||||||
fun rememberQueue(
|
fun rememberQueue(
|
||||||
player: Player,
|
player: Player,
|
||||||
|
queueVersion: Long,
|
||||||
queueSize: Int,
|
queueSize: Int,
|
||||||
): List<AudioItem> =
|
): List<AudioItem> =
|
||||||
remember(queueSize) {
|
remember(queueVersion, queueSize) {
|
||||||
object : AbstractList<AudioItem>() {
|
object : AbstractList<AudioItem>() {
|
||||||
override val size: Int
|
override val size: Int
|
||||||
get() = player.mediaItemCount
|
get() = player.mediaItemCount
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,12 @@ fun NowPlayingPage(
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val state by viewModel.state.collectAsState()
|
val state by viewModel.state.collectAsState()
|
||||||
val player = viewModel.player
|
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 current = queue.getOrNull(state.musicServiceState.currentIndex)
|
||||||
|
|
||||||
val controllerViewState = viewModel.controllerViewState
|
val controllerViewState = viewModel.controllerViewState
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue