From b71f9c239e65faa1bb930ec5933fa630ccb1f513 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 30 May 2026 02:32:25 -0400 Subject: [PATCH] fix(android): NowPlaying action row above the scrubber for Flutter parity Flutter's _SecondaryControls (like, shuffle, repeat, queue, kebab) sit just above the seek bar (now_playing_screen.dart:464); Android had them at the bottom under the transport row. Reorder the NowPlayingBody column so it reads cover -> title -> actions -> scrubber -> transport, matching Flutter. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../minstrel/player/ui/NowPlayingScreen.kt | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt index 23afd0ab..a1a7af98 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt @@ -227,6 +227,21 @@ private fun NowPlayingBody( Spacer(Modifier.height(24.dp)) TrackHeader(title = track.title, artist = track.artistName, album = track.albumTitle) Spacer(Modifier.height(24.dp)) + // Action row (like, shuffle, repeat, queue, kebab) sits ABOVE the + // scrubber — Flutter's _SecondaryControls placement + // (now_playing_screen.dart:464). Android previously had it below + // the transport row. + BottomActionsRow( + navController = navController, + track = track, + shuffleEnabled = state.shuffleEnabled, + repeatMode = state.repeatMode, + isLiked = isLiked, + onToggleLike = { trackActionsViewModel.toggleLike(track.id, isLiked) }, + onToggleShuffle = viewModel::toggleShuffle, + onCycleRepeat = viewModel::cycleRepeat, + ) + Spacer(Modifier.height(8.dp)) ScrubberRow( positionMs = state.positionMs, durationMs = state.durationMs, @@ -239,17 +254,6 @@ private fun NowPlayingBody( onPlayPause = { if (state.isPlaying) viewModel.pause() else viewModel.play() }, onNext = viewModel::skipToNext, ) - Spacer(Modifier.height(16.dp)) - BottomActionsRow( - navController = navController, - track = track, - shuffleEnabled = state.shuffleEnabled, - repeatMode = state.repeatMode, - isLiked = isLiked, - onToggleLike = { trackActionsViewModel.toggleLike(track.id, isLiked) }, - onToggleShuffle = viewModel::toggleShuffle, - onCycleRepeat = viewModel::cycleRepeat, - ) } }