fix: correct record playing when coming back on a record

This commit is contained in:
2026-07-01 15:45:08 +02:00
parent 63cfdd5d3c
commit ff1844e49f
2 changed files with 17 additions and 17 deletions
@@ -41,6 +41,8 @@ fun PlayerScreen(
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
DisposableEffect(Unit) {
viewModel.loadRecord()
onDispose {
viewModel.stop()
}
@@ -28,8 +28,6 @@ class PlayerViewModel(
) : ViewModel() {
private val record = MutableStateFlow<Record?>(null)
private var recordLoaded = false
val uiState: StateFlow<PlayerUiState> = combine(
record,
playbackRepository.playbackState,
@@ -45,34 +43,34 @@ class PlayerViewModel(
subtitleLines = subtitle.lines,
currentSubtitleIndex = currentSubtitleIndex,
)
}.onStart { loadRecord() }
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5.seconds),
initialValue = PlayerUiState(),
)
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5.seconds),
initialValue = PlayerUiState(),
)
init {
audioSessionManager.activate()
}
private fun loadRecord() {
logger.debug("Loading record $recordId")
if (recordLoaded) {
logger.debug("Record $recordId already loaded")
return
}
recordLoaded = true
fun loadRecord() {
viewModelScope.launch {
logger.debug("Loading record $recordId")
val alreadyLoadedRecord = record.value
if (alreadyLoadedRecord != null) {
logger.debug("Record $recordId already loaded")
playbackRepository.load(record = alreadyLoadedRecord)
return@launch
}
val loadedRecord = recordRepository.getRecord(id = recordId)
if (loadedRecord == null) {
logger.error(message = "Record not found: $recordId")
return@launch
}
record.value = loadedRecord
playbackRepository.load(record = loadedRecord)
record.value = loadedRecord
}
}