Support enable/disable Zygisk

This commit is contained in:
topjohnwu
2021-09-15 02:49:54 -07:00
parent 3b8ce85092
commit c0be5383de
12 changed files with 65 additions and 22 deletions
@@ -34,7 +34,7 @@ sealed class BaseSettingsItem : ObservableRvItem() {
@get:Bindable
var isEnabled = true
set(value) = set(value, field, { field = it }, BR.enabled)
set(value) = set(value, field, { field = it }, BR.enabled, BR.description)
open fun onPressed(view: View, callback: Callback) {
callback.onItemPressed(view, this)
@@ -234,23 +234,44 @@ object Magisk : BaseSettingsItem.Section() {
override val title = R.string.magisk.asText()
}
object Zygisk : BaseSettingsItem.Toggle() {
override val title = R.string.zygisk.asText()
override val description = R.string.settings_zygisk_summary.asText()
override var value = Config.zygisk
set(value) = setV(value, field, { field = it }) {
Config.zygisk = it
DenyList.isEnabled = it
DenyListConfig.isEnabled = it
}
}
object DenyList : BaseSettingsItem.Toggle() {
override val title = R.string.settings_denylist_title.asText()
override val description = R.string.settings_denylist_summary.asText()
override val description get() =
if (isEnabled) R.string.settings_denylist_summary.asText()
else R.string.settings_denylist_error.asText(R.string.zygisk.asText())
override var value = Info.env.denyListEnforced
set(value) = setV(value, field, { field = it }) {
val cmd = if (it) "enable" else "disable"
Shell.su("magisk --denylist $cmd").submit { cb ->
if (cb.isSuccess) Info.env.denyListEnforced = it
Shell.su("magisk --denylist $cmd").submit { result ->
if (result.isSuccess) Info.env.denyListEnforced = it
else field = !it
}
DenyListConfig.isEnabled = it
}
override fun refresh() {
isEnabled = Zygisk.value
}
}
object DenyListConfig : BaseSettingsItem.Blank() {
override val title = R.string.settings_denylist_config_title.asText()
override val description = R.string.settings_denylist_config_summary.asText()
override fun refresh() {
isEnabled = Zygisk.value
}
}
// --- Superuser
@@ -69,7 +69,7 @@ class SettingsViewModel : BaseViewModel(), BaseSettingsItem.Callback {
SystemlessHosts
))
if (Const.Version.isCanary()) {
list.addAll(listOf(DenyList, DenyListConfig))
list.addAll(listOf(Zygisk, DenyList, DenyListConfig))
}
}