feat: also sync beat annotations to api, store beat annotations in Documents

This commit is contained in:
2026-05-30 19:55:42 +02:00
parent 45c4980c05
commit e936dee142
6 changed files with 66 additions and 33 deletions

View File

@@ -37,6 +37,7 @@ import androidx.compose.ui.unit.dp
import at.lockstep.player.LockstepViewModel
import at.lockstep.player.R
import at.lockstep.player.playback.PlaybackService
import at.lockstep.player.util.RunDataStorage
/**
* Beat taps record [PlaybackService.getPlaybackPositionMs] (Media3 [androidx.media3.common.Player]
@@ -82,6 +83,7 @@ fun AnnotationRoute(
}
val beatTimesMs = remember { mutableStateListOf<Long>() }
val annotationSessionFolder = remember { RunDataStorage.newRunSessionFolderName() }
var playlistDisplayName by remember { mutableStateOf("playlist") }
@@ -89,12 +91,18 @@ fun AnnotationRoute(
playlistDisplayName = viewModel.getPlaylistDisplayName(playlistId)
}
LaunchedEffect(playback, playlistId, playlistDisplayName) {
LaunchedEffect(playback, playlistId, playlistDisplayName, annotationSessionFolder) {
val service = playback ?: return@LaunchedEffect
service.trackBoundaryEvents.collect { event ->
val snapshot = beatTimesMs.toList()
beatTimesMs.clear()
viewModel.persistBeatAnnotation(playlistId, playlistDisplayName, event, snapshot)
viewModel.persistBeatAnnotation(
playlistId,
playlistDisplayName,
annotationSessionFolder,
event,
snapshot,
)
}
}