refactor: prefer using Duration than milliseconds
This commit is contained in:
+2
-2
@@ -56,8 +56,8 @@ internal class PlaybackRepositoryImpl(
|
||||
|
||||
private val playbackTiming = currentPosition.map { currentPosition ->
|
||||
PlaybackTiming(
|
||||
positionMs = currentPosition.inWholeMilliseconds,
|
||||
durationMs = duration.inWholeMilliseconds,
|
||||
position = currentPosition,
|
||||
duration = duration,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -1,9 +1,9 @@
|
||||
package fr.ajaury.gwenedeg.player.model
|
||||
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
data class PlaybackTiming(
|
||||
val positionMs: Long = 0L,
|
||||
val durationMs: Long = 0L,
|
||||
) {
|
||||
val progress: Float
|
||||
get() = if (durationMs > 0) (positionMs.toFloat() / durationMs).coerceIn(0f, 1f) else 0f
|
||||
}
|
||||
val position: Duration = 0.milliseconds,
|
||||
val duration: Duration = 0.milliseconds,
|
||||
)
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package fr.ajaury.gwenedeg.subtitle.data
|
||||
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
/**
|
||||
* Parses [LRC](https://en.wikipedia.org/wiki/LRC_(file_format)) subtitle content.
|
||||
@@ -26,15 +29,15 @@ internal class LrcParser {
|
||||
.findAll(tags.value)
|
||||
.mapNotNull { match ->
|
||||
TimeCodedText(
|
||||
startTime = match.toMs().milliseconds,
|
||||
startTime = match.asDuration(),
|
||||
text = text,
|
||||
).takeIf { text.isNotBlank() }
|
||||
}.toList()
|
||||
}
|
||||
|
||||
private fun MatchResult.toMs(): Long {
|
||||
private fun MatchResult.asDuration(): Duration {
|
||||
val (minutes, seconds, fraction) = destructured
|
||||
val fractionMs = if (fraction.length == 2) fraction.toLong() * 10 else fraction.toLong()
|
||||
return minutes.toLong() * 60_000 + seconds.toLong() * 1_000 + fractionMs
|
||||
return minutes.toInt().minutes + seconds.toInt().seconds + fractionMs.toInt().milliseconds
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user