fix: avoid duplicate beat metadata fetching from api

This commit is contained in:
2026-05-31 12:02:28 +02:00
parent 19bbccf244
commit a10102c10a
3 changed files with 16 additions and 10 deletions

View File

@@ -91,17 +91,21 @@ fun AnnotationRoute(
var playlistDisplayName by remember { mutableStateOf("playlist") }
LaunchedEffect(playlistId) {
playlistDisplayName = viewModel.getPlaylistDisplayName(playlistId)
val name = viewModel.getPlaylistDisplayName(playlistId)
playlistDisplayName = name
viewModel.fetchBeatsMetadataForPlaylist(playlistId, name)
}
LaunchedEffect(playback, playlistId, playlistDisplayName, annotationSessionFolder) {
LaunchedEffect(playback, playlistId, annotationSessionFolder) {
val service = playback ?: return@LaunchedEffect
val name = viewModel.getPlaylistDisplayName(playlistId)
playlistDisplayName = name
service.trackBoundaryEvents.collect { event ->
val snapshot = beatTimesMs.toList()
beatTimesMs.clear()
viewModel.persistBeatAnnotation(
playlistId,
playlistDisplayName,
name,
annotationSessionFolder,
event,
snapshot,

View File

@@ -212,11 +212,9 @@ fun NowPlayingRoute(
}
LaunchedEffect(playlistId) {
playlistDisplayName = viewModel.getPlaylistDisplayName(playlistId)
}
LaunchedEffect(playlistId, playlistDisplayName) {
viewModel.fetchBeatsMetadataForPlaylist(playlistId, playlistDisplayName)
val name = viewModel.getPlaylistDisplayName(playlistId)
playlistDisplayName = name
viewModel.fetchBeatsMetadataForPlaylist(playlistId, name)
}
LaunchedEffect(playback) {
@@ -257,12 +255,14 @@ fun NowPlayingRoute(
}
}
LaunchedEffect(collectRunData, playback, playlistId, playlistDisplayName) {
LaunchedEffect(collectRunData, playback, playlistId) {
if (!collectRunData) return@LaunchedEffect
val service = playback ?: return@LaunchedEffect
val name = viewModel.getPlaylistDisplayName(playlistId)
playlistDisplayName = name
service.trackBoundaryEvents.collect { event ->
val snapshot = collector.snapshotAndClear()
viewModel.persistRunData(playlistId, playlistDisplayName, runSessionFolder, event, snapshot)
viewModel.persistRunData(playlistId, name, runSessionFolder, event, snapshot)
}
}