mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Separate BasePreferences from PreferencesHelper
This commit is contained in:
parent
bda6de7b76
commit
19d1f0db6f
12 changed files with 41 additions and 19 deletions
|
@ -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)
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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()) }
|
||||
|
|
|
@ -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 &&
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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?) {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue