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
|
// TODO: SourcePref
|
||||||
fun autoUpdateExtensions() = prefs.getInt(Keys.autoUpdateExtensions, AppDownloadInstallJob.ONLY_ON_UNMETERED)
|
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 filterChapterByRead() = preferenceStore.getInt(Keys.defaultChapterFilterByRead, Manga.SHOW_ALL)
|
||||||
|
|
||||||
fun filterChapterByDownloaded() = preferenceStore.getInt(Keys.defaultChapterFilterByDownloaded, Manga.SHOW_ALL)
|
fun filterChapterByDownloaded() = preferenceStore.getInt(Keys.defaultChapterFilterByDownloaded, Manga.SHOW_ALL)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package eu.kanade.tachiyomi.di
|
package eu.kanade.tachiyomi.di
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
|
import dev.yokai.domain.base.BasePreferences
|
||||||
import dev.yokai.domain.recents.RecentsPreferences
|
import dev.yokai.domain.recents.RecentsPreferences
|
||||||
import dev.yokai.domain.source.SourcePreferences
|
import dev.yokai.domain.source.SourcePreferences
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
import dev.yokai.domain.ui.UiPreferences
|
||||||
|
@ -17,6 +18,8 @@ class PreferenceModule(val application: Application) : InjektModule {
|
||||||
override fun InjektRegistrar.registerInjectables() {
|
override fun InjektRegistrar.registerInjectables() {
|
||||||
addSingletonFactory<PreferenceStore> { AndroidPreferenceStore(application) }
|
addSingletonFactory<PreferenceStore> { AndroidPreferenceStore(application) }
|
||||||
|
|
||||||
|
addSingletonFactory { BasePreferences(get()) }
|
||||||
|
|
||||||
addSingletonFactory { SourcePreferences(get()) }
|
addSingletonFactory { SourcePreferences(get()) }
|
||||||
|
|
||||||
addSingletonFactory { TrackPreferences(get()) }
|
addSingletonFactory { TrackPreferences(get()) }
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
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.data.preference.plusAssign
|
||||||
|
@ -460,7 +461,7 @@ class ExtensionManager(
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun canAutoInstallUpdates(checkIfShizukuIsRunning: Boolean = false): Boolean {
|
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 ||
|
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ||
|
||||||
(
|
(
|
||||||
prefs == ExtensionInstaller.SHIZUKU &&
|
prefs == ExtensionInstaller.SHIZUKU &&
|
||||||
|
|
|
@ -18,6 +18,7 @@ import androidx.work.OneTimeWorkRequestBuilder
|
||||||
import androidx.work.PeriodicWorkRequestBuilder
|
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 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
|
||||||
|
@ -61,10 +62,11 @@ class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParam
|
||||||
|
|
||||||
private fun createUpdateNotification(extensionsList: List<Extension.Available>) {
|
private fun createUpdateNotification(extensionsList: List<Extension.Available>) {
|
||||||
val extensions = extensionsList.toMutableList()
|
val extensions = extensionsList.toMutableList()
|
||||||
|
val basePreferences: BasePreferences by injectLazy()
|
||||||
val preferences: PreferencesHelper by injectLazy()
|
val preferences: PreferencesHelper by injectLazy()
|
||||||
preferences.extensionUpdatesCount().set(extensions.size)
|
preferences.extensionUpdatesCount().set(extensions.size)
|
||||||
val extensionsInstalledByApp by lazy {
|
val extensionsInstalledByApp by lazy {
|
||||||
if (preferences.extensionInstaller().get() == ExtensionInstaller.SHIZUKU) {
|
if (basePreferences.extensionInstaller().get() == ExtensionInstaller.SHIZUKU) {
|
||||||
if (Shizuku.pingBinder() && Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) {
|
if (Shizuku.pingBinder() && Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) {
|
||||||
extensions
|
extensions
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.annotation.SuppressLint
|
||||||
import android.app.DownloadManager
|
import android.app.DownloadManager
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Context.RECEIVER_EXPORTED
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
@ -12,6 +11,7 @@ import android.os.Build
|
||||||
import android.os.Environment
|
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 eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
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
|
||||||
|
@ -46,6 +46,7 @@ import kotlinx.coroutines.launch
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -264,8 +265,8 @@ internal class ExtensionInstaller(private val context: Context) {
|
||||||
val useActivity =
|
val useActivity =
|
||||||
(pkgName?.let { !ExtensionLoader.isExtensionInstalledByApp(context, pkgName) } ?: true) ||
|
(pkgName?.let { !ExtensionLoader.isExtensionInstalledByApp(context, pkgName) } ?: true) ||
|
||||||
Build.VERSION.SDK_INT < Build.VERSION_CODES.S
|
Build.VERSION.SDK_INT < Build.VERSION_CODES.S
|
||||||
val prefs: PreferencesHelper = Injekt.get()
|
val basePreferences: BasePreferences by injectLazy()
|
||||||
when (prefs.extensionInstaller().get()) {
|
when (basePreferences.extensionInstaller().get()) {
|
||||||
SHIZUKU -> {
|
SHIZUKU -> {
|
||||||
pkgName ?: return
|
pkgName ?: return
|
||||||
setInstalling(pkgName, uri.hashCode())
|
setInstalling(pkgName, uri.hashCode())
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package eu.kanade.tachiyomi.ui.extension
|
package eu.kanade.tachiyomi.ui.extension
|
||||||
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import dev.yokai.domain.base.BasePreferences
|
||||||
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
|
||||||
|
@ -16,10 +17,11 @@ import uy.kohesive.injekt.injectLazy
|
||||||
class ExtensionAdapter(val listener: OnButtonClickListener) :
|
class ExtensionAdapter(val listener: OnButtonClickListener) :
|
||||||
FlexibleAdapter<IFlexible<*>>(null, listener, true) {
|
FlexibleAdapter<IFlexible<*>>(null, listener, true) {
|
||||||
|
|
||||||
|
val basePreferences: BasePreferences by injectLazy()
|
||||||
val preferences: PreferencesHelper by injectLazy()
|
val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
var installedSortOrder = preferences.installedExtensionsOrder().get()
|
var installedSortOrder = preferences.installedExtensionsOrder().get()
|
||||||
var installPrivately = preferences.extensionInstaller().get() == ExtensionInstaller.PRIVATE
|
var installPrivately = basePreferences.extensionInstaller().get() == ExtensionInstaller.PRIVATE
|
||||||
|
|
||||||
init {
|
init {
|
||||||
setDisplayHeadersAtStartUp(true)
|
setDisplayHeadersAtStartUp(true)
|
||||||
|
|
|
@ -12,6 +12,7 @@ import androidx.core.view.updatePaddingRelative
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
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 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
|
||||||
|
@ -44,6 +45,7 @@ import eu.kanade.tachiyomi.util.view.smoothScrollToTop
|
||||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
LinearLayout(context, attrs),
|
LinearLayout(context, attrs),
|
||||||
|
@ -53,6 +55,8 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At
|
||||||
SourceAdapter.OnAllClickListener,
|
SourceAdapter.OnAllClickListener,
|
||||||
BaseMigrationInterface {
|
BaseMigrationInterface {
|
||||||
|
|
||||||
|
private val basePreferences: BasePreferences by injectLazy()
|
||||||
|
|
||||||
var sheetBehavior: BottomSheetBehavior<*>? = null
|
var sheetBehavior: BottomSheetBehavior<*>? = null
|
||||||
|
|
||||||
var shouldCallApi = false
|
var shouldCallApi = false
|
||||||
|
@ -221,7 +225,7 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At
|
||||||
|
|
||||||
override fun onUpdateAllClicked(position: Int) {
|
override fun onUpdateAllClicked(position: Int) {
|
||||||
(controller.activity as? MainActivity)?.showNotificationPermissionPrompt()
|
(controller.activity as? MainActivity)?.showNotificationPermissionPrompt()
|
||||||
if (presenter.preferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU &&
|
if (basePreferences.extensionInstaller().get() != ExtensionInstaller.SHIZUKU &&
|
||||||
!presenter.preferences.hasPromptedBeforeUpdateAll().get()
|
!presenter.preferences.hasPromptedBeforeUpdateAll().get()
|
||||||
) {
|
) {
|
||||||
controller.activity!!.materialAlertDialog()
|
controller.activity!!.materialAlertDialog()
|
||||||
|
|
|
@ -333,7 +333,7 @@ class SettingsAdvancedController : SettingsController() {
|
||||||
titleRes = R.string.extensions
|
titleRes = R.string.extensions
|
||||||
|
|
||||||
intListPreference(activity) {
|
intListPreference(activity) {
|
||||||
bindTo(preferences.extensionInstaller())
|
bindTo(basePreferences.extensionInstaller())
|
||||||
titleRes = R.string.ext_installer_pref
|
titleRes = R.string.ext_installer_pref
|
||||||
entriesRes = arrayOf(
|
entriesRes = arrayOf(
|
||||||
R.string.default_value,
|
R.string.default_value,
|
||||||
|
@ -367,7 +367,7 @@ class SettingsAdvancedController : SettingsController() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
infoPreference(R.string.ext_installer_summary).apply {
|
infoPreference(R.string.ext_installer_summary).apply {
|
||||||
preferences.extensionInstaller().changesIn(viewScope) {
|
basePreferences.extensionInstaller().changesIn(viewScope) {
|
||||||
isVisible =
|
isVisible =
|
||||||
it != ExtensionInstaller.PACKAGE_INSTALLER && Build.VERSION.SDK_INT < Build.VERSION_CODES.S
|
it != ExtensionInstaller.PACKAGE_INSTALLER && Build.VERSION.SDK_INT < Build.VERSION_CODES.S
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ class SettingsBrowseController : SettingsController() {
|
||||||
)
|
)
|
||||||
defaultValue = AppDownloadInstallJob.ONLY_ON_UNMETERED
|
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)
|
infoPreference(R.string.some_extensions_may_not_update)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
|
|
|
@ -19,6 +19,7 @@ import androidx.preference.PreferenceGroup
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
import com.bluelinelabs.conductor.ControllerChangeType
|
import com.bluelinelabs.conductor.ControllerChangeType
|
||||||
|
import dev.yokai.domain.base.BasePreferences
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.changesIn
|
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.util.view.scrollViewWith
|
||||||
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.injectLazy
|
||||||
import uy.kohesive.injekt.api.get
|
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
abstract class SettingsController : PreferenceController(), BackHandlerControllerInterface {
|
abstract class SettingsController : PreferenceController(), BackHandlerControllerInterface {
|
||||||
|
|
||||||
var preferenceKey: String? = null
|
var preferenceKey: String? = null
|
||||||
val preferences: PreferencesHelper = Injekt.get()
|
val basePreferences: BasePreferences by injectLazy()
|
||||||
|
val preferences: PreferencesHelper by injectLazy()
|
||||||
val viewScope = MainScope()
|
val viewScope = MainScope()
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
|
|
@ -23,6 +23,7 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
import com.bluelinelabs.conductor.ControllerChangeType
|
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.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
|
||||||
|
@ -69,8 +70,7 @@ import kotlinx.coroutines.flow.drop
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.injectLazy
|
||||||
import uy.kohesive.injekt.api.get
|
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
@ -88,10 +88,12 @@ class BrowseController :
|
||||||
FloatingSearchInterface,
|
FloatingSearchInterface,
|
||||||
BottomSheetController {
|
BottomSheetController {
|
||||||
|
|
||||||
|
private val basePreferences: BasePreferences by injectLazy()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application preferences.
|
* Application preferences.
|
||||||
*/
|
*/
|
||||||
private val preferences: PreferencesHelper = Injekt.get()
|
private val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter containing sources.
|
* Adapter containing sources.
|
||||||
|
@ -178,7 +180,7 @@ class BrowseController :
|
||||||
requestFilePermissionsSafe(301, preferences)
|
requestFilePermissionsSafe(301, preferences)
|
||||||
binding.bottomSheet.root.onCreate(this)
|
binding.bottomSheet.root.onCreate(this)
|
||||||
|
|
||||||
preferences.extensionInstaller().changes()
|
basePreferences.extensionInstaller().changes()
|
||||||
.drop(1)
|
.drop(1)
|
||||||
.onEach {
|
.onEach {
|
||||||
binding.bottomSheet.root.setCanInstallPrivately(it == ExtensionInstaller.PRIVATE)
|
binding.bottomSheet.root.setCanInstallPrivately(it == ExtensionInstaller.PRIVATE)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue