From ae34d4d5c6ff1141b62b4ec94b0193d9043afe0a Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Thu, 20 Apr 2023 20:23:36 +0200 Subject: [PATCH] Wallet import fix --- .../widgets/fifth_screen/import_dialog.dart | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/lib/ui/widgets/fifth_screen/import_dialog.dart b/lib/ui/widgets/fifth_screen/import_dialog.dart index 7065e5d1..70f50dff 100644 --- a/lib/ui/widgets/fifth_screen/import_dialog.dart +++ b/lib/ui/widgets/fifth_screen/import_dialog.dart @@ -73,14 +73,35 @@ class _ImportDialogState extends State<ImportDialog> { keyEncrypted, pattern.join()); final bool? confirm = await confirmImport(context); if (confirm != null && confirm) { - /* SharedPreferencesHelper().addCesiumCard( - SharedPreferencesHelper().buildCesiumCard( - pubKey: keys['pub'] as String, - seed: keys['seed'] as String));*/ - SharedPreferencesHelper().setDefaultWallet( - SharedPreferencesHelper().buildCesiumCard( - pubKey: keys['pub'] as String, - seed: keys['seed'] as String)); + try { + final dynamic cesiumCards = keys['cesiumCards']; + if (cesiumCards != null) { + final List<dynamic> cesiumCardList = + jsonDecode(cesiumCards as String) + as List<dynamic>; + // ignore: avoid_function_literals_in_foreach_calls + cesiumCardList.forEach((dynamic cesiumCard) { + importWalletToSharedPrefs( + cesiumCard as Map<String, dynamic>); + }); + } else { + importWalletToSharedPrefs(keys); + } + } catch (e, stacktrace) { + logger('Error importing wallet: $e'); + if (!mounted) { + return; + } + context.replaceSnackbar( + content: Text( + tr('error_importing_wallet'), + style: const TextStyle(color: Colors.red), + ), + ); + await Sentry.captureException(e, + stackTrace: stacktrace); + return; + } if (!mounted) { return; } @@ -121,6 +142,20 @@ class _ImportDialogState extends State<ImportDialog> { }); } + void importWalletToSharedPrefs(Map<String, dynamic> cesiumCard) { + final dynamic pub = cesiumCard['pub']; + SharedPreferencesHelper().setDefaultWallet(SharedPreferencesHelper() + .buildCesiumCard( + pubKey: + pub != null ? pub as String : cesiumCard['pubKey'] as String, + seed: cesiumCard['seed'] as String)); + /* In the future, with multicards, use this instead + SharedPreferencesHelper().addCesiumCard(SharedPreferencesHelper() + .buildCesiumCard( + pubKey: cesiumCard['pub'] as String, + seed: cesiumCard['seed'] as String)); */ + } + Future<String> _importWallet(BuildContext context) async { try { // Use file_picker to pick a file -- GitLab