diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt index d3397fc4a8..c5877e4433 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.launchNow import kotlin.math.max import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import yokai.data.DatabaseHandler import yokai.domain.category.interactor.GetCategories import yokai.domain.chapter.interactor.GetChapter import yokai.domain.chapter.interactor.InsertChapter @@ -33,6 +34,7 @@ import yokai.domain.track.interactor.GetTrack class MangaBackupRestorer( private val db: DatabaseHelper = Injekt.get(), private val customMangaManager: CustomMangaManager = Injekt.get(), + private val handler: DatabaseHandler = Injekt.get(), private val getCategories: GetCategories = Injekt.get(), private val getChapter: GetChapter = Injekt.get(), private val insertChapter: InsertChapter = Injekt.get(), @@ -208,7 +210,7 @@ class MangaBackupRestorer( // List containing history to be updated val historyToBeUpdated = ArrayList(history.size) for ((url, lastRead, readDuration) in history) { - val dbHistory = getHistory.awaitByChapterUrl(url) + val dbHistory = handler.awaitOneOrNull { historyQueries.getByChapterUrl(url, History::mapper) } // Check if history already in database and update if (dbHistory != null) { dbHistory.apply { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index fa8433ff23..fedc294743 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -659,10 +659,9 @@ class ReaderViewModel( if (!preferences.incognitoMode().get()) { val readAt = Date().time val sessionReadDuration = chapterReadStartTime?.let { readAt - it } ?: 0 - val oldTimeRead = getHistory.awaitByChapterUrl(readerChapter.chapter.url)?.time_read ?: 0 val history = History.create(readerChapter.chapter).apply { last_read = readAt - time_read = sessionReadDuration + oldTimeRead + time_read = sessionReadDuration } upsertHistory.await(history) chapterReadStartTime = null diff --git a/app/src/main/java/yokai/data/history/HistoryRepositoryImpl.kt b/app/src/main/java/yokai/data/history/HistoryRepositoryImpl.kt index c05ec382be..261cac01fd 100644 --- a/app/src/main/java/yokai/data/history/HistoryRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/history/HistoryRepositoryImpl.kt @@ -24,9 +24,6 @@ class HistoryRepositoryImpl(private val handler: DatabaseHandler) : HistoryRepos } } - override suspend fun getByChapterUrl(chapterUrl: String): History? = - handler.awaitOneOrNull { historyQueries.getByChapterUrl(chapterUrl, History::mapper) } - override suspend fun getByMangaId(mangaId: Long): History? = handler.awaitOneOrNull { historyQueries.getByMangaId(mangaId, History::mapper) } diff --git a/app/src/main/java/yokai/domain/history/HistoryRepository.kt b/app/src/main/java/yokai/domain/history/HistoryRepository.kt index 5d01e79984..78847ee874 100644 --- a/app/src/main/java/yokai/domain/history/HistoryRepository.kt +++ b/app/src/main/java/yokai/domain/history/HistoryRepository.kt @@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory interface HistoryRepository { suspend fun upsert(chapterId: Long, lastRead: Long, timeRead: Long): Long? suspend fun bulkUpsert(histories: List) - suspend fun getByChapterUrl(chapterUrl: String): History? suspend fun getByMangaId(mangaId: Long): History? suspend fun getAllByMangaId(mangaId: Long): List diff --git a/app/src/main/java/yokai/domain/history/interactor/GetHistory.kt b/app/src/main/java/yokai/domain/history/interactor/GetHistory.kt index 74aec313ac..64dcfa86c1 100644 --- a/app/src/main/java/yokai/domain/history/interactor/GetHistory.kt +++ b/app/src/main/java/yokai/domain/history/interactor/GetHistory.kt @@ -5,7 +5,6 @@ import yokai.domain.history.HistoryRepository class GetHistory( private val historyRepository: HistoryRepository ) { - suspend fun awaitByChapterUrl(chapterUrl: String) = historyRepository.getByChapterUrl(chapterUrl) suspend fun awaitByMangaId(mangaId: Long) = historyRepository.getByMangaId(mangaId) suspend fun awaitAllByMangaId(mangaId: Long) = historyRepository.getAllByMangaId(mangaId) } diff --git a/data/src/commonMain/sqldelight/tachiyomi/data/history.sq b/data/src/commonMain/sqldelight/tachiyomi/data/history.sq index 34c7e04500..3d37157c8e 100644 --- a/data/src/commonMain/sqldelight/tachiyomi/data/history.sq +++ b/data/src/commonMain/sqldelight/tachiyomi/data/history.sq @@ -16,7 +16,7 @@ ON CONFLICT(history_chapter_id) DO UPDATE SET history_last_read = :historyLastRead, - history_time_read = :historyTimeRead + history_time_read = ifnull(history_time_read, 0) + :historyTimeRead WHERE history_chapter_id = history_chapter_id; selectLastInsertedRowId: