|
@@ -1,13 +1,9 @@
|
|
package eu.kanade.data.history
|
|
package eu.kanade.data.history
|
|
|
|
|
|
import eu.kanade.data.DatabaseHandler
|
|
import eu.kanade.data.DatabaseHandler
|
|
-import eu.kanade.data.chapter.chapterMapper
|
|
|
|
-import eu.kanade.data.manga.mangaMapper
|
|
|
|
-import eu.kanade.domain.chapter.model.Chapter
|
|
|
|
import eu.kanade.domain.history.model.HistoryUpdate
|
|
import eu.kanade.domain.history.model.HistoryUpdate
|
|
import eu.kanade.domain.history.model.HistoryWithRelations
|
|
import eu.kanade.domain.history.model.HistoryWithRelations
|
|
import eu.kanade.domain.history.repository.HistoryRepository
|
|
import eu.kanade.domain.history.repository.HistoryRepository
|
|
-import eu.kanade.domain.manga.model.Manga
|
|
|
|
import eu.kanade.tachiyomi.util.system.logcat
|
|
import eu.kanade.tachiyomi.util.system.logcat
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.Flow
|
|
import logcat.LogPriority
|
|
import logcat.LogPriority
|
|
@@ -28,45 +24,6 @@ class HistoryRepositoryImpl(
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- override suspend fun getNextChapter(mangaId: Long, chapterId: Long): Chapter? {
|
|
|
|
- val chapter = handler.awaitOne { chaptersQueries.getChapterById(chapterId, chapterMapper) }
|
|
|
|
- val manga = handler.awaitOne { mangasQueries.getMangaById(mangaId, mangaMapper) }
|
|
|
|
-
|
|
|
|
- if (!chapter.read) {
|
|
|
|
- return chapter
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- val sortFunction: (Chapter, Chapter) -> Int = when (manga.sorting) {
|
|
|
|
- Manga.CHAPTER_SORTING_SOURCE -> { c1, c2 -> c2.sourceOrder.compareTo(c1.sourceOrder) }
|
|
|
|
- Manga.CHAPTER_SORTING_NUMBER -> { c1, c2 -> c1.chapterNumber.compareTo(c2.chapterNumber) }
|
|
|
|
- Manga.CHAPTER_SORTING_UPLOAD_DATE -> { c1, c2 -> c1.dateUpload.compareTo(c2.dateUpload) }
|
|
|
|
- else -> throw NotImplementedError("Unknown sorting method")
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- val chapters = handler.awaitList { chaptersQueries.getChaptersByMangaId(mangaId, chapterMapper) }
|
|
|
|
- .sortedWith(sortFunction)
|
|
|
|
-
|
|
|
|
- val currChapterIndex = chapters.indexOfFirst { chapter.id == it.id }
|
|
|
|
- return when (manga.sorting) {
|
|
|
|
- Manga.CHAPTER_SORTING_SOURCE -> chapters.getOrNull(currChapterIndex + 1)
|
|
|
|
- Manga.CHAPTER_SORTING_NUMBER -> {
|
|
|
|
- val chapterNumber = chapter.chapterNumber
|
|
|
|
-
|
|
|
|
- ((currChapterIndex + 1) until chapters.size)
|
|
|
|
- .map { chapters[it] }
|
|
|
|
- .firstOrNull {
|
|
|
|
- it.chapterNumber > chapterNumber &&
|
|
|
|
- it.chapterNumber <= chapterNumber + 1
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- Manga.CHAPTER_SORTING_UPLOAD_DATE -> {
|
|
|
|
- chapters.drop(currChapterIndex + 1)
|
|
|
|
- .firstOrNull { it.dateUpload >= chapter.dateUpload }
|
|
|
|
- }
|
|
|
|
- else -> throw NotImplementedError("Unknown sorting method")
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
override suspend fun resetHistory(historyId: Long) {
|
|
override suspend fun resetHistory(historyId: Long) {
|
|
try {
|
|
try {
|
|
handler.await { historyQueries.resetHistoryById(historyId) }
|
|
handler.await { historyQueries.resetHistoryById(historyId) }
|