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.BottomNavigationBar
|
||||||
import `in`.sminnovations.attendanceapp.navigation.Navigation
|
import `in`.sminnovations.attendanceapp.navigation.Navigation
|
||||||
import `in`.sminnovations.attendanceapp.navigation.data.navItems
|
import `in`.sminnovations.attendanceapp.navigation.data.navItems
|
||||||
|
import `in`.sminnovations.attendanceapp.screens.home.ui.HomeScreen
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun MainScreen(
|
fun MainScreen(
|
||||||
) {
|
) {
|
||||||
val navController = rememberNavController()
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
bottomBar = {
|
|
||||||
BottomNavigationBar(navController, navItems)
|
|
||||||
},
|
|
||||||
content = { padding ->
|
content = { padding ->
|
||||||
Box(modifier = Modifier.padding(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.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||||
import com.google.accompanist.permissions.rememberPermissionState
|
import com.google.accompanist.permissions.rememberPermissionState
|
||||||
|
|
||||||
import `in`.sminnovations.attendanceapp.screens.home.ui.componets.AttendanceScreenContent
|
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.NetworkErrorDialog
|
||||||
|
import `in`.sminnovations.attendanceapp.screens.home.ui.componets.UpdateDialog
|
||||||
import `in`.sminnovations.attendanceapp.screens.home.viewModel.HomeViewModel
|
import `in`.sminnovations.attendanceapp.screens.home.viewModel.HomeViewModel
|
||||||
|
|
||||||
@OptIn(ExperimentalPermissionsApi::class)
|
@OptIn(ExperimentalPermissionsApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun HomeScreen(
|
fun HomeScreen(
|
||||||
viewModel: HomeViewModel = hiltViewModel(),
|
viewModel: HomeViewModel = hiltViewModel(), modifier: Modifier = Modifier
|
||||||
modifier: Modifier = Modifier
|
|
||||||
) {
|
) {
|
||||||
val uiState by viewModel.uiState.collectAsState()
|
val uiState by viewModel.uiState.collectAsState()
|
||||||
val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA)
|
val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA)
|
||||||
NetworkErrorDialog(
|
val updateInfo by viewModel.updateInfo.collectAsState()
|
||||||
showDialog = !uiState.isConnected,
|
val isUpdateDialogVisible by viewModel.isUpdateDialogVisible.collectAsState()
|
||||||
onRetry = {
|
val isDownloading by viewModel.downloadProgress.collectAsState()
|
||||||
viewModel.reStartMonitoring()
|
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(
|
AttendanceScreenContent(
|
||||||
uiState = uiState,
|
uiState = uiState,
|
||||||
cameraPermissionState = cameraPermissionState,
|
cameraPermissionState = cameraPermissionState,
|
||||||
@@ -34,6 +52,7 @@ fun HomeScreen(
|
|||||||
onQrCodeScanned = viewModel::setQRCodeValue,
|
onQrCodeScanned = viewModel::setQRCodeValue,
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user