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