Skip to content

Commit

Permalink
fix wrong next episode after switching season
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed Dec 29, 2023
1 parent ca21d1a commit 4056387
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.arkivanov.decompose.router.slot.*
import com.arkivanov.decompose.value.Value
import com.arkivanov.essenty.backhandler.BackCallback
import dev.datlag.burningseries.database.BurningSeries
import dev.datlag.burningseries.database.common.convertedNumber
import dev.datlag.burningseries.model.BSUtil
import dev.datlag.burningseries.model.Series
import dev.datlag.burningseries.model.common.collectSafe
Expand Down Expand Up @@ -116,12 +117,20 @@ class SeriesScreenComponent(
if (seriesEpisodes == null) {
null
} else {
val maxWatchedEpisode = savedEpisodes.maxByOrNull {
val availableEpisodes = savedEpisodes.filter {
seriesEpisodes.any { s ->
s.href.equals(it.href, true)
}
}

val maxWatchedEpisode = availableEpisodes.mapNotNull {
if (it.progress > 0L || it.progress == Long.MIN_VALUE) {
it.number.toIntOrNull() ?: -1
it
} else {
-1
null
}
}.maxByOrNull {
it.convertedNumber ?: -1
}

if (maxWatchedEpisode == null) {
Expand All @@ -141,17 +150,17 @@ class SeriesScreenComponent(
}

val wantedNumber = if (isFinished) {
maxWatchedEpisode.number.toIntOrNull()?.plus(1)?.toString()
maxWatchedEpisode.convertedNumber?.plus(1)?.toString()
} else {
maxWatchedEpisode.number
maxWatchedEpisode.convertedNumber?.toString() ?: maxWatchedEpisode.number
}

if (!wantedNumber.isNullOrBlank()) {
seriesEpisodes.firstOrNull {
it.number.equals(wantedNumber, true)
} ?: seriesEpisodes.firstOrNull {
val compareNumber = wantedNumber.toIntOrNull() ?: return@firstOrNull false
it.number.toIntOrNull() == compareNumber
it.convertedNumber == compareNumber
}
} else {
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import dev.datlag.burningseries.database.Series
import dev.datlag.burningseries.model.BSUtil
import dev.datlag.burningseries.model.Genre
import dev.datlag.burningseries.model.algorithm.JaroWinkler
import dev.datlag.burningseries.model.common.getDigitsOrNull
import dev.datlag.burningseries.model.Series as ModelSeries
import dev.datlag.burningseries.model.Series.Episode as ModelEpisode
import dev.datlag.burningseries.model.Series.Episode.Hoster as ModelHoster
Expand Down Expand Up @@ -95,4 +96,7 @@ val Series.bestTitle
}

private val allTitlesCache = mutableMapOf<Series, List<String>>()
private val bestTitleCache = mutableMapOf<Series, String>()
private val bestTitleCache = mutableMapOf<Series, String>()

val Episode.convertedNumber: Int?
get() = this.number.toIntOrNull() ?: this.number.getDigitsOrNull()?.toIntOrNull()
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ data class Series(
val episodeNumber: String = BSUtil.episodeNumberRegex.find(title)?.groupValues?.lastOrNull() ?: number
val episodeTitle: String = BSUtil.episodeNumberRegex.replaceFirst(title, String()).trim().ifBlank { title }

val convertedNumber: Int? = number.toIntOrNull() ?: number.getDigitsOrNull()?.toIntOrNull()

@Serializable
data class Hoster(
@SerialName("title") val title: String,
Expand Down

0 comments on commit 4056387

Please sign in to comment.