refactor: Turn ExtensionInstaller types from Int to Enum

This commit is contained in:
ziro 2024-02-03 14:42:02 +07:00
parent 4f1cdb2518
commit 81499289d3
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
12 changed files with 50 additions and 27 deletions

View file

@ -35,7 +35,7 @@ android {
minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk
applicationId = "eu.kanade.tachiyomi"
versionCode = 118
versionCode = 119
versionName = "1.7.11"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled = true

View file

@ -1,8 +1,18 @@
package dev.yokai.domain.base
import androidx.annotation.StringRes
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
class BasePreferences(private val preferenceStore: PreferenceStore) {
fun extensionInstaller() = preferenceStore.getInt("extension_installer", ExtensionInstaller.PACKAGE_INSTALLER)
fun extensionInstaller() = preferenceStore.getEnum("extension_installer", ExtensionInstaller.PACKAGEINSTALLER)
enum class ExtensionInstaller(@StringRes val titleResId: Int, val requiresSystemPermission: Boolean) {
// LEGACY(R.string.ext_installer_legacy, true),
PACKAGEINSTALLER(R.string.ext_installer_packageinstaller, true),
SHIZUKU(R.string.ext_installer_shizuku, false),
PRIVATE(R.string.ext_installer_private, false),
}
}

View file

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
@ -15,6 +16,7 @@ import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
import eu.kanade.tachiyomi.ui.library.LibrarySort
@ -260,6 +262,21 @@ object Migrations {
remove("trusted_signatures")
}
}
if (oldVersion < 119) {
val basePreferences: BasePreferences = Injekt.get()
try {
val oldExtensionInstall = prefs.getInt("extension_installer", 0)
basePreferences.extensionInstaller().set(
when (oldExtensionInstall) {
ExtensionInstaller.SHIZUKU -> BasePreferences.ExtensionInstaller.SHIZUKU
ExtensionInstaller.PRIVATE -> BasePreferences.ExtensionInstaller.PRIVATE
else -> BasePreferences.ExtensionInstaller.PACKAGEINSTALLER
}
)
} catch (_: Exception) {
basePreferences.extensionInstaller().set(BasePreferences.ExtensionInstaller.PACKAGEINSTALLER)
}
}
return true
}

View file

@ -7,7 +7,6 @@ import android.os.Parcelable
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.extension.TrustExtension
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.plusAssign
import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep
@ -463,10 +462,10 @@ class ExtensionManager(
val prefs = Injekt.get<BasePreferences>().extensionInstaller().get()
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ||
(
prefs == ExtensionInstaller.SHIZUKU &&
prefs == BasePreferences.ExtensionInstaller.SHIZUKU &&
(!checkIfShizukuIsRunning || ShizukuInstaller.isShizukuRunning())
) ||
prefs == ExtensionInstaller.PRIVATE
prefs == BasePreferences.ExtensionInstaller.PRIVATE
}
}
}

View file

@ -19,6 +19,7 @@ import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
@ -27,7 +28,6 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
import eu.kanade.tachiyomi.util.system.connectivityManager
import eu.kanade.tachiyomi.util.system.localeContext

View file

@ -12,7 +12,6 @@ import android.os.Environment
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionInstallerJob
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.ShizukuInstaller
@ -267,12 +266,12 @@ internal class ExtensionInstaller(private val context: Context) {
Build.VERSION.SDK_INT < Build.VERSION_CODES.S
val basePreferences: BasePreferences by injectLazy()
when (basePreferences.extensionInstaller().get()) {
SHIZUKU -> {
BasePreferences.ExtensionInstaller.SHIZUKU -> {
pkgName ?: return
setInstalling(pkgName, uri.hashCode())
shizukuInstaller?.addToQueue(downloadId, pkgName, uri)
}
PRIVATE -> installPrivately(downloadId, pkgName, uri)
BasePreferences.ExtensionInstaller.PRIVATE -> installPrivately(downloadId, pkgName, uri)
else -> {
val extensionManager = Injekt.get<ExtensionManager>()
if (extensionManager.installedExtensionsFlow.value.find { it.pkgName == pkgName }?.isShared == false) {
@ -478,8 +477,9 @@ internal class ExtensionInstaller(private val context: Context) {
const val EXTRA_DOWNLOAD_ID = "ExtensionInstaller.extra.DOWNLOAD_ID"
const val FILE_SCHEME = "file://"
const val PACKAGE_INSTALLER = 0
@Deprecated("Use BasePreferences.ExtensionInstaller instead")
const val SHIZUKU = 1
@Deprecated("Use BasePreferences.ExtensionInstaller instead")
const val PRIVATE = 2
}
}

View file

@ -2,10 +2,10 @@ package eu.kanade.tachiyomi.ui.extension
import android.widget.TextView
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener
import uy.kohesive.injekt.injectLazy

View file

@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.tabs.TabLayout
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
@ -22,7 +23,6 @@ import eu.kanade.tachiyomi.databinding.RecyclerWithScrollerBinding
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep
import eu.kanade.tachiyomi.extension.model.InstalledExtensionsOrder
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.ui.extension.details.ExtensionDetailsController
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.migration.BaseMigrationInterface

View file

@ -16,6 +16,8 @@ import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceScreen
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import dev.yokai.domain.extension.TrustExtension
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
@ -29,7 +31,6 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateJob.Target
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.changesIn
import eu.kanade.tachiyomi.extension.ShizukuInstaller
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.PREF_DOH_360
import eu.kanade.tachiyomi.network.PREF_DOH_ADGUARD
@ -332,19 +333,13 @@ class SettingsAdvancedController : SettingsController() {
preferenceCategory {
titleRes = R.string.extensions
intListPreference(activity) {
listPreference(activity) {
bindTo(basePreferences.extensionInstaller())
titleRes = R.string.ext_installer_pref
entriesRes = arrayOf(
R.string.default_value,
R.string.ext_installer_shizuku,
R.string.ext_installer_private,
)
entryValues = listOf(
ExtensionInstaller.PACKAGE_INSTALLER,
ExtensionInstaller.SHIZUKU,
ExtensionInstaller.PRIVATE,
)
val values = ExtensionInstaller.entries.toList()
entriesRes = values.map { it.titleResId }.toTypedArray()
entryValues = values.map { it.name }.toTypedArray().toList()
onChange {
it as Int
@ -369,7 +364,7 @@ class SettingsAdvancedController : SettingsController() {
infoPreference(R.string.ext_installer_summary).apply {
basePreferences.extensionInstaller().changesIn(viewScope) {
isVisible =
it != ExtensionInstaller.PACKAGE_INSTALLER && Build.VERSION.SDK_INT < Build.VERSION_CODES.S
it != ExtensionInstaller.PACKAGEINSTALLER && Build.VERSION.SDK_INT < Build.VERSION_CODES.S
}
}
preference {

View file

@ -6,6 +6,8 @@ import android.os.Build
import android.provider.Settings
import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import dev.yokai.presentation.extension.repo.ExtensionRepoController
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
@ -15,7 +17,6 @@ import eu.kanade.tachiyomi.data.preference.changesIn
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.migration.MigrationController

View file

@ -24,6 +24,7 @@ import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.snackbar.Snackbar
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import dev.yokai.presentation.extension.repo.ExtensionRepoController
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
@ -31,7 +32,6 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.BrowseControllerBinding
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.Source

View file

@ -1205,4 +1205,5 @@
<string name="sfw">SFW</string>
<string name="nsfw">NSFW</string>
<string name="content_type">Content Type</string>
<string name="ext_installer_packageinstaller">Default</string>
</resources>