From 6fa8b188e6e53ec29f9a00eb0ee29afe5d66be21 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 18 Nov 2022 11:21:53 +0530 Subject: [PATCH] feat: add a confirmation dialog for key deletion Fixes #2257 --- .../app/passwordstore/ui/pgp/PGPKeyList.kt | 32 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/passwordstore/ui/pgp/PGPKeyList.kt b/app/src/main/java/app/passwordstore/ui/pgp/PGPKeyList.kt index 8f46b8d5..c1b8047a 100644 --- a/app/src/main/java/app/passwordstore/ui/pgp/PGPKeyList.kt +++ b/app/src/main/java/app/passwordstore/ui/pgp/PGPKeyList.kt @@ -6,10 +6,16 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text +import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource @@ -36,6 +42,30 @@ private fun KeyItem( onItemClick: (identifier: GpgIdentifier) -> Unit, modifier: Modifier = Modifier, ) { + var isDeleting by remember { mutableStateOf(false) } + if (isDeleting) { + AlertDialog( + onDismissRequest = { isDeleting = false }, + title = { + Text(text = stringResource(R.string.pgp_key_manager_delete_confirmation_dialog_title)) + }, + confirmButton = { + TextButton( + onClick = { + onItemClick(identifier) + isDeleting = false + } + ) { + Text(text = stringResource(R.string.dialog_yes)) + } + }, + dismissButton = { + TextButton(onClick = { isDeleting = false }) { + Text(text = stringResource(R.string.dialog_no)) + } + }, + ) + } val label = when (identifier) { is GpgIdentifier.KeyId -> identifier.id.toString() @@ -47,7 +77,7 @@ private fun KeyItem( verticalAlignment = Alignment.CenterVertically, ) { Text(text = label) - IconButton(onClick = { onItemClick(identifier) }) { + IconButton(onClick = { isDeleting = true }) { Icon( painter = painterResource(R.drawable.ic_delete_24dp), stringResource(id = R.string.delete) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5a542b64..ad60e177 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -367,5 +367,5 @@ Some error occurred Run garbage collection job PGP Key Manager - + Delete key?