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