mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Fix installing extensions on MIUI (#8916)
* Fix installing extensions on MIUI * isShizukuReady -> isShizukuInstalled
This commit is contained in:
		@@ -2,9 +2,6 @@ package eu.kanade.domain.base
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.getEnum
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
 | 
			
		||||
 | 
			
		||||
@@ -21,10 +18,7 @@ class BasePreferences(
 | 
			
		||||
 | 
			
		||||
    fun automaticExtUpdates() = preferenceStore.getBoolean("automatic_ext_updates", true)
 | 
			
		||||
 | 
			
		||||
    fun extensionInstaller() = preferenceStore.getEnum(
 | 
			
		||||
        "extension_installer",
 | 
			
		||||
        if (DeviceUtil.isMiui) PreferenceValues.ExtensionInstaller.LEGACY else PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER,
 | 
			
		||||
    )
 | 
			
		||||
    fun extensionInstaller() = ExtensionInstallerPreference(context, preferenceStore)
 | 
			
		||||
 | 
			
		||||
    fun acraEnabled() = preferenceStore.getBoolean("acra.enable", isPreviewBuildType || isReleaseBuildType)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,68 @@
 | 
			
		||||
package eu.kanade.domain.base
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.Preference
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
 | 
			
		||||
import eu.kanade.tachiyomi.core.preference.getEnum
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues.ExtensionInstaller
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
 | 
			
		||||
class ExtensionInstallerPreference(
 | 
			
		||||
    private val context: Context,
 | 
			
		||||
    preferenceStore: PreferenceStore,
 | 
			
		||||
) : Preference<ExtensionInstaller> {
 | 
			
		||||
 | 
			
		||||
    private val basePref = preferenceStore.getEnum(key(), defaultValue())
 | 
			
		||||
 | 
			
		||||
    override fun key() = "extension_installer"
 | 
			
		||||
 | 
			
		||||
    val entries get() = ExtensionInstaller.values().run {
 | 
			
		||||
        if (context.hasMiuiPackageInstaller) {
 | 
			
		||||
            filter { it != ExtensionInstaller.PACKAGEINSTALLER }
 | 
			
		||||
        } else {
 | 
			
		||||
            toList()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun defaultValue() = if (context.hasMiuiPackageInstaller) {
 | 
			
		||||
        ExtensionInstaller.LEGACY
 | 
			
		||||
    } else {
 | 
			
		||||
        ExtensionInstaller.PACKAGEINSTALLER
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun check(value: ExtensionInstaller): ExtensionInstaller {
 | 
			
		||||
        when (value) {
 | 
			
		||||
            ExtensionInstaller.PACKAGEINSTALLER -> {
 | 
			
		||||
                if (context.hasMiuiPackageInstaller) return ExtensionInstaller.LEGACY
 | 
			
		||||
            }
 | 
			
		||||
            ExtensionInstaller.SHIZUKU -> {
 | 
			
		||||
                if (!context.isShizukuInstalled) return defaultValue()
 | 
			
		||||
            }
 | 
			
		||||
            else -> {}
 | 
			
		||||
        }
 | 
			
		||||
        return value
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun get(): ExtensionInstaller {
 | 
			
		||||
        val value = basePref.get()
 | 
			
		||||
        val checkedValue = check(value)
 | 
			
		||||
        if (value != checkedValue) {
 | 
			
		||||
            basePref.set(checkedValue)
 | 
			
		||||
        }
 | 
			
		||||
        return checkedValue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun set(value: ExtensionInstaller) {
 | 
			
		||||
        basePref.set(check(value))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun isSet() = basePref.isSet()
 | 
			
		||||
 | 
			
		||||
    override fun delete() = basePref.delete()
 | 
			
		||||
 | 
			
		||||
    override fun changes() = basePref.changes()
 | 
			
		||||
 | 
			
		||||
    override fun stateIn(scope: CoroutineScope) = basePref.stateIn(scope)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user