AppUpdater
This commit is contained in:
@@ -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)
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user