Skip to content

Commit 7ddc839

Browse files
fanziyunclaude
andcommitted
fix(miuix): add SUSFS control screen
Expose the MIUIX SUSFS control flow through its own route and screen, and refresh SUSFS availability before showing the settings entry so the page only appears when the backend is actually available. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 7d7e96a commit 7ddc839

4 files changed

Lines changed: 865 additions & 1 deletion

File tree

app/src/main/java/com/abk/kernel/miuix/MainActivityMiuix.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ import com.abk.kernel.miuix.ui.screens.BuildModuleRepoSettingsScreenMiuix
9898
import com.abk.kernel.miuix.ui.screens.ExtensionManagerScreenMiuix
9999
import com.abk.kernel.miuix.ui.screens.ManagerPatchScreenMiuix
100100
import com.abk.kernel.miuix.ui.screens.ManagerToolsScreenMiuix
101+
import com.abk.kernel.miuix.ui.screens.SusfsControlScreenMiuix
101102
import com.abk.kernel.miuix.ui.screens.OpenSourceLicensesScreenMiuix
102103
import com.abk.kernel.miuix.ui.screens.RuntimeModuleRepoSettingsScreenMiuix
103104
import com.abk.kernel.miuix.ui.screens.SettingsScreenMiuix
@@ -663,6 +664,16 @@ private fun AbkMiuixMainScaffold(
663664
onBack = popBack,
664665
)
665666
}
667+
entry<Route.SusfsControl> {
668+
SusfsControlScreenMiuix(
669+
state = state,
670+
showRefreshLoading = state.susfsLoading,
671+
onApply = { vm.applySusfsConfig(it) },
672+
onReset = { vm.resetSusfsConfig() },
673+
onRefresh = { vm.refreshSusfsState(force = true) },
674+
onBack = popBack,
675+
)
676+
}
666677
entry<Route.ModuleInstallLog> { route ->
667678
ModuleInstallLogScreenMiuix(
668679
params = route.params,
@@ -1014,6 +1025,16 @@ private fun AbkMiuixMainScaffold(
10141025
onBack = popBack,
10151026
)
10161027
}
1028+
entry<Route.SusfsControl> {
1029+
SusfsControlScreenMiuix(
1030+
state = state,
1031+
showRefreshLoading = state.susfsLoading,
1032+
onApply = { vm.applySusfsConfig(it) },
1033+
onReset = { vm.resetSusfsConfig() },
1034+
onRefresh = { vm.refreshSusfsState(force = true) },
1035+
onBack = popBack,
1036+
)
1037+
}
10171038
entry<Route.ModuleInstallLog> { route ->
10181039
ModuleInstallLogScreenMiuix(
10191040
params = route.params,

app/src/main/java/com/abk/kernel/miuix/ui/screens/SettingsScreenMiuix.kt

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ fun SettingsScreenMiuix(
148148
// Refresh manager settings on first composition (mirrors MD3 LaunchedEffect).
149149
LaunchedEffect(Unit) {
150150
vm.refreshManagerSettings(force = true)
151+
vm.refreshSusfsState(force = true)
151152
}
152153

153154
// Auto-install pending app update APK (mirrors MD3 LaunchedEffect).
@@ -624,6 +625,10 @@ fun SettingsScreenMiuix(
624625
"app_profile_templates" -> navigator.push(Route.AppProfileTemplates)
625626
"manager_tools" -> navigator.push(Route.ManagerTools)
626627
"kpm" -> onOpenInstalledModules()
628+
"susfs_control" -> {
629+
vm.refreshSusfsState(force = true)
630+
navigator.push(Route.SusfsControl)
631+
}
627632
}
628633
}
629634
} else null
@@ -666,8 +671,35 @@ fun SettingsScreenMiuix(
666671
}
667672
}
668673

674+
val susfsAvailable = state.susfsRuntimeStatus?.available == true
675+
if (susfsAvailable) {
676+
SectionTitle(stringResource(R.string.susfs_title))
677+
Card(modifier = Modifier.fillMaxWidth()) {
678+
val runtime = state.susfsRuntimeStatus!!
679+
ArrowPreference(
680+
title = stringResource(R.string.susfs_title),
681+
summary = stringResource(
682+
R.string.settings_susfs_control_summary,
683+
runtime.kernelVersion,
684+
runtime.bundledBinaryVersion
685+
),
686+
startAction = {
687+
Icon(
688+
imageVector = Icons.Default.Extension,
689+
contentDescription = null,
690+
tint = iconTint
691+
)
692+
},
693+
onClick = {
694+
vm.refreshSusfsState(force = true)
695+
navigator.push(Route.SusfsControl)
696+
}
697+
)
698+
}
699+
}
700+
669701
// ═══════════════════════════════════════════════════════════
670-
// 5. NOTIFICATION
702+
// 6. NOTIFICATION
671703
// ═══════════════════════════════════════════════════════════
672704
SectionTitle(stringResource(R.string.settings_notification))
673705
Card(modifier = Modifier.fillMaxWidth()) {
@@ -1048,6 +1080,7 @@ private fun managerSettingIcon(id: String) = when (id) {
10481080
"app_profile_templates" -> Icons.Default.Apps
10491081
"manager_tools" -> Icons.Default.Build
10501082
"kpm" -> Icons.Default.Extension
1083+
"susfs_control" -> Icons.Default.Extension
10511084
"su_compat" -> Icons.Default.RemoveModerator
10521085
"kernel_umount" -> Icons.Default.RemoveCircle
10531086
"adb_root" -> Icons.Default.Adb

0 commit comments

Comments
 (0)