From f675fc78efd39f83b7bddc5799636d8ef089b592 Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 7 May 2022 23:48:53 -0400 Subject: [PATCH] Fix crash when using renamed library sort methods (fixes #7092) (cherry picked from commit 681e9396b3f9baf9c6f0e66f596830c662dbadb9) # Conflicts: # app/build.gradle.kts # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt --- app/build.gradle.kts | 2 +- .../main/java/eu/kanade/tachiyomi/Migrations.kt | 17 ++++++++++++++--- .../tachiyomi/ui/library/LibraryPresenter.kt | 1 + .../ui/library/setting/SortModeSetting.kt | 12 +++++++++++- app/src/main/java/exh/EXHMigrations.kt | 11 +++++++++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1ea9952f1..e80153fc8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,7 +26,7 @@ android { applicationId = "eu.kanade.tachiyomi.sy" minSdk = AndroidConfig.minSdk targetSdk = AndroidConfig.targetSdk - versionCode = 34 + versionCode = 35 versionName = "1.8.3" buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index c0eb74d70..8c3da001f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -206,11 +206,11 @@ object Migrations { val newSortingMode = when (oldSortingMode) { LibrarySort.ALPHA -> SortModeSetting.ALPHABETICAL LibrarySort.LAST_READ -> SortModeSetting.LAST_READ - LibrarySort.LAST_CHECKED -> SortModeSetting.LAST_MANGA_UPDATE - LibrarySort.UNREAD -> SortModeSetting.UNREAD_COUNT + LibrarySort.LAST_CHECKED -> SortModeSetting.LAST_CHECKED + LibrarySort.UNREAD -> SortModeSetting.UNREAD LibrarySort.TOTAL -> SortModeSetting.TOTAL_CHAPTERS LibrarySort.LATEST_CHAPTER -> SortModeSetting.LATEST_CHAPTER - LibrarySort.CHAPTER_FETCH_DATE -> SortModeSetting.CHAPTER_FETCH_DATE + LibrarySort.CHAPTER_FETCH_DATE -> SortModeSetting.DATE_FETCHED LibrarySort.DATE_ADDED -> SortModeSetting.DATE_ADDED else -> SortModeSetting.ALPHABETICAL } @@ -268,6 +268,17 @@ object Migrations { preferences.navigationModeWebtoon().set(5) } } + if (oldVersion < 81) { + // Handle renamed enum values + @Suppress("DEPRECATION") + val newSortingMode = when (val oldSortingMode = preferences.librarySortingMode().get()) { + SortModeSetting.LAST_CHECKED -> SortModeSetting.LAST_MANGA_UPDATE + SortModeSetting.UNREAD -> SortModeSetting.UNREAD_COUNT + SortModeSetting.DATE_FETCHED -> SortModeSetting.CHAPTER_FETCH_DATE + else -> oldSortingMode + } + preferences.librarySortingMode().set(newSortingMode) + } return true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 0626ab00a..c44bb3820 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -433,6 +433,7 @@ class LibraryPresenter( manga1IndexOfTag.compareTo(manga2IndexOfTag) } // SY <-- + else -> throw IllegalStateException("Invalid SortModeSetting: $sortingMode") } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt index 2730df2f8..137577783 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt @@ -13,7 +13,17 @@ enum class SortModeSetting(val flag: Int) { CHAPTER_FETCH_DATE(0b00011000), DATE_ADDED(0b00011100), DRAG_AND_DROP(0b00100000), - TAG_LIST(0b00100100); + TAG_LIST(0b00100100), + + @Deprecated("Use LAST_MANGA_UPDATE") + LAST_CHECKED(0b00001000), + + @Deprecated("Use UNREAD_COUNT") + UNREAD(0b00001100), + + @Deprecated("Use CHAPTER_FETCH_DATE") + DATE_FETCHED(0b00011000), + ; companion object { // Mask supports for more sorting flags if necessary diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 884b2efe2..7083204fa 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -444,6 +444,17 @@ object EXHMigrations { preferences.navigationModeWebtoon().set(5) } } + if (oldVersion under 35) { + // Handle renamed enum values + @Suppress("DEPRECATION") + val newSortingMode = when (val oldSortingMode = preferences.librarySortingMode().get()) { + SortModeSetting.LAST_CHECKED -> SortModeSetting.LAST_MANGA_UPDATE + SortModeSetting.UNREAD -> SortModeSetting.UNREAD_COUNT + SortModeSetting.DATE_FETCHED -> SortModeSetting.CHAPTER_FETCH_DATE + else -> oldSortingMode + } + preferences.librarySortingMode().set(newSortingMode) + } // if (oldVersion under 1) { } (1 is current release version) // do stuff here when releasing changed crap