AppUpdater

This commit is contained in:
sathwikcs
2025-01-16 14:53:31 +05:30
parent 1482c2b548
commit 7a22437bd5

View File

@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.magnifier
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Close
@@ -34,8 +35,8 @@ import androidx.compose.ui.unit.sp
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.PermissionState
import com.google.accompanist.permissions.isGranted
import `in`.sminnovations.attendanceapp.screens.home.viewModel.AttendanceUiState
import `in`.sminnovations.attendanceapp.screens.settings.ui.components.TopComponents
@OptIn(ExperimentalPermissionsApi::class)
@Composable
@@ -46,41 +47,54 @@ internal fun AttendanceScreenContent(
onQrCodeScanned: (String) -> Unit,
modifier: Modifier = Modifier
) {
Box(modifier = modifier.fillMaxSize()) {
when {
!cameraPermissionState.status.isGranted -> {
RequestPermissionsContent(cameraPermissionState)
}
uiState.isScanning -> {
ScannerContent(
onQrCodeScanned = onQrCodeScanned,
onClose = onScannerToggle
)
}
uiState.errorMessage != null -> {
ErrorContent(
errorMessage = uiState.errorMessage,
userName = uiState.userName,
checkedOutTime = uiState.checkedOutTime
)
}
uiState.isCheckedIn -> {
AttendanceStatusCard(
title = "Checked In as",
userName = uiState.userName
)
}
uiState.isCheckedOut -> {
AttendanceStatusCard(
title = "Checked Out as",
userName = uiState.userName
)
Column {
when {
!cameraPermissionState.status.isGranted -> {
RequestPermissionsContent(cameraPermissionState)
}
uiState.isScanning -> {
ScannerContent(
onQrCodeScanned = onQrCodeScanned, onClose = onScannerToggle
)
}
uiState.errorMessage != null -> {
ErrorContent(
errorMessage = uiState.errorMessage,
userName = uiState.userName,
checkedOutTime = uiState.checkedOutTime
)
}
uiState.isCheckedIn -> {
AttendanceStatusCard(
title = "Checked In as", userName = uiState.userName
)
}
uiState.isCheckedOut -> {
AttendanceStatusCard(
title = "Checked Out as", userName = uiState.userName
)
}
}
}
if (uiState.isLoading) {
LoadingOverlay()
}
if (!uiState.isScanning && uiState.errorMessage == null && !uiState.isCheckedIn && !uiState.isCheckedOut && cameraPermissionState.status.isGranted){
Box(modifier =Modifier.align(Alignment.Center) ){
TopComponents()}
}
if (!uiState.isScanning && uiState.errorMessage == null && !uiState.isCheckedIn && !uiState.isCheckedOut && !cameraPermissionState.status.isGranted){
TopComponents()
}
ScannerToggleButton(
isScanning = uiState.isScanning,
@@ -93,16 +107,12 @@ internal fun AttendanceScreenContent(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ScannerToggleButton(
isScanning: Boolean,
onClick: () -> Unit,
modifier: Modifier = Modifier
isScanning: Boolean, onClick: () -> Unit, modifier: Modifier = Modifier
) {
OutlinedCard(
onClick = onClick,
colors = CardDefaults.cardColors(
onClick = onClick, colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.primary
),
modifier = modifier
), modifier = modifier
.fillMaxWidth()
.padding(16.dp)
) {
@@ -137,18 +147,15 @@ private fun LoadingOverlay() {
contentAlignment = Alignment.Center
) {
CircularProgressIndicator(
color = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(48.dp)
color = MaterialTheme.colorScheme.primary, modifier = Modifier.size(48.dp)
)
}
}
@Composable
private fun AttendanceStatusCard(
title: String,
userName: String?
title: String, userName: String?
) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
OutlinedCard {
@@ -176,14 +183,12 @@ private fun AttendanceStatusCard(
@Composable
private fun ScannerContent(
onQrCodeScanned: (String) -> Unit,
onClose: () -> Unit
onQrCodeScanned: (String) -> Unit, onClose: () -> Unit
) {
Box(modifier = Modifier.fillMaxSize()) {
QRCodeScannerScreen(onQrCodeScanned)
IconButton(
onClick = onClose,
modifier = Modifier
onClick = onClose, modifier = Modifier
.align(Alignment.TopStart)
.padding(16.dp)
) {