cake_wallet/lib/reactions/on_current_wallet_change.dart

105 lines
3.9 KiB
Dart
Raw Normal View History

import 'package:cake_wallet/entities/fiat_api_mode.dart';
2022-03-30 15:57:04 +00:00
import 'package:cake_wallet/entities/fiat_currency.dart';
import 'package:cake_wallet/entities/update_haven_rate.dart';
2021-12-24 12:37:24 +00:00
import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/balance.dart';
import 'package:cw_core/transaction_info.dart';
2020-09-21 11:50:26 +00:00
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';
2021-12-24 12:37:24 +00:00
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_type.dart';
2020-09-21 11:50:26 +00:00
2022-10-12 17:09:57 +00:00
ReactionDisposer? _onCurrentWalletChangeReaction;
ReactionDisposer? _onCurrentWalletChangeFiatRateUpdateReaction;
//ReactionDisposer _onCurrentWalletAddressChangeReaction;
2020-09-21 11:50:26 +00:00
void startCurrentWalletChangeReaction(AppStore appStore,
SettingsStore settingsStore, FiatConversionStore fiatConversionStore) {
2022-10-12 17:09:57 +00:00
_onCurrentWalletChangeReaction?.reaction.dispose();
_onCurrentWalletChangeFiatRateUpdateReaction?.reaction.dispose();
//_onCurrentWalletAddressChangeReaction?.reaction?dispose();
2021-12-08 11:09:38 +00:00
//_onCurrentWalletAddressChangeReaction = reaction((_) => appStore.wallet.walletAddresses.address,
//(String address) async {
//if (address == appStore.wallet.walletInfo.yatLastUsedAddress) {
// return;
//}
2021-12-08 11:09:38 +00:00
//try {
// final yatStore = getIt.get<YatStore>();
// 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());
//}
//});
2020-09-21 11:50:26 +00:00
_onCurrentWalletChangeReaction = reaction((_) => appStore.wallet, (WalletBase<
2022-10-12 17:09:57 +00:00
Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo>?
wallet) async {
2020-09-21 11:50:26 +00:00
try {
2022-10-12 17:09:57 +00:00
if (wallet == null) {
return;
}
2020-09-21 11:50:26 +00:00
final node = settingsStore.getCurrentNode(wallet.type);
2022-03-30 15:57:04 +00:00
startWalletSyncStatusChangeReaction(wallet, fiatConversionStore);
2020-09-21 11:50:26 +00:00
startCheckConnectionReaction(wallet, settingsStore);
await getIt
.get<SharedPreferences>()
.setString(PreferencesKey.currentWalletName, wallet.name);
await getIt.get<SharedPreferences>().setInt(
PreferencesKey.currentWalletType, serializeToInt(wallet.type));
await wallet.connectToNode(node: node);
2023-03-02 23:47:10 +00:00
if (wallet.type == WalletType.haven) {
await updateHavenRate(fiatConversionStore);
}
2022-03-30 15:57:04 +00:00
if (wallet.walletInfo.address.isEmpty) {
wallet.walletInfo.address = wallet.walletAddresses.address;
if (wallet.walletInfo.isInBox) {
await wallet.walletInfo.save();
}
}
} catch (e) {
print(e.toString());
}
});
2020-09-21 11:50:26 +00:00
_onCurrentWalletChangeFiatRateUpdateReaction =
reaction((_) => appStore.wallet, (WalletBase<Balance,
2022-10-12 17:09:57 +00:00
TransactionHistoryBase<TransactionInfo>, TransactionInfo>?
wallet) async {
try {
if (wallet == null || settingsStore.fiatApiMode == FiatApiMode.disabled) {
2022-10-12 17:09:57 +00:00
return;
}
fiatConversionStore.prices[wallet.currency] = 0;
fiatConversionStore.prices[wallet.currency] =
await FiatConversionService.fetchPrice(
crypto: wallet.currency,
fiat: settingsStore.fiatCurrency,
torOnly: settingsStore.fiatApiMode == FiatApiMode.torOnly);
2020-09-21 11:50:26 +00:00
} catch (e) {
print(e.toString());
}
});
}