Added env fix prompt

This commit is contained in:
Viktor De Pasquale 2019-04-14 12:55:03 +02:00
parent 147264822c
commit 6b045eadef
3 changed files with 27 additions and 11 deletions

View File

@ -12,3 +12,4 @@ class ManagerChangelogEvent : ViewEvent()
class MagiskChangelogEvent : ViewEvent() class MagiskChangelogEvent : ViewEvent()
class UninstallEvent : ViewEvent() class UninstallEvent : ViewEvent()
class EnvFixEvent : ViewEvent()

View File

@ -10,6 +10,7 @@ import com.topjohnwu.magisk.ui.base.MagiskViewModel
import com.topjohnwu.magisk.utils.Event import com.topjohnwu.magisk.utils.Event
import com.topjohnwu.magisk.utils.toggle import com.topjohnwu.magisk.utils.toggle
import com.topjohnwu.net.Networking import com.topjohnwu.net.Networking
import com.topjohnwu.superuser.Shell
class HomeViewModel( class HomeViewModel(
@ -65,6 +66,7 @@ class HomeViewModel(
"" ""
} }
private var shownDialog = false
private val current = resources.getString(R.string.current_installed) private val current = resources.getString(R.string.current_installed)
private val latest = resources.getString(R.string.latest_version) private val latest = resources.getString(R.string.latest_version)
@ -73,7 +75,11 @@ class HomeViewModel(
refresh() refresh()
} }
override fun onEvent(event: Int) = updateSelf() override fun onEvent(event: Int) {
updateSelf()
ensureEnv()
}
override fun getListeningEvents(): IntArray = intArrayOf(Event.UPDATE_CHECK_DONE) override fun getListeningEvents(): IntArray = intArrayOf(Event.UPDATE_CHECK_DONE)
fun paypalPressed() = OpenLinkEvent(Const.Url.PAYPAL_URL).publish() fun paypalPressed() = OpenLinkEvent(Const.Url.PAYPAL_URL).publish()
@ -96,6 +102,7 @@ class HomeViewModel(
} }
fun refresh() { fun refresh() {
shownDialog = false
state = State.LOADING state = State.LOADING
magiskState.value = MagiskState.LOADING magiskState.value = MagiskState.LOADING
managerState.value = MagiskState.LOADING managerState.value = MagiskState.LOADING
@ -139,6 +146,18 @@ class HomeViewModel(
.let { latest.format(it) } .let { latest.format(it) }
} }
private fun ensureEnv() {
val invalidStates = listOf(MagiskState.NOT_INSTALLED, MagiskState.NO_ROOT, MagiskState.LOADING)
// Don't bother checking env when magisk is not installed, loading or already has been shown
if (invalidStates.any { it == magiskState.value } || shownDialog) return
if (!Shell.su("env_check").exec().isSuccess) {
shownDialog = true
EnvFixEvent().publish()
}
}
companion object { companion object {
private const val version = "%s (%d)" private const val version = "%s (%d)"
} }

View File

@ -7,6 +7,7 @@ import com.topjohnwu.magisk.R
import com.topjohnwu.magisk.model.events.* import com.topjohnwu.magisk.model.events.*
import com.topjohnwu.magisk.utils.Event import com.topjohnwu.magisk.utils.Event
import com.topjohnwu.magisk.view.MarkDownWindow import com.topjohnwu.magisk.view.MarkDownWindow
import com.topjohnwu.magisk.view.dialogs.EnvFixDialog
import com.topjohnwu.magisk.view.dialogs.ManagerInstallDialog import com.topjohnwu.magisk.view.dialogs.ManagerInstallDialog
import com.topjohnwu.magisk.view.dialogs.UninstallDialog import com.topjohnwu.magisk.view.dialogs.UninstallDialog
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
@ -61,6 +62,7 @@ class MagiskFragment : NewMagiskFragment<HomeViewModel, com.topjohnwu.magisk.dat
is MagiskInstallEvent -> installMagisk() is MagiskInstallEvent -> installMagisk()
is UninstallEvent -> uninstall() is UninstallEvent -> uninstall()
is ManagerChangelogEvent -> changelogManager() is ManagerChangelogEvent -> changelogManager()
is EnvFixEvent -> fixEnv()
} }
} }
@ -75,17 +77,11 @@ class MagiskFragment : NewMagiskFragment<HomeViewModel, com.topjohnwu.magisk.dat
} }
private fun installManager() = ManagerInstallDialog(requireActivity()).show() private fun installManager() = ManagerInstallDialog(requireActivity()).show()
private fun uninstall() = UninstallDialog(requireActivity()).show()
private fun fixEnv() = EnvFixDialog(requireActivity()).show()
private fun uninstall() { private fun changelogManager() = MarkDownWindow
UninstallDialog(requireActivity()).show() .show(requireActivity(), null, resources.openRawResource(R.raw.changelog))
}
private fun changelogManager() {
MarkDownWindow.show(
requireActivity(), null,
resources.openRawResource(R.raw.changelog)
)
}
/*override fun onCreateView( /*override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,