addAccount method

Future<void> addAccount({
  1. required String walletId,
  2. required Future<String?> getPassword(),
  3. SecureStore? secureStore,
})

Implementation

Future<void> addAccount({
  required String walletId,
  required Future<String?> Function() getPassword,
  SecureStore? secureStore,
}) async {
  final wallet = state.wallets[walletId];
  if (wallet == null) {
    ref.read(walletErrorNotifierProvider.notifier).reportError(
        const WalletError.accountError(message: 'Wallet not found'));
    return;
  }
  secureStore = secureStore ??
      await getSecureStore(
        getPassword: getPassword,
        type: wallet.secureStoreType,
      );
  late final String? seedPhrase;
  try {
    seedPhrase = await secureStore.getSecret(
      key: seedPhraseKey(walletId),
    );
  } catch (e) {
    ref.read(walletErrorNotifierProvider.notifier).reportError(
        WalletError.accountError(message: 'Wrong password', exception: e));
    return;
  }
  if (seedPhrase == null) {
    ref.read(walletErrorNotifierProvider.notifier).reportError(
        const WalletError.accountError(message: 'Secret not found'));
    return;
  }
  final (walletWithAccount, account) = await WalletService.addAccount(
    secureStore: secureStore,
    wallet: wallet,
    seedPhrase: seedPhrase,
  );
  updateWallet(wallet: walletWithAccount, accountId: account.id);
}