Update Settings Store attributes within reload function to get latest shared prefs data
OmarHatem committed
Dec 9, 2022 at 15:57 UTC
3c1f6193951afdf5b1ad72585017210ec5ce3639
1 file changed
+67
-23
lib/store/settings_store.dart
+67
-23
@@ -121,7 +121,7 @@ abstract class SettingsStoreBase with Store {
121
122
this
123
.nodes
124
- .observe((change) {
124
+ .observe((change) {
125
if (change.newValue != null && change.key != null) {
126
_saveCurrentNode(change.newValue!, change.key!);
127
}
@@ -304,34 +304,78 @@ abstract class SettingsStoreBase with Store {
304
shouldShowYatPopup: shouldShowYatPopup);
305
}
306
307
- Future<void> reload(
308
- {required Box<Node> nodeSource,
309
- FiatCurrency initialFiatCurrency = FiatCurrency.usd,
310
- TransactionPriority? initialMoneroTransactionPriority,
311
- TransactionPriority? initialBitcoinTransactionPriority,
312
- BalanceDisplayMode initialBalanceDisplayMode = BalanceDisplayMode.availableBalance}) async {
313
- if (initialBitcoinTransactionPriority == null) {
314
- initialBitcoinTransactionPriority = bitcoin?.getMediumTransactionPriority();
307
+ Future<void> reload({required Box<Node> nodeSource}) async {
308
+
309
+ final sharedPreferences = await getIt.getAsync<SharedPreferences>();
310
+
311
+ fiatCurrency = FiatCurrency.deserialize(
312
+ raw: sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey)!);
313
+
314
+ priority[WalletType.monero] = monero?.deserializeMoneroTransactionPriority(
315
+ raw: sharedPreferences.getInt(PreferencesKey.moneroTransactionPriority)!) ??
316
+ priority[WalletType.monero]!;
317
+ priority[WalletType.bitcoin] = bitcoin?.deserializeBitcoinTransactionPriority(
318
+ sharedPreferences.getInt(PreferencesKey.moneroTransactionPriority)!) ??
319
+ priority[WalletType.bitcoin]!;
320
+ // TODO: Add litecoin and haven after CW-118 is merged
321
+
322
+ balanceDisplayMode = BalanceDisplayMode.deserialize(
323
+ raw: sharedPreferences
324
+ .getInt(PreferencesKey.currentBalanceDisplayModeKey)!);
325
+ shouldSaveRecipientAddress =
326
+ sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? shouldSaveRecipientAddress;
327
+ allowBiometricalAuthentication = sharedPreferences
328
+ .getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
329
+ allowBiometricalAuthentication;
330
+ disableExchange = sharedPreferences.getBool(PreferencesKey.disableExchangeKey) ?? disableExchange;
331
+ final legacyTheme =
332
+ (sharedPreferences.getBool(PreferencesKey.isDarkThemeLegacy) ?? false)
333
+ ? ThemeType.dark.index
334
+ : ThemeType.bright.index;
335
+ currentTheme = ThemeList.deserialize(
336
+ raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ??
337
+ legacyTheme);
338
+ actionlistDisplayMode = ObservableList<ActionListDisplayMode>();
339
+ actionlistDisplayMode.addAll(deserializeActionlistDisplayModes(
340
+ sharedPreferences.getInt(PreferencesKey.displayActionListModeKey) ??
341
+ defaultActionsMode));
342
+ var pinLength = sharedPreferences.getInt(PreferencesKey.currentPinLength);
343
+ // If no value
344
+ if (pinLength == null || pinLength == 0) {
345
+ pinLength = pinCodeLength;
346
}
347
+ pinCodeLength = pinLength;
348
317
- if (initialMoneroTransactionPriority == null) {
318
- initialMoneroTransactionPriority = monero?.getDefaultTransactionPriority();
349
+ languageCode = sharedPreferences.getString(PreferencesKey.currentLanguageCode) ?? languageCode;
350
+ shouldShowYatPopup = sharedPreferences.getBool(PreferencesKey.shouldShowYatPopup) ?? shouldShowYatPopup;
351
+
352
+ final nodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey);
353
+ final bitcoinElectrumServerId = sharedPreferences
354
+ .getInt(PreferencesKey.currentBitcoinElectrumSererIdKey);
355
+ final litecoinElectrumServerId = sharedPreferences
356
+ .getInt(PreferencesKey.currentLitecoinElectrumSererIdKey);
357
+ final havenNodeId = sharedPreferences
358
+ .getInt(PreferencesKey.currentHavenNodeIdKey);
359
+ final moneroNode = nodeSource.get(nodeId);
360
+ final bitcoinElectrumServer = nodeSource.get(bitcoinElectrumServerId);
361
+ final litecoinElectrumServer = nodeSource.get(litecoinElectrumServerId);
362
+ final havenNode = nodeSource.get(havenNodeId);
363
+
364
+ if (moneroNode != null) {
365
+ nodes[WalletType.monero] = moneroNode;
366
}
367
321
- final isBitcoinBuyEnabled = (secrets.wyreSecretKey.isNotEmpty) &&
322
- (secrets.wyreApiKey.isNotEmpty) &&
323
- (secrets.wyreAccountId.isNotEmpty);
368
+ if (bitcoinElectrumServer != null) {
369
+ nodes[WalletType.bitcoin] = bitcoinElectrumServer;
370
+ }
371
325
- final settings = await SettingsStoreBase.load(
326
- nodeSource: nodeSource,
327
- isBitcoinBuyEnabled: isBitcoinBuyEnabled,
328
- initialBalanceDisplayMode: initialBalanceDisplayMode,
329
- initialFiatCurrency: initialFiatCurrency,
330
- initialMoneroTransactionPriority: initialMoneroTransactionPriority,
331
- initialBitcoinTransactionPriority: initialBitcoinTransactionPriority);
372
+ if (litecoinElectrumServer != null) {
373
+ nodes[WalletType.litecoin] = litecoinElectrumServer;
374
+ }
375
333
- getIt.unregister<SettingsStore>();
334
- getIt.registerSingleton<SettingsStore>(settings);
376
+ if (havenNode != null) {
377
+ nodes[WalletType.haven] = havenNode;
378
+ }
379
}
380
381
Future<void> _saveCurrentNode(Node node, WalletType walletType) async {