mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 07:29:14 +01:00
ui: open the artist chooser immediately from the menu
This commit is contained in:
@@ -213,12 +213,9 @@ fun ItemContextMenu(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dismissThen(after: () -> Unit) {
|
fun replaceWith(after: () -> Unit) {
|
||||||
scope.launch {
|
onDismiss()
|
||||||
sheetState.hide()
|
after()
|
||||||
onDismiss()
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user