diff --git a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt
index c8eb5d8f..4e6e1e74 100644
--- a/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt
+++ b/manager/app/src/main/java/com/rifsxd/ksunext/ui/screen/Home.kt
@@ -35,6 +35,7 @@ import androidx.compose.ui.text.toUpperCase
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.pm.PackageInfoCompat
+import androidx.lifecycle.viewmodel.compose.viewModel
import com.dergoogler.mmrl.ui.component.LabelItem
import com.dergoogler.mmrl.ui.component.LabelItemDefaults
import com.dergoogler.mmrl.ui.component.text.TextRow
@@ -49,6 +50,7 @@ import com.rifsxd.ksunext.R
import com.rifsxd.ksunext.ui.component.rememberConfirmDialog
import com.rifsxd.ksunext.ui.util.*
import com.rifsxd.ksunext.ui.util.module.LatestVersionInfo
+import com.rifsxd.ksunext.ui.viewmodel.ModuleViewModel
import java.util.*
@OptIn(ExperimentalMaterial3Api::class)
@@ -86,7 +88,13 @@ fun HomeScreen(navigator: DestinationsNavigator) {
if (it >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && kernelVersion.isGKI()) Natives.isLkmMode else null
}
- StatusCard(kernelVersion, ksuVersion, lkmMode) {
+ val moduleViewModel: ModuleViewModel = viewModel()
+ val moduleUpdateCount = moduleViewModel.moduleList.count {
+ // Only count modules when update available (updateUrl is not empty)
+ moduleViewModel.checkUpdate(it).first.isNotEmpty()
+ }
+
+ StatusCard(kernelVersion, ksuVersion, lkmMode, moduleUpdateCount) {
navigator.navigate(InstallScreenDestination)
}
if (isManager && Natives.requireNewKernel()) {
@@ -241,6 +249,7 @@ private fun StatusCard(
kernelVersion: KernelVersion,
ksuVersion: Int?,
lkmMode: Boolean?,
+ moduleUpdateCount: Int = 0,
onClickInstall: () -> Unit = {}
) {
val context = LocalContext.current
@@ -337,6 +346,14 @@ private fun StatusCard(
style = MaterialTheme.typography.bodyMedium
)
+ if (moduleUpdateCount > 0) {
+ Text(
+ text = stringResource(R.string.home_module_update_count, moduleUpdateCount),
+ style = MaterialTheme.typography.bodyMedium,
+ color = MaterialTheme.colorScheme.primary
+ )
+ }
+
val suSFS = getSuSFS()
if (suSFS == "Supported") {
Text(
diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml
index 473fb801..c4bb328f 100644
--- a/manager/app/src/main/res/values/strings.xml
+++ b/manager/app/src/main/res/values/strings.xml
@@ -18,6 +18,7 @@
Version: %d
Superusers: %d
Modules: %d
+ Updates: %d
KernelSU Next v2 signature not found in kernel! [ !KSU_NEXT || != size/hash ]
Ask your kernel developer to integrate KernelSU Next!
Kernel version