ui: open the artist chooser immediately from the menu

This commit is contained in:
austinried
2026-10-21 00:30:41 +00:00
parent 185aaabbc5
commit 6f1e1612e1
2 changed files with 9 additions and 12 deletions
@@ -213,13 +213,10 @@ fun ItemContextMenu(
} }
} }
fun dismissThen(after: () -> Unit) { fun replaceWith(after: () -> Unit) {
scope.launch {
sheetState.hide()
onDismiss() onDismiss()
after() after()
} }
}
val queueRef = target.queueRef() val queueRef = target.queueRef()
@@ -267,7 +264,7 @@ fun ItemContextMenu(
} }
} }
} }
ArtistItems(target.song.artistRefs, actions, onChooseArtists, ::dismiss, ::dismissThen) ArtistItems(target.song.artistRefs, actions, onChooseArtists, ::dismiss, ::replaceWith)
onInfo?.let { info -> onInfo?.let { info ->
MenuItem(Icons.Rounded.Info, stringResource(R.string.info)) { dismiss { info(target) } } MenuItem(Icons.Rounded.Info, stringResource(R.string.info)) { dismiss { info(target) } }
} }
@@ -281,7 +278,7 @@ fun ItemContextMenu(
onSet = { starring -> actions.setStar(StarType.Album, target.album.id, starring) }, onSet = { starring -> actions.setStar(StarType.Album, target.album.id, starring) },
onDismiss = { dismiss() }, onDismiss = { dismiss() },
) )
ArtistItems(target.album.artistRefs, actions, onChooseArtists, ::dismiss, ::dismissThen) ArtistItems(target.album.artistRefs, actions, onChooseArtists, ::dismiss, ::replaceWith)
onInfo?.let { info -> onInfo?.let { info ->
MenuItem(Icons.Rounded.Info, stringResource(R.string.info)) { dismiss { info(target) } } MenuItem(Icons.Rounded.Info, stringResource(R.string.info)) { dismiss { info(target) } }
} }
@@ -347,7 +344,7 @@ private fun ArtistItems(
actions: ItemActions, actions: ItemActions,
onChooseArtists: ((List<ArtistRef>) -> Unit)?, onChooseArtists: ((List<ArtistRef>) -> Unit)?,
dismiss: (() -> Unit) -> Unit, dismiss: (() -> Unit) -> Unit,
dismissThen: (() -> Unit) -> Unit, replaceWith: (() -> Unit) -> Unit,
) { ) {
val view = actions.viewArtist ?: return val view = actions.viewArtist ?: return
val distinct = artists.distinctBy { it.id } val distinct = artists.distinctBy { it.id }
@@ -383,7 +380,7 @@ private fun ArtistItems(
distinct.joinToString(" \u00B7 ") { it.name.ifBlank { fallback } }, distinct.joinToString(" \u00B7 ") { it.name.ifBlank { fallback } },
trailing = { Icon(Icons.AutoMirrored.Rounded.KeyboardArrowRight, contentDescription = null) }, trailing = { Icon(Icons.AutoMirrored.Rounded.KeyboardArrowRight, contentDescription = null) },
) { ) {
dismissThen { onChooseArtists(distinct) } replaceWith { onChooseArtists(distinct) }
} }
} }
} }
@@ -82,9 +82,9 @@ class ItemContextMenuArtistTest {
composeRule.mainClock.autoAdvance = false composeRule.mainClock.autoAdvance = false
entry.performClick() entry.performClick()
composeRule.mainClock.advanceTimeBy(1_000)
assertEquals(listOf("ar1", "ar2"), opened?.map { it.id }) assertEquals(listOf("ar1", "ar2"), opened?.map { it.id })
composeRule.mainClock.advanceTimeBy(1_000)
} }
@Test @Test
@@ -132,8 +132,8 @@ class ItemContextMenuArtistTest {
composeRule.mainClock.autoAdvance = false composeRule.mainClock.autoAdvance = false
entry.performClick() entry.performClick()
composeRule.mainClock.advanceTimeBy(1_000)
assertEquals(20, opened?.size) assertEquals(20, opened?.size)
composeRule.mainClock.advanceTimeBy(1_000)
} }
} }