feat: add a confirmation dialog for key deletion

Fixes #2257
This commit is contained in:
Harsh Shandilya 2022-11-18 11:21:53 +05:30
parent 35a6e3b8ff
commit 6fa8b188e6
No known key found for this signature in database
2 changed files with 32 additions and 2 deletions

View file

@ -6,10 +6,16 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable 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.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@ -36,6 +42,30 @@ private fun KeyItem(
onItemClick: (identifier: GpgIdentifier) -> Unit, onItemClick: (identifier: GpgIdentifier) -> Unit,
modifier: Modifier = Modifier, 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 = val label =
when (identifier) { when (identifier) {
is GpgIdentifier.KeyId -> identifier.id.toString() is GpgIdentifier.KeyId -> identifier.id.toString()
@ -47,7 +77,7 @@ private fun KeyItem(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Text(text = label) Text(text = label)
IconButton(onClick = { onItemClick(identifier) }) { IconButton(onClick = { isDeleting = true }) {
Icon( Icon(
painter = painterResource(R.drawable.ic_delete_24dp), painter = painterResource(R.drawable.ic_delete_24dp),
stringResource(id = R.string.delete) stringResource(id = R.string.delete)

View file

@ -367,5 +367,5 @@
<string name="pwgen_some_error_occurred">Some error occurred</string> <string name="pwgen_some_error_occurred">Some error occurred</string>
<string name="git_run_gc_job">Run garbage collection job</string> <string name="git_run_gc_job">Run garbage collection job</string>
<string name="activity_label_pgp_key_manager">PGP Key Manager</string> <string name="activity_label_pgp_key_manager">PGP Key Manager</string>
<string name="pgp_key_manager_delete_confirmation_dialog_title">Delete key?</string>
</resources> </resources>