mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-16 17:27:39 +00:00
154 lines
4.8 KiB
Dart
154 lines
4.8 KiB
Dart
/*
|
|
* This file is part of Stack Wallet.
|
|
*
|
|
* Copyright (c) 2023 Cypher Stack
|
|
* All Rights Reserved.
|
|
* The code is distributed under GPLv3 license, see LICENSE file for details.
|
|
* Generated by Cypher Stack on 2023-05-26
|
|
*
|
|
*/
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../utilities/enums/stack_restoring_status.dart';
|
|
import '../wallets/wallet/wallet.dart';
|
|
import 'wallet_restore_state.dart';
|
|
|
|
class StackRestoringUIState extends ChangeNotifier {
|
|
bool _walletsWasSet = false;
|
|
bool get done {
|
|
if (!_walletsWasSet) {
|
|
return false;
|
|
}
|
|
|
|
bool _done = (_decryption == StackRestoringStatus.success) ||
|
|
(_decryption == StackRestoringStatus.failed);
|
|
_done &= (_addressBook == StackRestoringStatus.success) ||
|
|
(_addressBook == StackRestoringStatus.failed);
|
|
_done &= (_preferences == StackRestoringStatus.success) ||
|
|
(_preferences == StackRestoringStatus.failed);
|
|
_done &= (_trades == StackRestoringStatus.success) ||
|
|
(_trades == StackRestoringStatus.failed);
|
|
_done &= (_nodes == StackRestoringStatus.success) ||
|
|
(_nodes == StackRestoringStatus.failed);
|
|
|
|
for (final wallet in _walletStates.values) {
|
|
_done &= (wallet.restoringState == StackRestoringStatus.success) ||
|
|
(wallet.restoringState == StackRestoringStatus.failed);
|
|
}
|
|
|
|
return _done;
|
|
}
|
|
|
|
bool get succeeded {
|
|
if (!_walletsWasSet) {
|
|
return false;
|
|
}
|
|
|
|
bool _succeeded = _decryption == StackRestoringStatus.success;
|
|
_succeeded &= _addressBook == StackRestoringStatus.success;
|
|
_succeeded &= _preferences == StackRestoringStatus.success;
|
|
_succeeded &= _trades == StackRestoringStatus.success;
|
|
_succeeded &= _nodes == StackRestoringStatus.success;
|
|
|
|
for (final wallet in _walletStates.values) {
|
|
_succeeded &= wallet.restoringState == StackRestoringStatus.success;
|
|
}
|
|
|
|
return _succeeded;
|
|
}
|
|
|
|
StackRestoringStatus _decryption = StackRestoringStatus.waiting;
|
|
StackRestoringStatus get decryption => _decryption;
|
|
set decryption(StackRestoringStatus state) {
|
|
_decryption = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
StackRestoringStatus _addressBook = StackRestoringStatus.waiting;
|
|
StackRestoringStatus get addressBook => _addressBook;
|
|
set addressBook(StackRestoringStatus state) {
|
|
_addressBook = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
StackRestoringStatus _preferences = StackRestoringStatus.waiting;
|
|
StackRestoringStatus get preferences => _preferences;
|
|
set preferences(StackRestoringStatus state) {
|
|
_preferences = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
StackRestoringStatus _trades = StackRestoringStatus.waiting;
|
|
StackRestoringStatus get trades => _trades;
|
|
set trades(StackRestoringStatus state) {
|
|
_trades = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
StackRestoringStatus _nodes = StackRestoringStatus.waiting;
|
|
StackRestoringStatus get nodes => _nodes;
|
|
set nodes(StackRestoringStatus state) {
|
|
_nodes = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
List<Wallet> get wallets {
|
|
final List<Wallet> _wallets = [];
|
|
for (final item in _walletStates.values) {
|
|
if (item.wallet != null) {
|
|
_wallets.add(item.wallet!);
|
|
}
|
|
}
|
|
return _wallets;
|
|
}
|
|
|
|
Map<String, WalletRestoreState> _walletStates = {};
|
|
set walletStates(Map<String, WalletRestoreState> state) {
|
|
_walletStates = state;
|
|
_walletStateProviders = {};
|
|
for (final wallet in _walletStates.values) {
|
|
_walletStateProviders[wallet.walletId] =
|
|
ChangeNotifierProvider<WalletRestoreState>((_) => wallet);
|
|
}
|
|
_walletsWasSet = true;
|
|
notifyListeners();
|
|
}
|
|
|
|
Map<String, ChangeNotifierProvider<WalletRestoreState>>
|
|
_walletStateProviders = {};
|
|
Map<String, ChangeNotifierProvider<WalletRestoreState>>
|
|
get walletStateProviders => _walletStateProviders;
|
|
|
|
WalletRestoreState getWalletRestoreState(String walletId) {
|
|
return _walletStates[walletId]!;
|
|
}
|
|
|
|
ChangeNotifierProvider<WalletRestoreState> getWalletRestoreStateProvider(
|
|
String walletId,
|
|
) {
|
|
return _walletStateProviders[walletId]!;
|
|
}
|
|
|
|
void update({
|
|
required String walletId,
|
|
required StackRestoringStatus restoringStatus,
|
|
Wallet? wallet,
|
|
String? address,
|
|
String? mnemonic,
|
|
String? mnemonicPassphrase,
|
|
int? height,
|
|
}) {
|
|
_walletStates[walletId]!.restoringState = restoringStatus;
|
|
_walletStates[walletId]!.wallet = wallet ?? _walletStates[walletId]!.wallet;
|
|
_walletStates[walletId]!.address =
|
|
address ?? _walletStates[walletId]!.address;
|
|
_walletStates[walletId]!.mnemonic =
|
|
mnemonic ?? _walletStates[walletId]!.mnemonic;
|
|
_walletStates[walletId]!.mnemonicPassphrase =
|
|
mnemonicPassphrase ?? _walletStates[walletId]!.mnemonicPassphrase;
|
|
_walletStates[walletId]!.height = height ?? _walletStates[walletId]!.height;
|
|
notifyListeners();
|
|
}
|
|
}
|