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 {