Cw 199 add wallet deletion confirmation (#555)

* Fix Slidable for deleting wallet Add confirmation dialog for deleting wallet * Swap confirmation dialog buttons to be consistent with other alerts

Omar Hatem committed Oct 21, 2022 at 22:06 UTC c34c3b0737d268a4116d701b110181115db3fedd
16 files changed +95 -39
lib/src/screens/wallet_list/wallet_list_page.dart
+50 -24
@@ -156,22 +156,14 @@ class WalletListBodyState extends State<WalletListBody> {
156 ),
157 ));
158
159 - // FIX-ME: Slidable for current
160 - return row;
161 - // return wallet.isCurrent
162 - // ? row
163 - // : Slidable(
164 - // key: Key('${wallet.key}'),
165 - // actionPane: SlidableDrawerActionPane(),
166 - // child: row,
167 - // secondaryActions: <Widget>[
168 - // IconSlideAction(
169 - // caption: S.of(context).delete,
170 - // color: Colors.red,
171 - // icon: CupertinoIcons.delete,
172 - // onTap: () async => _removeWallet(wallet),
173 - // )
174 - // ]);
159 + return wallet.isCurrent
160 + ? row
161 + : Slidable(
162 + key: Key('${wallet.key}'),
163 + startActionPane: _actionPane(wallet),
164 + endActionPane: _actionPane(wallet),
165 + child: row,
166 + );
167 }),
168 ),
169 ),
@@ -256,14 +248,34 @@ class WalletListBodyState extends State<WalletListBody> {
248 return;
249 }
250
259 - try {
260 - auth.changeProcessText(
261 - S.of(context).wallet_list_removing_wallet(wallet.name));
262 - await widget.walletListViewModel.remove(wallet);
263 - } catch (e) {
264 - auth.changeProcessText(S
265 - .of(context)
266 - .wallet_list_failed_to_remove(wallet.name, e.toString()));
251 + bool confirmed = false;
252 +
253 + await showPopUp<void>(
254 + context: context,
255 + builder: (BuildContext context) {
256 + return AlertWithTwoActions(
257 + alertTitle: S.of(context).delete_wallet,
258 + alertContent: S.of(context).delete_wallet_confirm_message(wallet.name),
259 + leftButtonText: S.of(context).cancel,
260 + rightButtonText: S.of(context).delete,
261 + actionLeftButton: () => Navigator.of(context).pop(),
262 + actionRightButton: () {
263 + confirmed = true;
264 + Navigator.of(context).pop();
265 + },
266 + );
267 + });
268 +
269 + if (confirmed) {
270 + try {
271 + auth.changeProcessText(
272 + S.of(context).wallet_list_removing_wallet(wallet.name));
273 + await widget.walletListViewModel.remove(wallet);
274 + } catch (e) {
275 + auth.changeProcessText(S
276 + .of(context)
277 + .wallet_list_failed_to_remove(wallet.name, e.toString()));
278 + }
279 }
280
281 auth.close();
@@ -279,4 +291,18 @@ class WalletListBodyState extends State<WalletListBody> {
291 // _progressBar?.dismiss();
292 // _progressBar = null;
293 }
294 +
295 + ActionPane _actionPane(WalletListItem wallet) => ActionPane(
296 + motion: const ScrollMotion(),
297 + extentRatio: 0.3,
298 + children: [
299 + SlidableAction(
300 + onPressed: (_) => _removeWallet(wallet),
301 + backgroundColor: Colors.red,
302 + foregroundColor: Colors.white,
303 + icon: CupertinoIcons.delete,
304 + label: S.of(context).delete,
305 + ),
306 + ],
307 + );
308 }
res/values/strings_de.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Wähle aus verfügbaren Optionen:",
644 "custom_redeem_amount": "Benutzerdefinierter Einlösungsbetrag",
645 "add_custom_redemption": "Benutzerdefinierte Einlösung hinzufügen",
646 - "remaining": "Rest"
646 + "remaining": "Rest",
647 + "delete_wallet": "Geldbörse löschen",
648 + "delete_wallet_confirm_message" : "Sind Sie sicher, dass Sie das ${wallet_name} Wallet löschen möchten?"
649 }
res/values/strings_en.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Choose from the available options:",
644 "custom_redeem_amount": "Custom Redeem Amount",
645 "add_custom_redemption": "Add Custom Redemption",
646 - "remaining": "remaining"
646 + "remaining": "remaining",
647 + "delete_wallet": "Delete wallet",
648 + "delete_wallet_confirm_message" : "Are you sure that you want to delete ${wallet_name} wallet?"
649 }
res/values/strings_es.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Elija entre las opciones disponibles:",
644 "custom_redeem_amount": "Cantidad de canje personalizada",
645 "add_custom_redemption": "Agregar redención personalizada",
646 - "remaining": "restante"
646 + "remaining": "restante",
647 + "delete_wallet": "Eliminar billetera",
648 + "delete_wallet_confirm_message" : "¿Está seguro de que desea eliminar la billetera ${wallet_name}?"
649 }
res/values/strings_fr.arb
+3 -1
@@ -641,5 +641,7 @@
641 "choose_from_available_options": "Choisissez parmi les options disponibles :",
642 "custom_redeem_amount": "Montant d'échange personnalisé",
643 "add_custom_redemption": "Ajouter un remboursement personnalisé",
644 - "remaining": "restant"
644 + "remaining": "restant",
645 + "delete_wallet": "Supprimer le portefeuille",
646 + "delete_wallet_confirm_message" : "Êtes-vous sûr de vouloir supprimer le portefeuille ${wallet_name}?"
647 }
res/values/strings_hi.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "उपलब्ध विकल्पों में से चुनें:",
644 "custom_redeem_amount": "कस्टम रिडीम राशि",
645 "add_custom_redemption": "कस्टम रिडेम्पशन जोड़ें",
646 - "remaining": "शेष"
646 + "remaining": "शेष",
647 + "delete_wallet": "वॉलेट हटाएं",
648 + "delete_wallet_confirm_message" : "क्या आप वाकई ${wallet_name} वॉलेट हटाना चाहते हैं?"
649 }
res/values/strings_hr.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Odaberite neku od dostupnih opcija:",
644 "custom_redeem_amount": "Prilagođeni iznos otkupa",
645 "add_custom_redemption": "Dodaj prilagođeni otkup",
646 - "remaining": "preostalo"
646 + "remaining": "preostalo",
647 + "delete_wallet": "Izbriši novčanik",
648 + "delete_wallet_confirm_message" : "Jeste li sigurni da želite izbrisati ${wallet_name} novčanik?"
649 }
res/values/strings_it.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Scegli tra le opzioni disponibili:",
644 "custom_redeem_amount": "Importo di riscatto personalizzato",
645 "add_custom_redemption": "Aggiungi riscatto personalizzato",
646 - "remaining": "rimanente"
646 + "remaining": "rimanente",
647 + "delete_wallet": "Elimina portafoglio",
648 + "delete_wallet_confirm_message" : "Sei sicuro di voler eliminare il portafoglio ${wallet_name}?"
649 }
res/values/strings_ja.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "利用可能なオプションから選択してください:",
644 "custom_redeem_amount": "カスタム交換金額",
645 "add_custom_redemption": "カスタム引き換えを追加",
646 - "remaining": "残り"
646 + "remaining": "残り",
647 + "delete_wallet": "ウォレットを削除",
648 + "delete_wallet_confirm_message" : "${wallet_name} ウォレットを削除してもよろしいですか?"
649 }
res/values/strings_ko.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "사용 가능한 옵션에서 선택:",
644 "custom_redeem_amount": "사용자 지정 상환 금액",
645 "add_custom_redemption": "사용자 지정 상환 추가",
646 - "remaining": "남은"
646 + "remaining": "남은",
647 + "delete_wallet": "지갑 삭제",
648 + "delete_wallet_confirm_message" : "${wallet_name} 지갑을 삭제하시겠습니까?"
649 }
res/values/strings_nl.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Kies uit de beschikbare opties:",
644 "custom_redeem_amount": "Aangepast inwisselbedrag",
645 "add_custom_redemption": "Voeg aangepaste inwisseling toe",
646 - "remaining": "resterende"
646 + "remaining": "resterende",
647 + "delete_wallet": "Portemonnee verwijderen",
648 + "delete_wallet_confirm_message" : "Weet u zeker dat u de portemonnee van ${wallet_name} wilt verwijderen?"
649 }
res/values/strings_pl.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Wybierz z dostępnych opcji:",
644 "custom_redeem_amount": "Niestandardowa kwota wykorzystania",
645 "add_custom_redemption": "Dodaj niestandardowe wykorzystanie",
646 - "remaining": "pozostałe"
646 + "remaining": "pozostałe",
647 + "delete_wallet": "Usuń portfel",
648 + "delete_wallet_confirm_message" : "Czy na pewno chcesz usunąć portfel ${wallet_name}?"
649 }
res/values/strings_pt.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Escolha entre as opções disponíveis:",
644 "custom_redeem_amount": "Valor de resgate personalizado",
645 "add_custom_redemption": "Adicionar resgate personalizado",
646 - "remaining": "restante"
646 + "remaining": "restante",
647 + "delete_wallet": "Excluir carteira",
648 + "delete_wallet_confirm_message" : "Tem certeza de que deseja excluir a carteira ${wallet_name}?"
649 }
res/values/strings_ru.arb
+3 -1
@@ -643,5 +643,7 @@
643 "choose_from_available_options": "Выберите из доступных вариантов:",
644 "custom_redeem_amount": "Пользовательская сумма погашения",
645 "add_custom_redemption": "Добавить пользовательское погашение",
646 - "remaining": "осталось"
646 + "remaining": "осталось",
647 + "delete_wallet": "Удалить кошелек",
648 + "delete_wallet_confirm_message" : "Вы уверены, что хотите удалить кошелек ${wallet_name}?"
649 }
res/values/strings_uk.arb
+3 -1
@@ -642,5 +642,7 @@
642 "choose_from_available_options": "Виберіть із доступних варіантів:",
643 "custom_redeem_amount": "Власна сума викупу",
644 "add_custom_redemption": "Додати спеціальне погашення",
645 - "remaining": "залишилося"
645 + "remaining": "залишилося",
646 + "delete_wallet": "Видалити гаманець",
647 + "delete_wallet_confirm_message" : "Ви впевнені, що хочете видалити гаманець ${wallet_name}?"
648 }
res/values/strings_zh.arb
+3 -1
@@ -641,5 +641,7 @@
641 "choose_from_available_options": "从可用选项中选择:",
642 "custom_redeem_amount": "自定义兑换金额",
643 "add_custom_redemption": "添加自定义兑换",
644 - "remaining": "剩余"
644 + "remaining": "剩余",
645 + "delete_wallet": "删除钱包",
646 + "delete_wallet_confirm_message" : "您确定要删除 ${wallet_name} 钱包吗?"
647 }