refactor: improve player accessibility

This commit is contained in:
Antoine Jaury
2026-10-12 14:03:21 +02:00
parent 477cb445e3
commit 242d494c86
24 changed files with 193 additions and 21 deletions
@@ -138,13 +138,16 @@ internal class PlaybackRepositoryImpl(
)
}
override suspend fun load(record: Record) {
override suspend fun load(
record: Record,
autoPlay: Boolean,
) {
phraseBreakJob?.cancel()
cancelRunningBreak()
pendingPhraseStart = null
pendingSeekTarget = null
playAudio(filePath = record.audioResourcePath)
loadAudio(filePath = record.audioResourcePath, autoPlay = autoPlay)
subtitle.value = loadSubtitle(record = record)
reachedPhraseIndex = upcomingPhraseIndex(position = Duration.ZERO)
recordTitle.value = record.title
@@ -264,12 +267,15 @@ internal class PlaybackRepositoryImpl(
audioPlayer.seekTo(position)
}
private fun playAudio(filePath: String) {
private fun loadAudio(
filePath: String,
autoPlay: Boolean,
) {
try {
audioPlayer.load(uri = resourceReader.uri(filePath))
audioPlayer.play()
if (autoPlay) audioPlayer.play()
} catch (exception: Exception) {
logger.error(message = "Failed to play audio: $filePath", throwable = exception)
logger.error(message = "Failed to load audio: $filePath", throwable = exception)
}
}
@@ -15,7 +15,10 @@ import kotlin.time.Duration
interface PlaybackRepository {
val playerState: Flow<PlayerState>
suspend fun load(record: Record)
suspend fun load(
record: Record,
autoPlay: Boolean = true,
)
suspend fun play()