diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index 378cfe15f..be5f9e3fb 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -183,7 +183,7 @@ class DetailViewModel(application: Application) : return } logD("Opening Song [uid: $uid]") - _currentSong.value = requireMusic(uid).also(::loadProperties) + _currentSong.value = requireMusic(uid)?.also(::loadProperties) } /** @@ -197,7 +197,7 @@ class DetailViewModel(application: Application) : return } logD("Opening Album [uid: $uid]") - _currentAlbum.value = requireMusic(uid).also(::refreshAlbumList) + _currentAlbum.value = requireMusic(uid)?.also(::refreshAlbumList) } /** @@ -211,7 +211,7 @@ class DetailViewModel(application: Application) : return } logD("Opening Artist [uid: $uid]") - _currentArtist.value = requireMusic(uid).also(::refreshArtistList) + _currentArtist.value = requireMusic(uid)?.also(::refreshArtistList) } /** @@ -225,11 +225,10 @@ class DetailViewModel(application: Application) : return } logD("Opening Genre [uid: $uid]") - _currentGenre.value = requireMusic(uid).also(::refreshGenreList) + _currentGenre.value = requireMusic(uid)?.also(::refreshGenreList) } - private fun requireMusic(uid: Music.UID): T = - requireNotNull(unlikelyToBeNull(musicStore.library).find(uid)) { "Invalid id provided" } + private fun requireMusic(uid: Music.UID) = musicStore.library?.find(uid) /** * Start a new job to load a [DetailSong] based on the properties of the given [Song]'s file. diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt index 8baabb71c..14150fb70 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicStore.kt @@ -30,6 +30,8 @@ import org.oxycblt.auxio.music.filesystem.useQuery * generally recommended to use this over Indexer to keep track of the library state, as the * interface will be less volatile. * + * TODO: Use volatile on individual fields + * * @author Alexander Capehart (OxygenCobalt) */ class MusicStore private constructor() {