Skip to content

Commit

Permalink
Make PlayerOverlayMenu.Menu song provider nullable
Browse files Browse the repository at this point in the history
  • Loading branch information
toasterofbread committed Jun 25, 2024
1 parent 0756b23 commit d842537
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ actual fun notifImagePlayerOverlayMenuButtonText(): String? = getString("song_no
actual class NotifImagePlayerOverlayMenu: PlayerOverlayMenu() {
@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ fun LargeThumbnailRow(
Crossfade(player.np_overlay_menu) { menu ->
CompositionLocalProvider(LocalContentColor provides Color.White) {
menu?.Menu(
{ player.status.m_song!! },
{ player.status.m_song },
{ expansion.getAbsolute() },
{ player.openNpOverlayMenu(it ?: main_overlay_menu) },
getSeekState
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ class MainPlayerOverlayMenu(

@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
getCurrentSongThumb: () -> ImageBitmap?
) {
val song: Song = getSong() ?: return
val player: PlayerState = LocalPlayerState.current
val download_manager = player.context.download_manager
val song: Song = getSong()

val song_artists: List<Artist>? by song.Artists.observe(player.database)

Expand All @@ -77,7 +77,7 @@ class MainPlayerOverlayMenu(
DisposableEffect(Unit) {
val status_listener: PlayerDownloadManager.DownloadStatusListener = object : PlayerDownloadManager.DownloadStatusListener() {
override fun onDownloadChanged(status: DownloadStatus) {
if (status.song.id == getSong().id) {
if (status.song.id == getSong()?.id) {
download_status = status
}
}
Expand All @@ -96,7 +96,9 @@ class MainPlayerOverlayMenu(
LaunchedEffect(Unit) {
while (true) {
if (download_status?.status == DownloadStatus.Status.DOWNLOADING || download_status?.status == DownloadStatus.Status.PAUSED) {
download_progress_target = download_manager.getDownload(getSong())!!.progress
getSong()?.also { song ->
download_progress_target = download_manager.getDownload(song)?.progress ?: return@also
}
}
delay(1500)
}
Expand Down Expand Up @@ -234,8 +236,9 @@ class MainPlayerOverlayMenu(
.align(Alignment.Center)
.fillMaxSize()
.clickable {
val song: Song = getSong() ?: return@clickable
if (download_status?.status != DownloadStatus.Status.FINISHED && download_status?.status != DownloadStatus.Status.ALREADY_FINISHED) {
player.onSongDownloadRequested(getSong())
player.onSongDownloadRequested(song)
}
},
contentAlignment = Alignment.Center
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ enum class PlayerOverlayMenuAction {
abstract class PlayerOverlayMenu {
@Composable
abstract fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,18 @@ class RelatedContentPlayerOverlayMenu(

@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
getCurrentSongThumb: () -> ImageBitmap?
) {
val song: Song = getSong() ?: return
val player: PlayerState = LocalPlayerState.current

Box(Modifier.fillMaxSize(), contentAlignment = Alignment.BottomEnd) {
SongRelatedPage(
getSong(),
song,
related_endpoint,
Modifier.fillMaxSize(),
title_text_style = MaterialTheme.typography.headlineSmall,
Expand All @@ -54,7 +55,7 @@ class RelatedContentPlayerOverlayMenu(
1,
{ index, _ ->
when (index) {
0 ->
0 ->
ActionButton(Icons.Filled.Close) {
openMenu(null)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@ class SongThemePlayerOverlayMenu(

@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
getCurrentSongThumb: () -> ImageBitmap?
) {
val song: Song = getSong() ?: return
val player: PlayerState = LocalPlayerState.current
val song: Song = getSong()

val thumb_image: ImageBitmap? = getCurrentSongThumb()
var palette_colours: List<Color>? by remember { mutableStateOf(null) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,19 @@ class LyricsPlayerOverlayMenu: PlayerOverlayMenu() {

@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
getCurrentSongThumb: () -> ImageBitmap?
) {
val song: Song = getSong() ?: return
val player: PlayerState = LocalPlayerState.current
val coroutine_scope: CoroutineScope = rememberCoroutineScope()
val scroll_state: LazyListState = rememberLazyListState()
val pill_menu: PillMenu = remember { PillMenu(expand_state = mutableStateOf(false)) }

val lyrics_state: SongLyricsLoader.ItemState = SongLyricsLoader.rememberItemState(getSong(), player.context)
val lyrics_state: SongLyricsLoader.ItemState = SongLyricsLoader.rememberItemState(song, player.context)
var show_furigana: Boolean by remember { mutableStateOf(player.settings.lyrics.DEFAULT_FURIGANA.get()) }

var submenu: Submenu? by remember { mutableStateOf(null) }
Expand All @@ -72,7 +73,9 @@ class LyricsPlayerOverlayMenu: PlayerOverlayMenu() {
}

LaunchedEffect(lyrics_state) {
SongLyricsLoader.loadBySong(getSong(), player.context)
getSong()?.also { song ->
SongLyricsLoader.loadBySong(song, player.context)
}
}

LaunchedEffect(lyrics_state.loading) {
Expand Down Expand Up @@ -178,7 +181,7 @@ class LyricsPlayerOverlayMenu: PlayerOverlayMenu() {
Crossfade(
Triple(
submenu,
getSong(),
song,
lyrics_state.lyrics ?: if (lyrics_state.loading) true else if (lyrics_state.is_none) null else false
),
Modifier.fillMaxSize()
Expand All @@ -193,7 +196,7 @@ class LyricsPlayerOverlayMenu: PlayerOverlayMenu() {
if (changed) {
coroutine_scope.launchSingle {
val result: SongLyrics? =
SongLyricsLoader.loadBySong(getSong(), player.context)
SongLyricsLoader.loadBySong(song, player.context)
?.getOrNotify(player.context, "LyricsOverlayMenu lyrics search")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ actual fun notifImagePlayerOverlayMenuButtonText(): String? = null
actual class NotifImagePlayerOverlayMenu actual constructor(): PlayerOverlayMenu() {
@Composable
override fun Menu(
getSong: () -> Song,
getSong: () -> Song?,
getExpansion: () -> Float,
openMenu: (PlayerOverlayMenu?) -> Unit,
getSeekState: () -> Any,
Expand Down

0 comments on commit d842537

Please sign in to comment.