MainScreen

This commit is contained in:
sathwikcs
2025-01-16 14:55:21 +05:30
parent 196d9f8eb5
commit ff3a90aa9a
2 changed files with 30 additions and 14 deletions

View File

@@ -9,19 +9,16 @@ import androidx.navigation.compose.rememberNavController
import `in`.sminnovations.attendanceapp.navigation.BottomNavigationBar
import `in`.sminnovations.attendanceapp.navigation.Navigation
import `in`.sminnovations.attendanceapp.navigation.data.navItems
import `in`.sminnovations.attendanceapp.screens.home.ui.HomeScreen
@Composable
fun MainScreen(
) {
val navController = rememberNavController()
Scaffold(
bottomBar = {
BottomNavigationBar(navController, navItems)
},
content = { padding ->
Box(modifier = Modifier.padding(padding)) {
Navigation(navController = navController, items = navItems)
HomeScreen()
}
}
)

View File

@@ -4,29 +4,47 @@ import android.Manifest
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.hilt.navigation.compose.hiltViewModel
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberPermissionState
import `in`.sminnovations.attendanceapp.screens.home.ui.componets.AttendanceScreenContent
import `in`.sminnovations.attendanceapp.screens.home.ui.componets.NetworkErrorDialog
import `in`.sminnovations.attendanceapp.screens.home.ui.componets.UpdateDialog
import `in`.sminnovations.attendanceapp.screens.home.viewModel.HomeViewModel
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun HomeScreen(
viewModel: HomeViewModel = hiltViewModel(),
modifier: Modifier = Modifier
viewModel: HomeViewModel = hiltViewModel(), modifier: Modifier = Modifier
) {
val uiState by viewModel.uiState.collectAsState()
val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA)
NetworkErrorDialog(
showDialog = !uiState.isConnected,
onRetry = {
viewModel.reStartMonitoring()
val updateInfo by viewModel.updateInfo.collectAsState()
val isUpdateDialogVisible by viewModel.isUpdateDialogVisible.collectAsState()
val isDownloading by viewModel.downloadProgress.collectAsState()
val context = LocalContext.current
NetworkErrorDialog(showDialog = !uiState.isConnected, onRetry = {
viewModel.reStartMonitoring()
})
if (uiState.isConnected) {
viewModel.checkForUpdates(context)
if (isUpdateDialogVisible && updateInfo != null) {
UpdateDialog(
updateInfo = updateInfo!!,
isDownloading = isDownloading,
onDismiss = { viewModel.dismissUpdate() },
onInstall = { url -> viewModel.installUpdate(context, url) }
)
}
)
if (uiState.isConnected){
AttendanceScreenContent(
uiState = uiState,
cameraPermissionState = cameraPermissionState,
@@ -34,6 +52,7 @@ fun HomeScreen(
onQrCodeScanned = viewModel::setQRCodeValue,
modifier = modifier
)
}
}
}