Commit a70c0174 authored by Viktor De Pasquale's avatar Viktor De Pasquale

Added device info card

parent da707afa
...@@ -121,6 +121,7 @@ object Config : PreferenceModel, DBConfig { ...@@ -121,6 +121,7 @@ object Config : PreferenceModel, DBConfig {
var suReAuth by preference(Key.SU_REAUTH, false) var suReAuth by preference(Key.SU_REAUTH, false)
var checkUpdate by preference(Key.CHECK_UPDATES, true) var checkUpdate by preference(Key.CHECK_UPDATES, true)
var magiskHide by preference(Key.MAGISKHIDE, true) var magiskHide by preference(Key.MAGISKHIDE, true)
@JvmStatic
var coreOnly by preference(Key.COREONLY, false) var coreOnly by preference(Key.COREONLY, false)
var showSystemApp by preference(Key.SHOW_SYSTEM_APP, false) var showSystemApp by preference(Key.SHOW_SYSTEM_APP, false)
......
...@@ -24,8 +24,10 @@ import com.topjohnwu.magisk.utils.DynamicClassLoader ...@@ -24,8 +24,10 @@ import com.topjohnwu.magisk.utils.DynamicClassLoader
import com.topjohnwu.magisk.utils.FileProvider import com.topjohnwu.magisk.utils.FileProvider
import com.topjohnwu.magisk.utils.Utils import com.topjohnwu.magisk.utils.Utils
import com.topjohnwu.magisk.utils.currentLocale import com.topjohnwu.magisk.utils.currentLocale
import com.topjohnwu.superuser.ShellUtils
import java.io.File import java.io.File
import java.io.FileNotFoundException import java.io.FileNotFoundException
import java.text.SimpleDateFormat
import java.util.* import java.util.*
val packageName: String get() = get<Context>().packageName val packageName: String get() = get<Context>().packageName
...@@ -281,3 +283,32 @@ fun Context.unwrap(): Context { ...@@ -281,3 +283,32 @@ fun Context.unwrap(): Context {
fun Context.hasPermissions(vararg permissions: String) = permissions.all { fun Context.hasPermissions(vararg permissions: String) = permissions.all {
ContextCompat.checkSelfPermission(this, it) == PERMISSION_GRANTED ContextCompat.checkSelfPermission(this, it) == PERMISSION_GRANTED
} }
private val securityLevelFormatter get() = SimpleDateFormat("yyyy-MM-dd", currentLocale)
/** Friendly reminder to seek newer roms or install oem updates. */
val isDeviceSecure: Boolean
get() {
val latestPermittedTime = Calendar.getInstance().apply {
time = securityLevelDate
add(Calendar.MONTH, 2)
}.time.time
return now in 0..latestPermittedTime
}
val securityLevelDate get() = securityLevelFormatter.parseOrNull(securityLevel) ?: Date(0)
val securityLevel
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Build.VERSION.SECURITY_PATCH
} else {
null
} ?: "1970-01-01" //never
val isSAR
get() = ShellUtils
.fastCmd("grep_prop ro.build.system_root_image")
.let { it.isNotEmpty() && it.toBoolean() }
val isAB
get() = ShellUtils
.fastCmd("grep_prop ro.build.ab_update")
.let { it.isNotEmpty() && it.toBoolean() }
\ No newline at end of file
...@@ -3,9 +3,11 @@ package com.topjohnwu.magisk.extensions ...@@ -3,9 +3,11 @@ package com.topjohnwu.magisk.extensions
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import androidx.core.net.toFile import androidx.core.net.toFile
import timber.log.Timber
import java.io.File import java.io.File
import java.io.InputStream import java.io.InputStream
import java.io.OutputStream import java.io.OutputStream
import java.text.SimpleDateFormat
import java.util.* import java.util.*
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
...@@ -101,3 +103,6 @@ fun Locale.toLangTag(): String { ...@@ -101,3 +103,6 @@ fun Locale.toLangTag(): String {
return tag.toString() return tag.toString()
} }
} }
fun SimpleDateFormat.parseOrNull(date: String) =
runCatching { parse(date) }.onFailure { Timber.e(it) }.getOrNull()
\ No newline at end of file
...@@ -12,3 +12,5 @@ fun reboot(reason: String = if (Info.recovery) "recovery" else "") { ...@@ -12,3 +12,5 @@ fun reboot(reason: String = if (Info.recovery) "recovery" else "") {
fun File.suOutputStream() = SuFileOutputStream(this) fun File.suOutputStream() = SuFileOutputStream(this)
fun File.suInputStream() = SuFileInputStream(this) fun File.suInputStream() = SuFileInputStream(this)
val hasRoot get() = Shell.rootAccess()
\ No newline at end of file
...@@ -62,6 +62,7 @@ class HomeViewModel( ...@@ -62,6 +62,7 @@ class HomeViewModel(
val stateMagiskExpanded = KObservableField(false) val stateMagiskExpanded = KObservableField(false)
val stateManagerExpanded = KObservableField(false) val stateManagerExpanded = KObservableField(false)
val stateDeviceExpanded = KObservableField(false)
val stateHideManagerName = R.string.manager.res().let { val stateHideManagerName = R.string.manager.res().let {
if (!statePackageOriginal) { if (!statePackageOriginal) {
......
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?colorOnSurface"
android:pathData="M17,19V5H7V19H17M17,1A2,2 0 0,1 19,3V21A2,2 0 0,1 17,23H7C5.89,23 5,22.1 5,21V3C5,1.89 5.89,1 7,1H17M9,7H15V9H9V7M9,11H13V13H9V11Z" />
</vector>
\ No newline at end of file
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<string name="magisk">Magisk</string> <string name="magisk">Magisk</string>
<string name="system">System</string> <string name="system">System</string>
<string name="yes">Yes</string>
<string name="no">No</string>
<string name="no_connection">No connection available</string> <string name="no_connection">No connection available</string>
<string name="section_home">Home</string> <string name="section_home">Home</string>
...@@ -28,6 +31,14 @@ ...@@ -28,6 +31,14 @@
<string name="home_item_source">Source</string> <string name="home_item_source">Source</string>
<string name="home_item_xda">XDA</string> <string name="home_item_xda">XDA</string>
<string name="home_device_security">Security</string>
<string name="home_device_system">System</string>
<string name="home_device_build_style">A/B</string>
<string name="home_device_build_type">SAR</string>
<string name="home_device_security_secure">Secure</string>
<string name="home_device_security_outdated">Outdated</string>
<string name="home_extra_version">Version</string> <string name="home_extra_version">Version</string>
<string name="home_extra_code">Code</string> <string name="home_extra_code">Code</string>
<string name="home_extra_mode">Mode</string> <string name="home_extra_mode">Mode</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