mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Turn ExtensionInstaller types from Int to Enum
This commit is contained in:
parent
4f1cdb2518
commit
81499289d3
12 changed files with 50 additions and 27 deletions
|
@ -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
|
||||||
|
|
|
@ -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),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue