Skip to content
Snippets Groups Projects
my_wallets.dart 5.93 KiB
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:gecko/globals.dart';
import 'package:gecko/models/wallet_data.dart';
import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/screens/common_elements.dart';
import 'package:provider/provider.dart';

class MyWalletsProvider with ChangeNotifier {
  List<WalletData> listWallets = [];
  String pinCode = '';
  late String mnemonic;
  int? pinLenght;
  bool isNewDerivationLoading = false;

  int getCurrentChest() {
    if (configBox.get('currentChest') == null) {
      configBox.put('currentChest', 0);
    }

    return configBox.get('currentChest');
  }

  bool checkIfWalletExist() {
    if (chestBox.isEmpty) {
      log.i('No wallets detected');
      return false;
    } else {
      return true;
    }
  }

  List<WalletData> readAllWallets([int? _chest]) {
    _chest = _chest ?? configBox.get('currentChest') ?? 0;
    listWallets.clear();
    walletBox.toMap().forEach((key, value) {
      if (value.chest == _chest) {
        listWallets.add(value);
      }
    });

    return listWallets;
  }

  WalletData? getWalletDataById(List<int?> _id) {
    if (_id.isEmpty) return WalletData();
    int? _chest = _id[0];
    int? _nbr = _id[1];
    WalletData? _targetedWallet;

    walletBox.toMap().forEach((key, value) {
      if (value.chest == _chest && value.number == _nbr) {
        _targetedWallet = value;
        return;
      }
    });

    return _targetedWallet;
  }

  WalletData? getWalletDataByAddress(String address) {
    WalletData? _targetedWallet;

    walletBox.toMap().forEach((key, value) {
      if (value.address == address) {
        _targetedWallet = value;
        return;
      }
    });