Skip to content

Commit

Permalink
Don't use reflection for handling backup options as boolean array
Browse files Browse the repository at this point in the history
Wasn't working correctly in release build, _probably_ because of R8 despite kotlin-reflect
shipping with Proguard rules and us already keeping all Tachiyomi classes.

(cherry picked from commit 6ab8e1e)
  • Loading branch information
arkon authored and jobobby04 committed Dec 31, 2023
1 parent 0432f41 commit f27b8b2
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 97 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import eu.kanade.tachiyomi.data.backup.restore.BackupRestoreJob
import eu.kanade.tachiyomi.data.backup.restore.RestoreOptions
import eu.kanade.tachiyomi.util.system.DeviceUtil
import kotlinx.coroutines.flow.update
import tachiyomi.core.util.lang.anyEnabled
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.LabeledCheckbox
import tachiyomi.presentation.core.components.LazyColumnWithAction
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ import eu.kanade.tachiyomi.util.system.isRunning
import eu.kanade.tachiyomi.util.system.setForegroundSafely
import eu.kanade.tachiyomi.util.system.workManager
import logcat.LogPriority
import tachiyomi.core.util.lang.asBooleanArray
import tachiyomi.core.util.lang.asDataClass
import tachiyomi.core.util.system.logcat
import tachiyomi.domain.backup.service.BackupPreferences
import tachiyomi.domain.storage.service.StorageManager
Expand All @@ -49,7 +47,7 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete

setForegroundSafely()

val options: BackupOptions = inputData.getBooleanArray(OPTIONS_KEY)?.asDataClass()
val options = inputData.getBooleanArray(OPTIONS_KEY)?.let { BackupOptions.fromBooleanArray(it) }
?: BackupOptions()

return try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,21 @@ data class BackupOptions(
// SY <--
) {

fun asBooleanArray() = booleanArrayOf(
libraryEntries,
categories,
chapters,
tracking,
history,
appSettings,
sourceSettings,
privateSettings,
// SY -->
customInfo,
readEntries,
// SY <--
)

companion object {
val libraryOptions = persistentListOf(
Entry(
Expand Down Expand Up @@ -85,6 +100,21 @@ data class BackupOptions(
enabled = { it.appSettings || it.sourceSettings },
),
)

fun fromBooleanArray(array: BooleanArray) = BackupOptions(
libraryEntries = array[0],
categories = array[1],
chapters = array[2],
tracking = array[3],
history = array[4],
appSettings = array[5],
sourceSettings = array[6],
privateSettings = array[7],
// SY -->
customInfo = array[8],
readEntries = array[9],
// SY <--
)
}

data class Entry(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ import eu.kanade.tachiyomi.util.system.workManager
import kotlinx.coroutines.CancellationException
import logcat.LogPriority
import tachiyomi.core.i18n.stringResource
import tachiyomi.core.util.lang.asBooleanArray
import tachiyomi.core.util.lang.asDataClass
import tachiyomi.core.util.system.logcat
import tachiyomi.i18n.MR

Expand All @@ -32,7 +30,7 @@ class BackupRestoreJob(private val context: Context, workerParams: WorkerParamet

override suspend fun doWork(): Result {
val uri = inputData.getString(LOCATION_URI_KEY)?.toUri()
val options: RestoreOptions? = inputData.getBooleanArray(OPTIONS_KEY)?.asDataClass()
val options = inputData.getBooleanArray(OPTIONS_KEY)?.let { RestoreOptions.fromBooleanArray(it) }

if (uri == null || options == null) {
return Result.failure()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ data class RestoreOptions(
// SY <--
) {

fun asBooleanArray() = booleanArrayOf(
library,
appSettings,
sourceSettings,
// SY -->
savedSearches
// SY <--
)

fun anyEnabled() = library || appSettings || sourceSettings /* SY --> */ || savedSearches /* SY <-- */

companion object {
val options = persistentListOf(
Entry(
Expand All @@ -39,6 +50,15 @@ data class RestoreOptions(
),
// SY <--
)

fun fromBooleanArray(array: BooleanArray) = RestoreOptions(
library = array[0],
appSettings = array[1],
sourceSettings = array[2],
// SY -->
savedSearches = array[3]
// SY <--
)
}

data class Entry(
Expand Down
1 change: 0 additions & 1 deletion core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ dependencies {

implementation(libs.unifile)

implementation(kotlinx.reflect)
api(kotlinx.coroutines.core)
api(kotlinx.serialization.json)
api(kotlinx.serialization.json.okio)
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit f27b8b2

Please sign in to comment.