From 490ab8dbe4bd97a28d1bb1e5f10b656a3b614ecc Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Fri, 25 Sep 2026 02:23:34 +0000 Subject: [PATCH] address review: drop the stale duration carry, tint the split pill divider when disabled --- .../com/subtracks/playback/PlaybackController.kt | 10 +++------- .../com/subtracks/ui/components/HeroDetailScaffold.kt | 8 +++++++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt index cbc04b8d..39b8c441 100644 --- a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt +++ b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt @@ -114,7 +114,6 @@ class PlaybackController( private val startLock = Mutex() private var snapshot: QueueSnapshot? = null - private var lastDurationMs = 0L private var lastError: String? = null private var queueSourceId: Long? = null private var windowStart = 0L @@ -229,7 +228,6 @@ class PlaybackController( windowJob?.cancel() windowStart = 0 windowEnd = -1 - lastDurationMs = 0 lastError = null lastEdit = null endedHandled = false @@ -607,7 +605,6 @@ class PlaybackController( windowJob?.cancel() windowStart = 0 windowEnd = -1 - lastDurationMs = 0 lastError = null lastEdit = null endedHandled = false @@ -682,7 +679,6 @@ class PlaybackController( bufferingJob = null showBuffering = false snapshot = null - lastDurationMs = 0 lastError = null queueSourceId = null windowStart = 0 @@ -917,10 +913,10 @@ class PlaybackController( private fun refresh(position: Long? = currentPosition()) { val player = player ?: return updateBuffering() - lastDurationMs = + val durationMs = player.durationMs.takeIf { it > 0 } ?: player.currentItem?.durationMs?.takeIf { it > 0 } - ?: lastDurationMs + ?: 0L _state.value = PlaybackState( item = player.currentItem, @@ -930,7 +926,7 @@ class PlaybackController( isBuffering = showBuffering, isPlaying = player.playWhenReady && !player.isIdle && !player.isEnded, positionMs = player.currentPositionMs, - durationMs = lastDurationMs, + durationMs = durationMs, hasNext = true, hasPrevious = true, shuffle = shuffleEnabled, diff --git a/app/src/main/kotlin/com/subtracks/ui/components/HeroDetailScaffold.kt b/app/src/main/kotlin/com/subtracks/ui/components/HeroDetailScaffold.kt index c42aa49e..bfae5b99 100644 --- a/app/src/main/kotlin/com/subtracks/ui/components/HeroDetailScaffold.kt +++ b/app/src/main/kotlin/com/subtracks/ui/components/HeroDetailScaffold.kt @@ -266,6 +266,12 @@ fun HeroHeader( horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, ) { + val dividerColor = + if (hasSongs) { + MaterialTheme.colorScheme.onPrimary.copy(alpha = 0.35f) + } else { + MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + } Box(contentAlignment = Alignment.Center) { Row { FilledIconButton( @@ -289,7 +295,7 @@ fun HeroHeader( Modifier .width(1.dp) .height(20.dp) - .background(MaterialTheme.colorScheme.onPrimary.copy(alpha = 0.35f)), + .background(dividerColor), ) } }