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
This commit is contained in:
arkon 2022-05-07 23:48:53 -04:00 committed by Jobobby04
parent 4aa5c6107c
commit f675fc78ef
5 changed files with 38 additions and 5 deletions

View File

@ -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()}\"")

View File

@ -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
}

View File

@ -433,6 +433,7 @@ class LibraryPresenter(
manga1IndexOfTag.compareTo(manga2IndexOfTag)
}
// SY <--
else -> throw IllegalStateException("Invalid SortModeSetting: $sortingMode")
}
}

View File

@ -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

View File

@ -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