Commit 64f35744 authored by topjohnwu's avatar topjohnwu

Reorganize home screen layout

parent b5125281
...@@ -40,19 +40,23 @@ class HomeViewModel( ...@@ -40,19 +40,23 @@ class HomeViewModel(
val stateMagisk = KObservableField(MagiskState.LOADING) val stateMagisk = KObservableField(MagiskState.LOADING)
val stateManager = KObservableField(MagiskState.LOADING) val stateManager = KObservableField(MagiskState.LOADING)
val stateVersionMagisk = KObservableField("")
val stateCodeMagisk = KObservableField(0)
val stateVersionManager = KObservableField("")
val stateCodeManager = KObservableField(0)
val stateCodeStub = KObservableField(0)
val statePackageManager = packageName
val statePackageOriginal = statePackageManager == BuildConfig.APPLICATION_ID
val stateMagiskRemoteVersion = KObservableField(R.string.home_loading.res())
val stateMagiskInstalledVersion get() =
"${Info.env.magiskVersionString} (${Info.env.magiskVersionCode})"
val stateMagiskMode get() = (if (Config.coreOnly)
R.string.home_extra_mode_safe else R.string.home_extra_mode_normal).res()
val stateMagiskProgress = KObservableField(0) val stateMagiskProgress = KObservableField(0)
val stateManagerRemoteVersion = KObservableField(R.string.home_loading.res())
val stateManagerInstalledVersion = Info.stub?.let {
"${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE}) (${it.version})"
} ?: "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})"
val statePackageName = packageName
val stateManagerProgress = KObservableField(0) val stateManagerProgress = KObservableField(0)
val stateHideManagerName = R.string.manager.res().let { val stateHideManagerName = R.string.manager.res().let {
if (!statePackageOriginal) { if (packageName != BuildConfig.APPLICATION_ID) {
it.replaceRandomWithSpecial(3) it.replaceRandomWithSpecial(3)
} else { } else {
it it
...@@ -80,28 +84,24 @@ class HomeViewModel( ...@@ -80,28 +84,24 @@ class HomeViewModel(
} }
override fun refresh() = repoMagisk.fetchUpdate() override fun refresh() = repoMagisk.fetchUpdate()
.onErrorReturn { Info.remote } .onErrorReturn { null }
.subscribeK { updateBy(it) } .subscribeK { it?.updateUI() }
private fun updateBy(info: UpdateInfo) { private fun UpdateInfo.updateUI() {
stateMagisk.value = when { stateMagisk.value = when {
!info.magisk.isInstalled -> MagiskState.NOT_INSTALLED !Info.env.isActive -> MagiskState.NOT_INSTALLED
info.magisk.isObsolete -> MagiskState.OBSOLETE magisk.isObsolete -> MagiskState.OBSOLETE
else -> MagiskState.UP_TO_DATE else -> MagiskState.UP_TO_DATE
} }
stateManager.value = when { stateManager.value = when {
!info.app.isUpdateChannelCorrect && isConnected.value -> MagiskState.NOT_INSTALLED !app.isUpdateChannelCorrect && isConnected.value -> MagiskState.NOT_INSTALLED
info.app.isObsolete -> MagiskState.OBSOLETE app.isObsolete -> MagiskState.OBSOLETE
else -> MagiskState.UP_TO_DATE else -> MagiskState.UP_TO_DATE
} }
stateVersionMagisk.value = info.magisk.version stateMagiskRemoteVersion.value = "${magisk.version} (${magisk.versionCode})"
stateVersionManager.value = info.app.version stateManagerRemoteVersion.value = "${app.version} (${app.versionCode}) (${stub.versionCode})"
stateCodeMagisk.value = info.magisk.versionCode
stateCodeManager.value = info.app.versionCode
stateCodeStub.value = info.stub.versionCode
ensureEnv() ensureEnv()
} }
...@@ -153,14 +153,11 @@ class HomeViewModel( ...@@ -153,14 +153,11 @@ class HomeViewModel(
} }
} }
} private val MagiskJson.isObsolete
get() = Info.env.isActive && Info.env.magiskVersionCode < versionCode
val ManagerJson.isUpdateChannelCorrect
get() = versionCode > 0
val ManagerJson.isObsolete
get() = BuildConfig.VERSION_CODE < versionCode
@Suppress("unused") }
val MagiskJson.isInstalled
get() = Info.env.magiskVersionCode > 0
val MagiskJson.isObsolete
get() = Info.env.magiskVersionCode < versionCode && isInstalled
val ManagerJson.isUpdateChannelCorrect
get() = versionCode > 0
val ManagerJson.isObsolete
get() = BuildConfig.VERSION_CODE < versionCode
...@@ -28,7 +28,9 @@ ...@@ -28,7 +28,9 @@
<string name="home_item_source">Source</string> <string name="home_item_source">Source</string>
<string name="home_support_content">Magisk is, and always will be, free and open-source. You can however show us that you care by sending a small donation.</string> <string name="home_support_content">Magisk is, and always will be, free and open-source. You can however show us that you care by sending a small donation.</string>
<string name="home_device_title">Your device</string> <string name="home_loading">Loading…</string>
<string name="home_device_title">Device</string>
<string name="home_device_info_title">Info</string> <string name="home_device_info_title">Info</string>
<string name="home_device_extra_manufacturer">Manufacturer</string> <string name="home_device_extra_manufacturer">Manufacturer</string>
<string name="home_device_extra_model">Model</string> <string name="home_device_extra_model">Model</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment