diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt index e72f6ff..1ebc0c3 100644 --- a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt @@ -1,14 +1,20 @@ package `in`.sminnovations.attendanceapp.screens.home.ui.componets +import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator + +import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.* @@ -19,18 +25,21 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import `in`.sminnovations.attendanceapp.utils.UpdateInfo - - @Composable fun UpdateDialog( updateInfo: UpdateInfo, - isDownloading: Boolean, + downloadProgress: Float, onDismiss: () -> Unit, onInstall: (String) -> Unit, modifier: Modifier = Modifier ) { + val isinstallPressed = remember { mutableStateOf(false) } //not a smart approach but it works AlertDialog( - onDismissRequest = { if (!isDownloading) onDismiss() }, + + onDismissRequest = { + // Only allow dismissing if not downloading + if (downloadProgress == 0f) onDismiss() + }, modifier = modifier, title = { Text( @@ -53,7 +62,7 @@ fun UpdateDialog( modifier = Modifier.padding(vertical = 8.dp) ) Text( - text = "Release Note :", + text = "Release Note:", style = MaterialTheme.typography.bodyMedium, textAlign = TextAlign.Start, modifier = Modifier.padding(vertical = 8.dp), @@ -67,10 +76,9 @@ fun UpdateDialog( fontWeight = FontWeight.SemiBold, fontFamily = FontFamily.Monospace ) - if (isDownloading) { - CircularProgressIndicator( - modifier = Modifier.padding(top = 16.dp) - ) + if (downloadProgress > 0f) { + Spacer(modifier = Modifier.height(8.dp)) + LinearProgressIndicator(progress = downloadProgress) } } }, @@ -80,19 +88,29 @@ fun UpdateDialog( horizontalArrangement = Arrangement.End ) { Button( - onClick = { onInstall(updateInfo.url) }, - enabled = !isDownloading + onClick = { + onInstall(updateInfo.url) + isinstallPressed.value = true }, + enabled = downloadProgress == 0f || downloadProgress == 1f ) { - Text(if (isDownloading) "Downloading..." else "Install") + AnimatedVisibility(visible = isinstallPressed.value && downloadProgress ==0f) { + CircularProgressIndicator(color = MaterialTheme.colorScheme.surface) + } + Text( + text = if (downloadProgress > 0f && downloadProgress <1f) "Downloading..." else "Install", + modifier = Modifier.padding(start = if(isinstallPressed.value && downloadProgress ==0f) 10.dp else 0.dp ) + ) + } + } }, dismissButton = { -// if (!isDownloading) { -// Button(onClick = onDismiss) { -// Text("Later") -// } -// } + if (downloadProgress == 0f) { + Button(onClick = onDismiss) { + Text("Later") + } + } } ) }