| 1 | import 'package:cake_wallet/bitcoin/bitcoin.dart'; |
| 2 | import 'package:cake_wallet/zcash/zcash.dart'; |
| 3 | import 'package:cw_core/receive_page_option.dart'; |
| 4 | import 'package:cw_core/wallet_base.dart'; |
| 5 | import 'package:cw_core/wallet_type.dart'; |
| 6 | import 'package:mobx/mobx.dart'; |
| 7 | |
| 8 | part 'receive_option_view_model.g.dart'; |
| 9 | |
| 10 | class ReceiveOptionViewModel = ReceiveOptionViewModelBase with _$ReceiveOptionViewModel; |
| 11 | |
| 12 | abstract class ReceiveOptionViewModelBase with Store { |
| 13 | ReceiveOptionViewModelBase(this._wallet, this.initialPageOption) |
| 14 | : selectedReceiveOption = initialPageOption ?? |
| 15 | ([WalletType.bitcoin, WalletType.litecoin].contains(_wallet.type) |
| 16 | ? bitcoin!.getSelectedAddressType(_wallet) |
| 17 | : (_wallet.type == WalletType.decred && _wallet.isTestnet) |
| 18 | ? ReceivePageOption.testnet |
| 19 | : _wallet.type == WalletType.zcash |
| 20 | ? zcash!.getSelectedAddressType(_wallet) |
| 21 | : ReceivePageOption.mainnet) { |
| 22 | if (_wallet.type == WalletType.zcash) { |
| 23 | reaction<bool>( |
| 24 | (_) => zcash!.ironwoodActive(_wallet.walletAddresses), |
| 25 | (_) => _syncZcashShieldedLabel(), |
| 26 | ); |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | final WalletBase _wallet; |
| 31 | |
| 32 | final ReceivePageOption? initialPageOption; |
| 33 | |
| 34 | @observable |
| 35 | ReceivePageOption selectedReceiveOption; |
| 36 | |
| 37 | @computed |
| 38 | List<ReceivePageOption> get options => |
| 39 | _wallet.walletAddresses.receivePageOptions.where(_wallet.receiveOptionAvailable).toList(); |
| 40 | |
| 41 | String get walletTypeString => walletTypeToString(_wallet.type); |
| 42 | |
| 43 | @action |
| 44 | void selectReceiveOption(ReceivePageOption option) => selectedReceiveOption = option; |
| 45 | |
| 46 | @action |
| 47 | void _syncZcashShieldedLabel() { |
| 48 | for (final option in options) { |
| 49 | if (option.value == selectedReceiveOption.value) { |
| 50 | selectedReceiveOption = option; |
| 51 | return; |
| 52 | } |
| 53 | } |
| 54 | } |
| 55 | } |