feat: beat annotator

This commit is contained in:
2026-05-15 09:03:20 +02:00
parent 7beea662b6
commit 848f5919c8
12 changed files with 640 additions and 42 deletions

View File

@@ -12,6 +12,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.core.content.ContextCompat
import androidx.navigation.NavHostController
import androidx.navigation.NavType
@@ -32,6 +33,7 @@ fun LockstepAppNavHost(
navController: NavHostController,
viewModel: LockstepViewModel,
) {
val annotationMode by viewModel.annotationMode.collectAsStateWithLifecycle()
var playback by remember { mutableStateOf<PlaybackService?>(null) }
DisposableEffect(Unit) {
@@ -70,7 +72,11 @@ fun LockstepAppNavHost(
navController.navigate(Routes.pairing(playlist.id))
} else {
startPlaylistPlayback(activity, playlist.id)
navController.navigate(Routes.nowPlaying(playlist.id))
if (annotationMode) {
navController.navigate(Routes.annotation(playlist.id))
} else {
navController.navigate(Routes.nowPlaying(playlist.id))
}
}
},
onOpenSettings = {
@@ -112,6 +118,21 @@ fun LockstepAppNavHost(
onBack = { navController.popBackStack() },
)
}
composable(
route = Routes.Annotation,
arguments =
listOf(
navArgument("playlistId") { type = NavType.StringType },
),
) { entry ->
val playlistId = entry.arguments?.getString("playlistId").orEmpty()
AnnotationRoute(
playlistId = playlistId,
playback = playback,
viewModel = viewModel,
onBack = { navController.popBackStack() },
)
}
}
}