import 'package:cake_wallet/entities/fiat_api_mode.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/entities/update_haven_rate.dart'; 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'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/core/fiat_conversion_service.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_type.dart'; ReactionDisposer? _onCurrentWalletChangeReaction; ReactionDisposer? _onCurrentWalletChangeFiatRateUpdateReaction; //ReactionDisposer _onCurrentWalletAddressChangeReaction; void startCurrentWalletChangeReaction(AppStore appStore, SettingsStore settingsStore, FiatConversionStore fiatConversionStore) { _onCurrentWalletChangeReaction?.reaction.dispose(); _onCurrentWalletChangeFiatRateUpdateReaction?.reaction.dispose(); //_onCurrentWalletAddressChangeReaction?.reaction?dispose(); //_onCurrentWalletAddressChangeReaction = reaction((_) => appStore.wallet.walletAddresses.address, //(String address) async { //if (address == appStore.wallet.walletInfo.yatLastUsedAddress) { // return; //} //try { // final yatStore = getIt.get(); // await updateEmojiIdAddress( // appStore.wallet.walletInfo.yatEmojiId, // appStore.wallet.walletAddresses.address, // yatStore.apiKey, // appStore.wallet.type // ); // appStore.wallet.walletInfo.yatLastUsedAddress = address; // await appStore.wallet.walletInfo.save(); //} catch (e) { // print(e.toString()); //} //}); _onCurrentWalletChangeReaction = reaction((_) => appStore.wallet, (WalletBase< Balance, TransactionHistoryBase, TransactionInfo>? wallet) async { try { if (wallet == null) { return; } final node = settingsStore.getCurrentNode(wallet.type); startWalletSyncStatusChangeReaction(wallet, fiatConversionStore); startCheckConnectionReaction(wallet, settingsStore); await getIt .get() .setString(PreferencesKey.currentWalletName, wallet.name); await getIt.get().setInt( PreferencesKey.currentWalletType, serializeToInt(wallet.type)); await wallet.connectToNode(node: node); if (wallet.type == WalletType.haven) { settingsStore.fiatCurrency = FiatCurrency.usd; await updateHavenRate(fiatConversionStore); } if (wallet.walletInfo.address?.isEmpty ?? true) { wallet.walletInfo.address = wallet.walletAddresses.address; if (wallet.walletInfo.isInBox) { await wallet.walletInfo.save(); } } } catch (e) { print(e.toString()); } }); _onCurrentWalletChangeFiatRateUpdateReaction = reaction((_) => appStore.wallet, (WalletBase, TransactionInfo>? wallet) async { try { if (wallet == null || settingsStore.fiatApiMode == FiatApiMode.disabled) { return; } fiatConversionStore.prices[wallet.currency] = 0; fiatConversionStore.prices[wallet.currency] = await FiatConversionService.fetchPrice( wallet.currency, settingsStore.fiatCurrency); } catch (e) { print(e.toString()); } }); }