mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-10 15:11:58 +01:00
fix queue overlay, focus and artwork loading glitches
- scope QueueViewModel to the queue overlay so its rows are released on close and a reopened queue cannot show two overlapping lists; key open() on the overlay visibility so a fast reopen still rescans and refocuses - reuse row ids by song identity when a window (re)loads so Compose does not cross-fade the old rows out while the new ones fade in - fade the artist name scrim in and key its busy check on the thumbnail, the same ref the theme already uses, so a cached seed shows it immediately - start detail gradients from the neutral base artwork until the seed resolves instead of inheriting the now playing theme and snapping to the artist colours - fade the now playing and detail status bar scrims by putting the graphicsLayer before statusBarScrim(), which otherwise drew the background outside the layer - decode full-size and hero covers with FilterQuality.High to stop the moire during overscroll stretch
This commit is contained in:
@@ -108,6 +108,23 @@ class QueueViewModelTest {
|
||||
assertEquals(1L, dropTarget(listOf(row(0), row(3), row(1), row(2)), index = 1, from = 3))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun reopeningReusesRowIdentitySoComposeDoesNotCrossFadeTwoLists() {
|
||||
runBlocking { seedSongs(200) }
|
||||
controller.playSongs(1, 100)
|
||||
await { controller.state.value.position == 100L }
|
||||
|
||||
viewModel.open()
|
||||
await { viewModel.ready }
|
||||
val firstIds = viewModel.rows.map { it.id }
|
||||
val firstGeneration = viewModel.generation
|
||||
|
||||
viewModel.open()
|
||||
await { viewModel.generation > firstGeneration }
|
||||
|
||||
assertEquals(firstIds, viewModel.rows.map { it.id })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun reorderingMovesTheRowLocally() {
|
||||
runBlocking { seedSongs(200) }
|
||||
|
||||
Reference in New Issue
Block a user