UpdateDialog

This commit is contained in:
sathwikcs
2025-02-06 15:23:01 +05:30
parent 74300239a3
commit 057f71e292

View File

@@ -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")
}
}
}
)
}