Kaynağa Gözat

Don't update last page read/read state of chapter if Incognito Mode is enabled

Actually closes #7228, which I forgot was about history more than trackers.
arkon 1 yıl önce
ebeveyn
işleme
e323f3c25a

+ 28 - 31
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -435,12 +435,13 @@ class ReaderViewModel(
                 currentPage = page.index + 1,
             )
         }
-        selectedChapter.chapter.last_page_read = page.index
-        val shouldTrack = !incognitoMode || hasTrackers
-        if (selectedChapter.pages?.lastIndex == page.index && shouldTrack) {
-            selectedChapter.chapter.read = true
-            updateTrackChapterRead(selectedChapter)
-            deleteChapterIfNeeded(selectedChapter)
+        if (!incognitoMode) {
+            selectedChapter.chapter.last_page_read = page.index
+            if (selectedChapter.pages?.lastIndex == page.index) {
+                selectedChapter.chapter.read = true
+                updateTrackChapterRead(selectedChapter)
+                deleteChapterIfNeeded(selectedChapter)
+            }
         }
 
         if (selectedChapter != currentChapters.currChapter) {
@@ -505,16 +506,17 @@ class ReaderViewModel(
      * @param currentChapter current chapter, which is going to be marked as read.
      */
     private fun deleteChapterIfNeeded(currentChapter: ReaderChapter) {
+        val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots().get()
+        if (removeAfterReadSlots == -1) return
+
         // Determine which chapter should be deleted and enqueue
         val currentChapterPosition = chapterList.indexOf(currentChapter)
-        val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots().get()
         val chapterToDelete = chapterList.getOrNull(currentChapterPosition - removeAfterReadSlots)
 
-        // If chapter is completely read no need to download it
+        // If chapter is completely read, no need to download it
         chapterToDownload = null
 
-        // Check if deleting option is enabled and chapter exists
-        if (removeAfterReadSlots != -1 && chapterToDelete != null) {
+        if (chapterToDelete != null) {
             enqueueDeleteReadChapters(chapterToDelete)
         }
     }
@@ -534,22 +536,22 @@ class ReaderViewModel(
     }
 
     /**
-     * Saves this [readerChapter] progress (last read page and whether it's read).
-     * If incognito mode isn't on or has at least 1 tracker
+     * Saves this [readerChapter] progress (last read page and whether it's read)
+     * if incognito mode isn't on.
      */
     private suspend fun saveChapterProgress(readerChapter: ReaderChapter) {
-        if (!incognitoMode || hasTrackers) {
-            val chapter = readerChapter.chapter
-            getCurrentChapter()?.requestedPage = chapter.last_page_read
-            updateChapter.await(
-                ChapterUpdate(
-                    id = chapter.id!!,
-                    read = chapter.read,
-                    bookmark = chapter.bookmark,
-                    lastPageRead = chapter.last_page_read.toLong(),
-                ),
-            )
-        }
+        if (incognitoMode) return
+
+        val chapter = readerChapter.chapter
+        getCurrentChapter()?.requestedPage = chapter.last_page_read
+        updateChapter.await(
+            ChapterUpdate(
+                id = chapter.id!!,
+                read = chapter.read,
+                bookmark = chapter.bookmark,
+                lastPageRead = chapter.last_page_read.toLong(),
+            ),
+        )
     }
 
     /**
@@ -713,7 +715,7 @@ class ReaderViewModel(
         val chapter = page.chapter.chapter
         val filenameSuffix = " - ${page.number}"
         return DiskUtil.buildValidFilename(
-            "${manga.title} - ${chapter.name}".takeBytes(MAX_FILE_NAME_BYTES - filenameSuffix.byteSize()),
+            "${manga.title} - ${chapter.name}".takeBytes(DiskUtil.MAX_FILE_NAME_BYTES - filenameSuffix.byteSize()),
         ) + filenameSuffix
     }
 
@@ -831,7 +833,7 @@ class ReaderViewModel(
      * will run in a background thread and errors are ignored.
      */
     private fun updateTrackChapterRead(readerChapter: ReaderChapter) {
-        if (basePreferences.incognitoMode().get()) return
+        if (incognitoMode || !hasTrackers) return
         if (!trackPreferences.autoUpdateTrack().get()) return
 
         val manga = manga ?: return
@@ -918,9 +920,4 @@ class ReaderViewModel(
         data class SavedImage(val result: SaveImageResult) : Event()
         data class ShareImage(val uri: Uri, val page: ReaderPage) : Event()
     }
-
-    companion object {
-        // Safe theoretical max filename size is 255 bytes and 1 char = 2-4 bytes (UTF-8)
-        private const val MAX_FILE_NAME_BYTES = 250
-    }
 }

+ 3 - 0
core/src/main/java/eu/kanade/tachiyomi/util/storage/DiskUtil.kt

@@ -114,4 +114,7 @@ object DiskUtil {
     }
 
     const val NOMEDIA_FILE = ".nomedia"
+
+    // Safe theoretical max filename size is 255 bytes and 1 char = 2-4 bytes (UTF-8)
+    const val MAX_FILE_NAME_BYTES = 250
 }