From ed5e701d801cd88d4905a06a6f9e2b3aa6dca510 Mon Sep 17 00:00:00 2001
From: Omar Hatem <omarh.ismail1@gmail.com>
Date: Wed, 13 Nov 2024 11:55:46 +0200
Subject: [PATCH] Potential fix for the race condition of loading a wallet
 while the name in the shared prefs hasn't updated yet (#1801)

---
 lib/reactions/on_current_wallet_change.dart | 7 -------
 lib/store/app_store.dart                    | 7 +++++++
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/reactions/on_current_wallet_change.dart b/lib/reactions/on_current_wallet_change.dart
index 6630f1dfc..d7e6f90c0 100644
--- a/lib/reactions/on_current_wallet_change.dart
+++ b/lib/reactions/on_current_wallet_change.dart
@@ -10,9 +10,6 @@ import 'package:cw_core/transaction_history.dart';
 import 'package:cw_core/balance.dart';
 import 'package:cw_core/transaction_info.dart';
 import 'package:mobx/mobx.dart';
-import 'package:shared_preferences/shared_preferences.dart';
-import 'package:cake_wallet/di.dart';
-import 'package:cake_wallet/entities/preferences_key.dart';
 import 'package:cake_wallet/reactions/check_connection.dart';
 import 'package:cake_wallet/reactions/on_wallet_sync_status_change.dart';
 import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
@@ -65,10 +62,6 @@ void startCurrentWalletChangeReaction(
 
       startWalletSyncStatusChangeReaction(wallet, fiatConversionStore);
       startCheckConnectionReaction(wallet, settingsStore);
-      await getIt.get<SharedPreferences>().setString(PreferencesKey.currentWalletName, wallet.name);
-      await getIt
-          .get<SharedPreferences>()
-          .setInt(PreferencesKey.currentWalletType, serializeToInt(wallet.type));
 
       if (wallet.type == WalletType.monero ||
           wallet.type == WalletType.wownero ||
diff --git a/lib/store/app_store.dart b/lib/store/app_store.dart
index cd8881633..24d5dc6a4 100644
--- a/lib/store/app_store.dart
+++ b/lib/store/app_store.dart
@@ -1,8 +1,10 @@
 import 'package:cake_wallet/core/wallet_connect/web3wallet_service.dart';
 import 'package:cake_wallet/di.dart';
+import 'package:cake_wallet/entities/preferences_key.dart';
 import 'package:cake_wallet/reactions/wallet_connect.dart';
 import 'package:cake_wallet/utils/exception_handler.dart';
 import 'package:cw_core/transaction_info.dart';
+import 'package:cw_core/wallet_type.dart';
 import 'package:mobx/mobx.dart';
 import 'package:cw_core/balance.dart';
 import 'package:cw_core/wallet_base.dart';
@@ -11,6 +13,7 @@ import 'package:cake_wallet/store/wallet_list_store.dart';
 import 'package:cake_wallet/store/authentication_store.dart';
 import 'package:cake_wallet/store/settings_store.dart';
 import 'package:cake_wallet/store/node_list_store.dart';
+import 'package:shared_preferences/shared_preferences.dart';
 
 part 'app_store.g.dart';
 
@@ -47,5 +50,9 @@ abstract class AppStoreBase with Store {
       getIt.get<Web3WalletService>().create();
       await getIt.get<Web3WalletService>().init();
     }
+    await getIt.get<SharedPreferences>().setString(PreferencesKey.currentWalletName, wallet.name);
+    await getIt
+        .get<SharedPreferences>()
+        .setInt(PreferencesKey.currentWalletType, serializeToInt(wallet.type));
   }
 }