From 6054ba4ac17afffa56f623f5412b2900fba627f1 Mon Sep 17 00:00:00 2001 From: sathwikcs <85106054+sathwikcs@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:50:06 +0530 Subject: [PATCH] UpdateDialog --- .../home/ui/componets/UpdateDialogue.kt | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt 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 new file mode 100644 index 0000000..57d6586 --- /dev/null +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/ui/componets/UpdateDialogue.kt @@ -0,0 +1,81 @@ +package `in`.sminnovations.attendanceapp.screens.home.ui.componets + + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text + +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import `in`.sminnovations.attendanceapp.main.UpdateInfo + + +@Composable +fun UpdateDialog( + updateInfo: UpdateInfo, + isDownloading: Boolean, + onDismiss: () -> Unit, + onInstall: (String) -> Unit, + modifier: Modifier = Modifier +) { + AlertDialog( + onDismissRequest = onDismiss, + modifier = modifier, + title = { + Text( + text = "Update Available", + style = MaterialTheme.typography.headlineSmall, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth() + ) + }, + text = { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "A new version (${updateInfo.version}) is available. Please update.", + style = MaterialTheme.typography.bodyMedium, + textAlign = TextAlign.Center, + modifier = Modifier.padding(vertical = 8.dp) + ) + if (isDownloading) { + CircularProgressIndicator( + modifier = Modifier.padding(top = 16.dp) + ) + } + } + }, + confirmButton = { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.End + ) { + Button( + onClick = { onInstall(updateInfo.url) }, + enabled = !isDownloading + ) { + Text(if (isDownloading) "Downloading..." else "Install") + } + } + }, + dismissButton = { + if (!isDownloading) { + Button(onClick = onDismiss) { + Text("Later") + } + } + } + ) +}