cake_wallet/lib/reactions/on_wallet_sync_status_change.dart

43 lines
1.5 KiB
Dart
Raw Normal View History

2022-01-21 13:02:00 +00:00
import 'package:cake_wallet/di.dart';
2022-03-30 15:57:04 +00:00
import 'package:cake_wallet/entities/update_haven_rate.dart';
2022-01-21 13:02:00 +00:00
import 'package:cake_wallet/entities/wake_lock.dart';
2022-03-30 15:57:04 +00:00
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
import 'package:cw_core/wallet_type.dart';
2020-09-21 11:50:26 +00:00
import 'package:mobx/mobx.dart';
2021-12-24 12:37:24 +00:00
import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/balance.dart';
import 'package:cw_core/transaction_info.dart';
import 'package:cw_core/sync_status.dart';
2022-01-21 13:02:00 +00:00
import 'package:flutter/services.dart';
2020-09-21 11:50:26 +00:00
2022-10-12 17:09:57 +00:00
ReactionDisposer? _onWalletSyncStatusChangeReaction;
2020-09-21 11:50:26 +00:00
void startWalletSyncStatusChangeReaction(
WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
2022-03-30 15:57:04 +00:00
TransactionInfo> wallet,
FiatConversionStore fiatConversionStore) {
2022-01-24 15:21:52 +00:00
final _wakeLock = getIt.get<WakeLock>();
2022-10-12 17:09:57 +00:00
_onWalletSyncStatusChangeReaction?.reaction.dispose();
2020-09-21 11:50:26 +00:00
_onWalletSyncStatusChangeReaction =
reaction((_) => wallet.syncStatus, (SyncStatus status) async {
try {
if (status is ConnectedSyncStatus) {
await wallet.startSync();
2022-03-30 15:57:04 +00:00
if (wallet.type == WalletType.haven) {
await updateHavenRate(fiatConversionStore);
}
2022-03-30 15:57:04 +00:00
}
if (status is SyncingSyncStatus) {
await _wakeLock.enableWake();
}
if (status is SyncedSyncStatus || status is FailedSyncStatus) {
await _wakeLock.disableWake();
}
} catch(e) {
print(e.toString());
2022-01-21 13:02:00 +00:00
}
});
}