detail: fix broken playing state updates

This commit is contained in:
Alexander Capehart 2024-10-23 10:05:23 -06:00
parent 82ddd3a24e
commit d7f3c58fd9
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
8 changed files with 15 additions and 3 deletions

View file

@ -143,6 +143,8 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
binding.detailShuffleButton?.setOnClickListener { binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value)) playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value))
} }
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
} }
private fun updateList(list: List<Item>) { private fun updateList(list: List<Item>) {

View file

@ -166,6 +166,8 @@ class ArtistDetailFragment : DetailFragment<Artist, Music>() {
binding.detailShuffleButton?.setOnClickListener { binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value)) playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value))
} }
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
} }
private fun updateList(list: List<Item>) { private fun updateList(list: List<Item>) {

View file

@ -135,6 +135,8 @@ class GenreDetailFragment : DetailFragment<Genre, Music>() {
binding.detailShuffleButton?.setOnClickListener { binding.detailShuffleButton?.setOnClickListener {
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value)) playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value))
} }
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
} }
private fun updateList(list: List<Item>) { private fun updateList(list: List<Item>) {

View file

@ -237,6 +237,8 @@ class PlaylistDetailFragment :
playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value)) playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value))
} }
} }
updatePlayback(
playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value)
} }
private fun updateList(list: List<Item>) { private fun updateList(list: List<Item>) {

View file

@ -158,8 +158,7 @@ private class HomeGeneratorImpl(
} else { } else {
sorted sorted
} }
} } ?: emptyList()
?: emptyList()
override fun genres() = override fun genres() =
musicRepository.deviceLibrary?.let { listSettings.genreSort.genres(it.genres) } musicRepository.deviceLibrary?.let { listSettings.genreSort.genres(it.genres) }

View file

@ -29,6 +29,7 @@ import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.ForegroundListener import org.oxycblt.auxio.ForegroundListener
import org.oxycblt.auxio.ForegroundServiceNotification import org.oxycblt.auxio.ForegroundServiceNotification
import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.IndexingState
import org.oxycblt.auxio.music.MusicParent
import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicSettings import org.oxycblt.auxio.music.MusicSettings
import org.oxycblt.auxio.playback.state.PlaybackStateManager import org.oxycblt.auxio.playback.state.PlaybackStateManager
@ -155,6 +156,8 @@ private constructor(
playbackManager.toSavedState()?.let { savedState -> playbackManager.toSavedState()?.let { savedState ->
playbackManager.applySavedState( playbackManager.applySavedState(
savedState.copy( savedState.copy(
parent =
savedState.parent?.let { musicRepository.find(it.uid) as? MusicParent? },
heap = heap =
savedState.heap.map { song -> savedState.heap.map { song ->
song?.let { deviceLibrary.findSong(it.uid) } song?.let { deviceLibrary.findSong(it.uid) }

View file

@ -371,6 +371,7 @@ class ExoPlaybackStateHolder(
) { ) {
var sendNewPlaybackEvent = false var sendNewPlaybackEvent = false
var shouldSeek = false var shouldSeek = false
L.d("invalidating parent ${this.parent?.songs} ${parent?.songs}")
if (this.parent != parent) { if (this.parent != parent) {
this.parent = parent this.parent = parent
sendNewPlaybackEvent = true sendNewPlaybackEvent = true

View file

@ -157,7 +157,8 @@ class WidgetProvider : AppWidgetProvider() {
fun reset(context: Context, uiSettings: UISettings) { fun reset(context: Context, uiSettings: UISettings) {
L.d("Using default layout") L.d("Using default layout")
val layout = newDefaultLayout(context, uiSettings) val layout = newDefaultLayout(context, uiSettings)
AppWidgetManager.getInstance(context).updateAppWidget(ComponentName(context, this::class.java), layout) AppWidgetManager.getInstance(context)
.updateAppWidget(ComponentName(context, this::class.java), layout)
} }
// --- INTERNAL METHODS --- // --- INTERNAL METHODS ---