fix: Handle compatibility issue with J2K backup file

This commit is contained in:
Ahmad Ansori Palembani 2024-08-05 20:58:24 +07:00
parent 32f1d677f2
commit 8dc0938581
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
6 changed files with 59 additions and 22 deletions

View file

@ -8,4 +8,4 @@
## Other ?? Technical stuff, what happened behind the scene
-->
## Fixes
- Fixed "Open source repo" icon's colour
- Fixed incompatibility with J2K backup file

View file

@ -47,7 +47,7 @@ android {
targetSdk = AndroidConfig.targetSdk
applicationId = "eu.kanade.tachiyomi"
versionCode = 139
versionName = "1.8.4.3"
versionName = "1.8.4.4"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled = true

View file

@ -15,6 +15,16 @@ class BasePreferences(private val preferenceStore: PreferenceStore) {
SHIZUKU(R.string.ext_installer_shizuku, false),
PRIVATE(R.string.ext_installer_private, false),
LEGACY(R.string.ext_installer_legacy, true), // Technically useless, but just in case it being missing crashes the app
;
companion object {
fun migrate(oldValue: Int) =
when (oldValue) {
1 -> BasePreferences.ExtensionInstaller.SHIZUKU
2 -> BasePreferences.ExtensionInstaller.PRIVATE
else -> BasePreferences.ExtensionInstaller.PACKAGEINSTALLER
}
}
}
fun displayProfile() = preferenceStore.getString("pref_display_profile_key", "")

View file

@ -5,6 +5,7 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
class ReaderPreferences(private val preferenceStore: PreferenceStore) {
fun cutoutShort() = preferenceStore.getBoolean("cutout_short", true)
@ -17,10 +18,29 @@ class ReaderPreferences(private val preferenceStore: PreferenceStore) {
HIDE(R.string.pad_cutout_areas), // Similar to CUTOUT_MODE_NEVER / J2K's pad
SHOW(R.string.start_past_cutout), // Similar to CUTOUT_MODE_SHORT_EDGES / J2K's start past
IGNORE(R.string.cutout_ignore), // Similar to CUTOUT_MODE_DEFAULT / J2K's ignore
;
companion object {
fun migrate(oldValue: Int) =
when (oldValue) {
PagerConfig.CUTOUT_PAD -> CutoutBehaviour.HIDE
PagerConfig.CUTOUT_IGNORE -> CutoutBehaviour.IGNORE
else -> CutoutBehaviour.SHOW
}
}
}
enum class LandscapeCutoutBehaviour(@StringRes val titleResId: Int) {
HIDE(R.string.pad_cutout_areas), // Similar to CUTOUT_MODE_NEVER / J2K's pad
DEFAULT(R.string.cutout_ignore), // Similar to CUTOUT_MODE_SHORT_EDGES / J2K's ignore
;
companion object {
fun migrate(oldValue: Int) =
when (oldValue) {
0 -> LandscapeCutoutBehaviour.HIDE
else -> LandscapeCutoutBehaviour.DEFAULT
}
}
}
}

View file

@ -274,13 +274,7 @@ object Migrations {
val basePreferences: BasePreferences = Injekt.get()
try {
val oldExtensionInstall = prefs.getInt("extension_installer", 0)
basePreferences.extensionInstaller().set(
when (oldExtensionInstall) {
1 -> BasePreferences.ExtensionInstaller.SHIZUKU
2 -> BasePreferences.ExtensionInstaller.PRIVATE
else -> BasePreferences.ExtensionInstaller.PACKAGEINSTALLER
}
)
basePreferences.extensionInstaller().set(BasePreferences.ExtensionInstaller.migrate(oldExtensionInstall))
} catch (_: Exception) {
basePreferences.extensionInstaller().set(BasePreferences.ExtensionInstaller.PACKAGEINSTALLER)
}
@ -289,25 +283,14 @@ object Migrations {
val readerPreferences: ReaderPreferences = Injekt.get()
try {
val oldCutoutBehaviour = prefs.getInt(PreferenceKeys.pagerCutoutBehavior, 0)
readerPreferences.pagerCutoutBehavior().set(
when (oldCutoutBehaviour) {
PagerConfig.CUTOUT_PAD -> CutoutBehaviour.HIDE
PagerConfig.CUTOUT_IGNORE -> CutoutBehaviour.IGNORE
else -> CutoutBehaviour.SHOW
}
)
readerPreferences.pagerCutoutBehavior().set(CutoutBehaviour.migrate(oldCutoutBehaviour))
} catch (_: Exception) {
readerPreferences.pagerCutoutBehavior().set(CutoutBehaviour.SHOW)
}
try {
val oldCutoutBehaviour = prefs.getInt("landscape_cutout_behavior", 0)
readerPreferences.landscapeCutoutBehavior().set(
when (oldCutoutBehaviour) {
0 -> LandscapeCutoutBehaviour.HIDE
else -> LandscapeCutoutBehaviour.DEFAULT
}
)
readerPreferences.landscapeCutoutBehavior().set(LandscapeCutoutBehaviour.migrate(oldCutoutBehaviour))
} catch (_: Exception) {
readerPreferences.landscapeCutoutBehavior().set(LandscapeCutoutBehaviour.DEFAULT)
}

View file

@ -1,8 +1,11 @@
package eu.kanade.tachiyomi.data.backup.restore.restorers
import android.content.Context
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.ui.settings.ReaderPreferences
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob
import eu.kanade.tachiyomi.data.backup.models.BackupPreference
import eu.kanade.tachiyomi.data.backup.models.BackupSourcePreferences
@ -13,6 +16,7 @@ import eu.kanade.tachiyomi.data.backup.models.LongPreferenceValue
import eu.kanade.tachiyomi.data.backup.models.StringPreferenceValue
import eu.kanade.tachiyomi.data.backup.models.StringSetPreferenceValue
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.source.sourcePreferences
import eu.kanade.tachiyomi.ui.library.LibrarySort
@ -56,6 +60,26 @@ class PreferenceBackupRestorer(
}
// end j2k fork differences
// << Yokai-J2K compat
if (key == "extension_installer" && value is IntPreferenceValue) {
val enum = BasePreferences.ExtensionInstaller.migrate(value.value)
preferenceStore.getEnum(key, enum).set(enum)
return@forEach
}
if (key == PreferenceKeys.pagerCutoutBehavior && value is IntPreferenceValue) {
val enum = ReaderPreferences.CutoutBehaviour.migrate(value.value)
preferenceStore.getEnum(key, enum).set(enum)
return@forEach
}
if (key == "landscape_cutout_behavior" && value is IntPreferenceValue) {
val enum = ReaderPreferences.LandscapeCutoutBehaviour.migrate(value.value)
preferenceStore.getEnum(key, enum).set(enum)
return@forEach
}
// >> Yokai-J2K compat
when (value) {
is IntPreferenceValue -> {
if (prefs[key] is Int?) {