Skip to content
Snippets Groups Projects
wallet_options.dart 7.23 KiB
import 'dart:io';
import 'package:crypto/crypto.dart';
import 'package:durt/durt.dart';
import 'package:fast_base58/fast_base58.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/models/wallet_data.dart';
import 'package:image_picker/image_picker.dart';
import 'package:truncate/truncate.dart';

class WalletOptionsProvider with ChangeNotifier {
  TextEditingController pubkey = TextEditingController();
  final TextEditingController _newWalletName = TextEditingController();
  bool isWalletUnlock = false;
  bool ischangedPin = false;
  TextEditingController newPin = TextEditingController();
  bool isEditing = false;
  bool isBalanceBlur = true;
  FocusNode walletNameFocus = FocusNode();
  TextEditingController nameController = TextEditingController();
  late bool isDefaultWallet;

  Future<NewWallet>? get badWallet => null;

  String _getPubkeyFromDewif(
      String? _dewif, _pin, int _pinLenght, int? derivation) {
    RegExp regExp = RegExp(
      r'^[A-Z0-9]+$',
      caseSensitive: false,
      multiLine: false,
    );

    if (regExp.hasMatch(_pin) == true && _pin.length == _pinLenght) {
    } else {
      return 'false';
    }
    if (derivation != -1) {
      try {
        final _wallet = HdWallet.fromDewif(_dewif!, _pin, lang: appLang);
        pubkey.text = _wallet.getPubkey(derivation!);
        log.d(pubkey.text);
        notifyListeners();

        return pubkey.text;
      } catch (e) {
        log.w('Bad PIN code !\n' + e.toString());
        notifyListeners();

        return 'false';
      }
    } else {
      try {
        pubkey.text = CesiumWallet.fromDewif(_dewif!, _pin).pubkey;
        notifyListeners();
        return pubkey.text;
      } catch (e) {
        log.w('Bad PIN code !\n' + e.toString());
        notifyListeners();

        return 'false';
      }
    }
  }

  String? readLocalWallet(
      context, WalletData _wallet, String _pin, int _pinLenght,
      {String? mnemonic}) {