tap to request for root from mainscreen

This commit is contained in:
2026-03-12 16:28:29 +05:00
parent 0c0476b413
commit 65a1d79e32
2 changed files with 17 additions and 30 deletions
@@ -6,6 +6,7 @@
package sh.sar.isodroid.ui.components package sh.sar.isodroid.ui.components
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -52,7 +53,9 @@ fun StatusCard(
mountStatus: MountStatus, mountStatus: MountStatus,
rootAvailable: Boolean?, rootAvailable: Boolean?,
deviceSupported: Boolean?, deviceSupported: Boolean?,
modifier: Modifier = Modifier rootDenied: Boolean = false,
modifier: Modifier = Modifier,
onRequestRoot: (() -> Unit)? = null
) { ) {
val context = LocalContext.current val context = LocalContext.current
@@ -73,7 +76,15 @@ fun StatusCard(
val isImg = fileName?.lowercase()?.endsWith(".img") == true val isImg = fileName?.lowercase()?.endsWith(".img") == true
Card( Card(
modifier = modifier.fillMaxWidth(), modifier = modifier
.fillMaxWidth()
.then(
if (showRootError && onRequestRoot != null) {
Modifier.clickable(onClick = onRequestRoot)
} else {
Modifier
}
),
colors = CardDefaults.cardColors( colors = CardDefaults.cardColors(
containerColor = when { containerColor = when {
hasError -> MaterialTheme.colorScheme.errorContainer hasError -> MaterialTheme.colorScheme.errorContainer
@@ -121,7 +132,7 @@ fun StatusCard(
) )
if (showRootError) { if (showRootError) {
Text( Text(
text = "Grant root access to use ISODroid", text = if (rootDenied) "Grant root access to use ISO Droid" else "Tap to grant root access",
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant color = MaterialTheme.colorScheme.onSurfaceVariant
) )
@@ -27,7 +27,6 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -157,7 +156,9 @@ fun MainScreen(
StatusCard( StatusCard(
mountStatus = uiState.mountStatus, mountStatus = uiState.mountStatus,
rootAvailable = uiState.hasRoot, rootAvailable = uiState.hasRoot,
deviceSupported = uiState.isSupported deviceSupported = uiState.isSupported,
rootDenied = uiState.rootDenied,
onRequestRoot = { viewModel.requestRootAccess() }
) )
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))
@@ -184,31 +185,6 @@ fun MainScreen(
canNavigateUp = viewModel.canNavigateUp(), canNavigateUp = viewModel.canNavigateUp(),
modifier = Modifier.weight(1f) modifier = Modifier.weight(1f)
) )
} else if (uiState.hasRoot != true) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "Root Access Required",
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSurface
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "Grant root access to use ISO Droid",
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
Spacer(modifier = Modifier.height(16.dp))
TextButton(onClick = { viewModel.requestRootAccess() }) {
Text("Grant Root Access")
}
}
}
} }
} }
} }