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 minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk targetSdk = AndroidConfig.targetSdk
applicationId = "eu.kanade.tachiyomi" applicationId = "eu.kanade.tachiyomi"
versionCode = 118 versionCode = 119
versionName = "1.7.11" versionName = "1.7.11"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled = true multiDexEnabled = true

View file

@ -1,8 +1,18 @@
package dev.yokai.domain.base 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.PreferenceStore
import eu.kanade.tachiyomi.core.preference.getEnum
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
class BasePreferences(private val preferenceStore: PreferenceStore) { 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.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.download.DownloadProvider import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob 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.AppDownloadInstallJob
import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob 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.network.PREF_DOH_CLOUDFLARE
import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.ui.library.LibraryPresenter
import eu.kanade.tachiyomi.ui.library.LibrarySort import eu.kanade.tachiyomi.ui.library.LibrarySort
@ -260,6 +262,21 @@ object Migrations {
remove("trusted_signatures") 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 return true
} }

View file

@ -7,7 +7,6 @@ import android.os.Parcelable
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.extension.TrustExtension import dev.yokai.domain.extension.TrustExtension
import eu.kanade.tachiyomi.data.preference.PreferencesHelper 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.api.ExtensionApi
import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.extension.model.InstallStep
@ -463,10 +462,10 @@ class ExtensionManager(
val prefs = Injekt.get<BasePreferences>().extensionInstaller().get() val prefs = Injekt.get<BasePreferences>().extensionInstaller().get()
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S || return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ||
( (
prefs == ExtensionInstaller.SHIZUKU && prefs == BasePreferences.ExtensionInstaller.SHIZUKU &&
(!checkIfShizukuIsRunning || ShizukuInstaller.isShizukuRunning()) (!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.WorkManager
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.notification.NotificationReceiver 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.data.updater.AppDownloadInstallJob
import eu.kanade.tachiyomi.extension.api.ExtensionApi import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.extension.model.Extension 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.extension.util.ExtensionLoader
import eu.kanade.tachiyomi.util.system.connectivityManager import eu.kanade.tachiyomi.util.system.connectivityManager
import eu.kanade.tachiyomi.util.system.localeContext 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.content.ContextCompat
import androidx.core.net.toUri import androidx.core.net.toUri
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionInstallerJob import eu.kanade.tachiyomi.extension.ExtensionInstallerJob
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.ShizukuInstaller 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 Build.VERSION.SDK_INT < Build.VERSION_CODES.S
val basePreferences: BasePreferences by injectLazy() val basePreferences: BasePreferences by injectLazy()
when (basePreferences.extensionInstaller().get()) { when (basePreferences.extensionInstaller().get()) {
SHIZUKU -> { BasePreferences.ExtensionInstaller.SHIZUKU -> {
pkgName ?: return pkgName ?: return
setInstalling(pkgName, uri.hashCode()) setInstalling(pkgName, uri.hashCode())
shizukuInstaller?.addToQueue(downloadId, pkgName, uri) shizukuInstaller?.addToQueue(downloadId, pkgName, uri)
} }
PRIVATE -> installPrivately(downloadId, pkgName, uri) BasePreferences.ExtensionInstaller.PRIVATE -> installPrivately(downloadId, pkgName, uri)
else -> { else -> {
val extensionManager = Injekt.get<ExtensionManager>() val extensionManager = Injekt.get<ExtensionManager>()
if (extensionManager.installedExtensionsFlow.value.find { it.pkgName == pkgName }?.isShared == false) { 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 EXTRA_DOWNLOAD_ID = "ExtensionInstaller.extra.DOWNLOAD_ID"
const val FILE_SCHEME = "file://" const val FILE_SCHEME = "file://"
const val PACKAGE_INSTALLER = 0 @Deprecated("Use BasePreferences.ExtensionInstaller instead")
const val SHIZUKU = 1 const val SHIZUKU = 1
@Deprecated("Use BasePreferences.ExtensionInstaller instead")
const val PRIVATE = 2 const val PRIVATE = 2
} }
} }

View file

@ -2,10 +2,10 @@ package eu.kanade.tachiyomi.ui.extension
import android.widget.TextView import android.widget.TextView
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener
import uy.kohesive.injekt.injectLazy 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.bottomsheet.BottomSheetBehavior
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R 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.Extension
import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.extension.model.InstallStep
import eu.kanade.tachiyomi.extension.model.InstalledExtensionsOrder 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.extension.details.ExtensionDetailsController
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.migration.BaseMigrationInterface import eu.kanade.tachiyomi.ui.migration.BaseMigrationInterface

View file

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

View file

@ -6,6 +6,8 @@ import android.os.Build
import android.provider.Settings import android.provider.Settings
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat 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 dev.yokai.presentation.extension.repo.ExtensionRepoController
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R 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.data.updater.AppDownloadInstallJob
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.migration.MigrationController 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.bottomsheet.BottomSheetBehavior
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import dev.yokai.domain.base.BasePreferences import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import dev.yokai.presentation.extension.repo.ExtensionRepoController import dev.yokai.presentation.extension.repo.ExtensionRepoController
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible 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.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.BrowseControllerBinding import eu.kanade.tachiyomi.databinding.BrowseControllerBinding
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source

View file

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