addWallet method

Future<void> addWallet(
  1. Wallet wallet
)

Add a new wallet to the system

Implementation

Future<void> addWallet(Wallet wallet) async {
  // Initialize before persisting so failed setup (for example, an
  // unreachable LNURL endpoint) cannot leave a partially added wallet.
  final provider = _providers[wallet.type];
  var walletToStore = wallet;
  if (provider != null) {
    final updatedWallet = await provider.initialize(wallet);
    if (updatedWallet != null) {
      walletToStore = updatedWallet;
    }
  }

  await _repository.storeWallet(walletToStore);
  await _addWalletToMemory(walletToStore);

  if (walletToStore.canReceive &&
      _repository.getDefaultWalletIdForReceiving() == null) {
    _repository.setDefaultWalletForReceiving(walletToStore.id);
  }

  if (walletToStore.canSend &&
      _repository.getDefaultWalletIdForSending() == null) {
    _repository.setDefaultWalletForSending(walletToStore.id);
  }

  _updateCombinedStreams();
}