Recover history if chapterId id changed
This commit is contained in:
@@ -115,7 +115,7 @@ class HistoryRepository @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getOne(manga: Manga): MangaHistory? {
|
suspend fun getOne(manga: Manga): MangaHistory? {
|
||||||
return db.historyDao.find(manga.id)?.toMangaHistory()
|
return db.historyDao.find(manga.id)?.recoverIfNeeded(manga)?.toMangaHistory()
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getProgress(mangaId: Long): Float {
|
suspend fun getProgress(mangaId: Long): Float {
|
||||||
@@ -178,4 +178,17 @@ class HistoryRepository @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun HistoryEntity.recoverIfNeeded(manga: Manga): HistoryEntity {
|
||||||
|
val chapters = manga.chapters
|
||||||
|
if (chapters.isNullOrEmpty() || chapters.any { it.id == chapterId }) {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
val newChapterId = chapters.getOrNull(
|
||||||
|
(chapters.size * percent).toInt(),
|
||||||
|
)?.id ?: return this
|
||||||
|
val newEntity = copy(chapterId = newChapterId)
|
||||||
|
db.historyDao.update(newEntity)
|
||||||
|
return newEntity
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user