refactor: Separate BasePreferences from PreferencesHelper

This commit is contained in:
ziro 2024-01-29 14:34:41 +07:00
parent bda6de7b76
commit 19d1f0db6f
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
12 changed files with 41 additions and 19 deletions

View file

@ -0,0 +1,8 @@
package dev.yokai.domain.base
import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
class BasePreferences(private val preferenceStore: PreferenceStore) {
fun extensionInstaller() = preferenceStore.getInt("extension_installer", ExtensionInstaller.PACKAGE_INSTALLER)
}

View file

@ -452,8 +452,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto
// TODO: SourcePref
fun autoUpdateExtensions() = prefs.getInt(Keys.autoUpdateExtensions, AppDownloadInstallJob.ONLY_ON_UNMETERED)
fun extensionInstaller() = preferenceStore.getInt("extension_installer", ExtensionInstaller.PACKAGE_INSTALLER)
fun filterChapterByRead() = preferenceStore.getInt(Keys.defaultChapterFilterByRead, Manga.SHOW_ALL)
fun filterChapterByDownloaded() = preferenceStore.getInt(Keys.defaultChapterFilterByDownloaded, Manga.SHOW_ALL)

View file

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.di
import android.app.Application
import dev.yokai.domain.base.BasePreferences
import dev.yokai.domain.recents.RecentsPreferences
import dev.yokai.domain.source.SourcePreferences
import dev.yokai.domain.ui.UiPreferences
@ -17,6 +18,8 @@ class PreferenceModule(val application: Application) : InjektModule {
override fun InjektRegistrar.registerInjectables() {
addSingletonFactory<PreferenceStore> { AndroidPreferenceStore(application) }
addSingletonFactory { BasePreferences(get()) }
addSingletonFactory { SourcePreferences(get()) }
addSingletonFactory { TrackPreferences(get()) }

View file

@ -4,6 +4,7 @@ import android.content.Context
import android.graphics.drawable.Drawable
import android.os.Build
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
@ -460,7 +461,7 @@ class ExtensionManager(
companion object {
fun canAutoInstallUpdates(checkIfShizukuIsRunning: Boolean = false): Boolean {
val prefs = Injekt.get<PreferencesHelper>().extensionInstaller().get()
val prefs = Injekt.get<BasePreferences>().extensionInstaller().get()
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ||
(
prefs == ExtensionInstaller.SHIZUKU &&

View file

@ -18,6 +18,7 @@ import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
@ -61,10 +62,11 @@ class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParam
private fun createUpdateNotification(extensionsList: List<Extension.Available>) {
val extensions = extensionsList.toMutableList()
val basePreferences: BasePreferences by injectLazy()
val preferences: PreferencesHelper by injectLazy()
preferences.extensionUpdatesCount().set(extensions.size)
val extensionsInstalledByApp by lazy {
if (preferences.extensionInstaller().get() == ExtensionInstaller.SHIZUKU) {
if (basePreferences.extensionInstaller().get() == ExtensionInstaller.SHIZUKU) {
if (Shizuku.pingBinder() && Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) {
extensions
} else {

View file

@ -4,7 +4,6 @@ import android.annotation.SuppressLint
import android.app.DownloadManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Context.RECEIVER_EXPORTED
import android.content.Intent
import android.content.IntentFilter
import android.net.Uri
@ -12,6 +11,7 @@ import android.os.Build
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
@ -46,6 +46,7 @@ import kotlinx.coroutines.launch
import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.io.File
/**
@ -264,8 +265,8 @@ internal class ExtensionInstaller(private val context: Context) {
val useActivity =
(pkgName?.let { !ExtensionLoader.isExtensionInstalledByApp(context, pkgName) } ?: true) ||
Build.VERSION.SDK_INT < Build.VERSION_CODES.S
val prefs: PreferencesHelper = Injekt.get()
when (prefs.extensionInstaller().get()) {
val basePreferences: BasePreferences by injectLazy()
when (basePreferences.extensionInstaller().get()) {
SHIZUKU -> {
pkgName ?: return
setInstalling(pkgName, uri.hashCode())

View file

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.ui.extension
import android.widget.TextView
import dev.yokai.domain.base.BasePreferences
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
@ -16,10 +17,11 @@ import uy.kohesive.injekt.injectLazy
class ExtensionAdapter(val listener: OnButtonClickListener) :
FlexibleAdapter<IFlexible<*>>(null, listener, true) {
val basePreferences: BasePreferences by injectLazy()
val preferences: PreferencesHelper by injectLazy()
var installedSortOrder = preferences.installedExtensionsOrder().get()
var installPrivately = preferences.extensionInstaller().get() == ExtensionInstaller.PRIVATE
var installPrivately = basePreferences.extensionInstaller().get() == ExtensionInstaller.PRIVATE
init {
setDisplayHeadersAtStartUp(true)

View file

@ -12,6 +12,7 @@ import androidx.core.view.updatePaddingRelative
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 eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
@ -44,6 +45,7 @@ import eu.kanade.tachiyomi.util.view.smoothScrollToTop
import eu.kanade.tachiyomi.util.view.withFadeTransaction
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
LinearLayout(context, attrs),
@ -53,6 +55,8 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At
SourceAdapter.OnAllClickListener,
BaseMigrationInterface {
private val basePreferences: BasePreferences by injectLazy()
var sheetBehavior: BottomSheetBehavior<*>? = null
var shouldCallApi = false
@ -221,7 +225,7 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At
override fun onUpdateAllClicked(position: Int) {
(controller.activity as? MainActivity)?.showNotificationPermissionPrompt()
if (presenter.preferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU &&
if (basePreferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU &&
!presenter.preferences.hasPromptedBeforeUpdateAll().get()
) {
controller.activity!!.materialAlertDialog()

View file

@ -333,7 +333,7 @@ class SettingsAdvancedController : SettingsController() {
titleRes = R.string.extensions
intListPreference(activity) {
bindTo(preferences.extensionInstaller())
bindTo(basePreferences.extensionInstaller())
titleRes = R.string.ext_installer_pref
entriesRes = arrayOf(
R.string.default_value,
@ -367,7 +367,7 @@ class SettingsAdvancedController : SettingsController() {
}
}
infoPreference(R.string.ext_installer_summary).apply {
preferences.extensionInstaller().changesIn(viewScope) {
basePreferences.extensionInstaller().changesIn(viewScope) {
isVisible =
it != ExtensionInstaller.PACKAGE_INSTALLER && Build.VERSION.SDK_INT < Build.VERSION_CODES.S
}

View file

@ -68,7 +68,7 @@ class SettingsBrowseController : SettingsController() {
)
defaultValue = AppDownloadInstallJob.ONLY_ON_UNMETERED
}
val infoPref = if (preferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU) {
val infoPref = if (basePreferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU) {
infoPreference(R.string.some_extensions_may_not_update)
} else {
null

View file

@ -19,6 +19,7 @@ import androidx.preference.PreferenceGroup
import androidx.preference.PreferenceScreen
import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType
import dev.yokai.domain.base.BasePreferences
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.changesIn
@ -33,14 +34,14 @@ import eu.kanade.tachiyomi.util.view.isControllerVisible
import eu.kanade.tachiyomi.util.view.scrollViewWith
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
import kotlinx.coroutines.MainScope
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.util.Locale
abstract class SettingsController : PreferenceController(), BackHandlerControllerInterface {
var preferenceKey: String? = null
val preferences: PreferencesHelper = Injekt.get()
val basePreferences: BasePreferences by injectLazy()
val preferences: PreferencesHelper by injectLazy()
val viewScope = MainScope()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

View file

@ -23,6 +23,7 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
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.presentation.extension.repo.ExtensionRepoController
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
@ -69,8 +70,7 @@ import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.parcelize.Parcelize
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.util.Date
import java.util.Locale
import kotlin.math.max
@ -88,10 +88,12 @@ class BrowseController :
FloatingSearchInterface,
BottomSheetController {
private val basePreferences: BasePreferences by injectLazy()
/**
* Application preferences.
*/
private val preferences: PreferencesHelper = Injekt.get()
private val preferences: PreferencesHelper by injectLazy()
/**
* Adapter containing sources.
@ -178,7 +180,7 @@ class BrowseController :
requestFilePermissionsSafe(301, preferences)
binding.bottomSheet.root.onCreate(this)
preferences.extensionInstaller().changes()
basePreferences.extensionInstaller().changes()
.drop(1)
.onEach {
binding.bottomSheet.root.setCanInstallPrivately(it == ExtensionInstaller.PRIVATE)