new: integrate a dispatcher provider and dispatch work

This commit is contained in:
2026-06-22 14:58:18 +02:00
parent 38d6107423
commit 8926b3237b
16 changed files with 151 additions and 9 deletions
@@ -1,20 +1,25 @@
package fr.ajaury.gwenedeg.subtitle.data
import fr.ajaury.gwenedeg.core.coroutines.domain.DispatcherProvider
import fr.ajaury.gwenedeg.core.logging.domain.Logger
import fr.ajaury.gwenedeg.subtitle.domain.Subtitle
import fr.ajaury.gwenedeg.subtitle.domain.SubtitleRepository
import fr.ajaury.gwenedeg.subtitle.model.CantGetSubtitleException
import kotlinx.coroutines.withContext
internal class LrcSubtitleRepository(
private val parser: LrcParser,
private val dispatcherProvider: DispatcherProvider,
private val logger: Logger,
) : SubtitleRepository {
override suspend fun getSubtitle(content: String): Subtitle =
try {
parser.parse(content = content)
} catch (exception: Exception) {
val message = "Failed to load subtitle: $content"
logger.error(message = message, throwable = exception)
throw CantGetSubtitleException(message)
withContext(dispatcherProvider.default) {
try {
parser.parse(content = content)
} catch (exception: Exception) {
val message = "Failed to load subtitle: $content"
logger.error(message = message, throwable = exception)
throw CantGetSubtitleException(message)
}
}
}