From 2fd1e998f4ff6999718c04c6997fbd2a5d78860e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 18 Jul 2022 14:28:13 +0300 Subject: [PATCH] Fix unmark chapter as new --- .../org/koitharu/kotatsu/tracker/domain/TrackerTest.kt | 10 ++++++++-- .../org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt | 5 ++++- .../kotatsu/tracker/domain/TrackingRepository.kt | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt b/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt index 7d829332d..a1ea460f6 100644 --- a/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt +++ b/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt @@ -158,15 +158,21 @@ class TrackerTest : KoinTest { } assertEquals(3, repository.getNewChaptersCount(mangaFirst.id)) - val chapter = requireNotNull(mangaFull.chapters).run { get(lastIndex - 1) } + var chapter = requireNotNull(mangaFull.chapters).run { get(lastIndex - 1) } repository.syncWithHistory(mangaFull, chapter.id) assertEquals(1, repository.getNewChaptersCount(mangaFirst.id)) + + chapter = requireNotNull(mangaFull.chapters).run { get(lastIndex) } + repository.syncWithHistory(mangaFull, chapter.id) + + assertEquals(0, repository.getNewChaptersCount(mangaFirst.id)) + tracker.checkUpdates(mangaFull, commit = true).apply { assertTrue(isValid) assert(newChapters.isEmpty()) } - assertEquals(1, repository.getNewChaptersCount(mangaFirst.id)) + assertEquals(0, repository.getNewChaptersCount(mangaFirst.id)) } private suspend fun loadManga(name: String): Manga { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt b/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt index dd18378af..a201295c5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt @@ -22,6 +22,7 @@ import org.koitharu.kotatsu.core.db.TABLE_HISTORY import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.reader.ui.ReaderActivity +import org.koitharu.kotatsu.utils.ext.printStackTraceDebug import org.koitharu.kotatsu.utils.ext.processLifecycleScope import org.koitharu.kotatsu.utils.ext.requireBitmap @@ -56,12 +57,14 @@ class ShortcutsUpdater( return shortcutsUpdateJob?.join() != null } - private suspend fun updateShortcutsImpl() { + private suspend fun updateShortcutsImpl() = runCatching { val manager = context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager val shortcuts = historyRepository.getList(0, manager.maxShortcutCountPerActivity) .filter { x -> x.title.isNotEmpty() } .map { buildShortcutInfo(it).build().toShortcutInfo() } manager.dynamicShortcuts = shortcuts + }.onFailure { + it.printStackTraceDebug() } private suspend fun buildShortcutInfo(manga: Manga): ShortcutInfoCompat.Builder { diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt index bf31ad68f..7586a7f50 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt @@ -2,7 +2,6 @@ package org.koitharu.kotatsu.tracker.domain import androidx.annotation.VisibleForTesting import androidx.room.withTransaction -import java.util.* import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.core.db.MangaDatabase @@ -19,6 +18,7 @@ import org.koitharu.kotatsu.tracker.data.toTrackingLogItem import org.koitharu.kotatsu.tracker.domain.model.MangaTracking import org.koitharu.kotatsu.tracker.domain.model.MangaUpdates import org.koitharu.kotatsu.tracker.domain.model.TrackingLogItem +import java.util.* private const val NO_ID = 0L @@ -113,7 +113,7 @@ class TrackingRepository( newChapters = when { track.newChapters == 0 -> 0 chapterIndex < 0 -> track.newChapters - chapterIndex > lastNewChapterIndex -> chapters.lastIndex - chapterIndex + chapterIndex >= lastNewChapterIndex -> chapters.lastIndex - chapterIndex else -> track.newChapters }, lastCheck = System.currentTimeMillis(),