Optimize KPM checking logic

- Simplify code and ensure KPM information is displayed under supported versions
This commit is contained in:
ShirkNeko
2025-05-24 04:38:54 +08:00
parent d619f5fafc
commit e826f43aed
3 changed files with 19 additions and 26 deletions

View File

@@ -257,7 +257,7 @@ private fun BottomBar(navController: NavHostController) {
) { ) {
BottomBarDestination.entries.forEach { destination -> BottomBarDestination.entries.forEach { destination ->
if (destination == BottomBarDestination.Kpm) { if (destination == BottomBarDestination.Kpm) {
if (kpmVersion.isNotEmpty() && !kpmVersion.startsWith("Error") && showKpmInfo) { if (kpmVersion.isNotEmpty() && !kpmVersion.startsWith("Error") && showKpmInfo && Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
if (!fullFeatured && destination.rootRequired) return@forEach if (!fullFeatured && destination.rootRequired) return@forEach
val isCurrentDestOnBackStack by navController.isRouteOnBackStackAsState(destination.direction) val isCurrentDestOnBackStack by navController.isRouteOnBackStackAsState(destination.direction)
NavigationBarItem( NavigationBarItem(

View File

@@ -35,7 +35,6 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Android import androidx.compose.material.icons.filled.Android
import androidx.compose.material.icons.filled.Archive import androidx.compose.material.icons.filled.Archive
import androidx.compose.material.icons.filled.Code
import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.Memory import androidx.compose.material.icons.filled.Memory
import androidx.compose.material.icons.filled.PhoneAndroid import androidx.compose.material.icons.filled.PhoneAndroid
@@ -43,10 +42,8 @@ import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material.icons.filled.Security import androidx.compose.material.icons.filled.Security
import androidx.compose.material.icons.filled.Settings import androidx.compose.material.icons.filled.Settings
import androidx.compose.material.icons.filled.Storage import androidx.compose.material.icons.filled.Storage
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material.icons.outlined.Block import androidx.compose.material.icons.outlined.Block
import androidx.compose.material.icons.outlined.CheckCircle import androidx.compose.material.icons.outlined.CheckCircle
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Warning import androidx.compose.material.icons.outlined.Warning
import androidx.compose.material3.CardDefaults import androidx.compose.material3.CardDefaults
import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenu
@@ -122,9 +119,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.zip.GZIPInputStream
import kotlin.random.Random import kotlin.random.Random
@OptIn(ExperimentalMaterial3Api::class, FlowPreview::class) @OptIn(ExperimentalMaterial3Api::class, FlowPreview::class)
@@ -559,7 +553,7 @@ private fun StatusCard(
) )
val kpmVersion = getKpmVersion() val kpmVersion = getKpmVersion()
if (kpmVersion.isNotEmpty() && !kpmVersion.startsWith("Error") && showKpmInfo) { if (kpmVersion.isNotEmpty() && !kpmVersion.startsWith("Error") && showKpmInfo && Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
Spacer(Modifier.height(4.dp)) Spacer(Modifier.height(4.dp))
Text( Text(
text = stringResource(R.string.home_kpm_module, getKpmModuleCount()), text = stringResource(R.string.home_kpm_module, getKpmModuleCount()),
@@ -899,7 +893,7 @@ private fun InfoCard() {
val isKpmConfigured = checkKPMEnabled() val isKpmConfigured = checkKPMEnabled()
// 根据showKpmInfo决定是否显示KPM信息 // 根据showKpmInfo决定是否显示KPM信息
if (showKpmInfo) { if (showKpmInfo && Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
val displayVersion = if (kpmVersion.isEmpty() || kpmVersion.startsWith("Error")) { val displayVersion = if (kpmVersion.isEmpty() || kpmVersion.startsWith("Error")) {
val statusText = if (isKpmConfigured) { val statusText = if (isKpmConfigured) {
stringResource(R.string.kernel_patched) stringResource(R.string.kernel_patched)
@@ -1019,11 +1013,7 @@ private fun getDeviceModel(): String {
// 检查KPM是否存在 // 检查KPM是否存在
private fun checkKPMEnabled(): Boolean { private fun checkKPMEnabled(): Boolean {
return if (Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) { return isKPMEnabled()
isKPMEnabled()
} else {
false
}
} }
@SuppressLint("UnnecessaryComposedModifier") @SuppressLint("UnnecessaryComposedModifier")

View File

@@ -88,6 +88,7 @@ import androidx.core.content.edit
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import com.sukisu.ultra.Natives
import com.sukisu.ultra.R import com.sukisu.ultra.R
import com.sukisu.ultra.ui.MainActivity import com.sukisu.ultra.ui.MainActivity
import com.sukisu.ultra.ui.component.ImageEditorDialog import com.sukisu.ultra.ui.component.ImageEditorDialog
@@ -1015,6 +1016,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
onHideSusfsStatusChange(it) onHideSusfsStatusChange(it)
} }
if (Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
HorizontalDivider( HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp), modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant color = MaterialTheme.colorScheme.outlineVariant
@@ -1029,6 +1031,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
) { ) {
onShowKpmInfoChange(it) onShowKpmInfoChange(it)
} }
}
HorizontalDivider( HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp), modifier = Modifier.padding(horizontal = 16.dp),