fix: correct record playing when coming back on a record
This commit is contained in:
@@ -41,6 +41,8 @@ fun PlayerScreen(
|
||||
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
||||
|
||||
DisposableEffect(Unit) {
|
||||
viewModel.loadRecord()
|
||||
|
||||
onDispose {
|
||||
viewModel.stop()
|
||||
}
|
||||
|
||||
+15
-17
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user