Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 44 additions & 8 deletions lib/bloc/trezor_init_bloc/trezor_init_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';
import 'package:easy_localization/easy_localization.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:komodo_defi_sdk/komodo_defi_sdk.dart';
import 'package:komodo_defi_types/komodo_defi_types.dart';
import 'package:web_dex/app_config/app_config.dart';
Expand All @@ -19,18 +20,24 @@ import 'package:web_dex/model/kdf_auth_metadata_extension.dart';
import 'package:web_dex/model/text_error.dart';
import 'package:web_dex/model/wallet.dart';
import 'package:web_dex/shared/utils/utils.dart';
import 'package:komodo_defi_rpc_methods/komodo_defi_rpc_methods.dart'
show PrivateKeyPolicy;

part 'trezor_init_event.dart';
part 'trezor_init_state.dart';

const String _trezorPasswordKey = 'trezor_wallet_password';

class TrezorInitBloc extends Bloc<TrezorInitEvent, TrezorInitState> {
TrezorInitBloc({
required KomodoDefiSdk kdfSdk,
required TrezorRepo trezorRepo,
required CoinsRepo coinsRepository,
FlutterSecureStorage? secureStorage,
}) : _trezorRepo = trezorRepo,
_kdfSdk = kdfSdk,
_coinsRepository = coinsRepository,
_secureStorage = secureStorage ?? const FlutterSecureStorage(),
super(TrezorInitState.initial()) {
on<TrezorInitSubscribeStatus>(_onSubscribeStatus);
on<TrezorInit>(_onInit);
Expand All @@ -50,6 +57,7 @@ class TrezorInitBloc extends Bloc<TrezorInitEvent, TrezorInitState> {
final TrezorRepo _trezorRepo;
final KomodoDefiSdk _kdfSdk;
final CoinsRepo _coinsRepository;
final FlutterSecureStorage _secureStorage;
Timer? _statusTimer;

void _unsubscribeStatus() {
Expand Down Expand Up @@ -201,7 +209,6 @@ class TrezorInitBloc extends Bloc<TrezorInitEvent, TrezorInitState> {
// ignore
}
_trezorRepo.subscribeOnConnectionStatus(deviceDetails.pubKey);
await _kdfSdk.addActivatedCoins(enabledByDefaultTrezorCoins);
emit(
state.copyWith(
inProgress: () => false,
Expand Down Expand Up @@ -275,36 +282,65 @@ class TrezorInitBloc extends Bloc<TrezorInitEvent, TrezorInitState> {
/// into a static 'hidden' wallet to init trezor
Future<void> _loginToTrezorWallet({
String walletName = 'My Trezor',
String? password
String? password,
AuthOptions authOptions = const AuthOptions(
derivationMethod: DerivationMethod.hdWallet,
privKeyPolicy: PrivateKeyPolicy.trezor,
),
}) async {
password ??= generatePassword();
try {
password ??= await _secureStorage.read(key: _trezorPasswordKey);
} catch (e, s) {
log(
'Failed to read trezor password from secure storage: $e',
path: 'trezor_init_bloc => _loginToTrezorWallet',
isError: true,
trace: s,
).ignore();
// If reading fails, password will remain null and a new one will be generated
}

if (password == null) {
password = generatePassword();
try {
await _secureStorage.write(key: _trezorPasswordKey, value: password);
} catch (e, s) {
log(
'Failed to write trezor password to secure storage: $e',
path: 'trezor_init_bloc => _loginToTrezorWallet',
isError: true,
trace: s,
).ignore();
// Continue with generated password even if storage write fails
}
}

final bool mm2SignedIn = await _kdfSdk.auth.isSignedIn();
if (state.kdfUser != null && mm2SignedIn) {
return;
}

// final walletName = state.status?.trezorStatus.name ?? 'My Trezor';
// final password =
// state.status?.details.deviceDetails?.deviceId ?? 'hidden-login';
final existingWallets = await _kdfSdk.auth.getUsers();
if (existingWallets.any((wallet) => wallet.walletId.name == walletName)) {
await _kdfSdk.auth.signIn(
walletName: walletName,
password: password,
options: const AuthOptions(derivationMethod: DerivationMethod.iguana),
options: authOptions,
);
await _kdfSdk.setWalletType(WalletType.trezor);
await _kdfSdk.confirmSeedBackup();
await _kdfSdk.addActivatedCoins(enabledByDefaultTrezorCoins);
return;
}

await _kdfSdk.auth.register(
walletName: walletName,
password: password,
options: const AuthOptions(derivationMethod: DerivationMethod.iguana),
options: authOptions,
);
await _kdfSdk.setWalletType(WalletType.trezor);
await _kdfSdk.confirmSeedBackup();
await _kdfSdk.addActivatedCoins(enabledByDefaultTrezorCoins);
}

Future<void> _logout() async {
Expand Down
10 changes: 5 additions & 5 deletions packages/komodo_ui_kit/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ packages:
description:
path: "packages/komodo_defi_rpc_methods"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -104,7 +104,7 @@ packages:
description:
path: "packages/komodo_defi_types"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -113,7 +113,7 @@ packages:
description:
path: "packages/komodo_ui"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand Down Expand Up @@ -145,10 +145,10 @@ packages:
dependency: transitive
description:
name: mobile_scanner
sha256: "9cb9e371ee9b5b548714f9ab5fd33b530d799745c83d5729ecd1e8ab2935dbd1"
sha256: "54005bdea7052d792d35b4fef0f84ec5ddc3a844b250ecd48dc192fb9b4ebc95"
url: "https://pub.dev"
source: hosted
version: "6.0.7"
version: "7.0.1"
path:
dependency: transitive
description:
Expand Down
30 changes: 15 additions & 15 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -337,10 +337,10 @@ packages:
dependency: "direct main"
description:
name: flutter_bloc
sha256: "1046d719fbdf230330d3443187cc33cc11963d15c9089f6cc56faa42a4c5f0cc"
sha256: cf51747952201a455a1c840f8171d273be009b932c75093020f9af64f2123e38
url: "https://pub.dev"
source: hosted
version: "9.1.0"
version: "9.1.1"
flutter_driver:
dependency: transitive
description: flutter
Expand Down Expand Up @@ -586,10 +586,10 @@ packages:
dependency: "direct main"
description:
name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
http_multi_server:
dependency: transitive
description:
Expand Down Expand Up @@ -648,7 +648,7 @@ packages:
description:
path: "packages/komodo_cex_market_data"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.0.1"
Expand All @@ -657,7 +657,7 @@ packages:
description:
path: "packages/komodo_coins"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -666,7 +666,7 @@ packages:
description:
path: "packages/komodo_defi_framework"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0"
Expand All @@ -675,7 +675,7 @@ packages:
description:
path: "packages/komodo_defi_local_auth"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -684,7 +684,7 @@ packages:
description:
path: "packages/komodo_defi_rpc_methods"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -693,7 +693,7 @@ packages:
description:
path: "packages/komodo_defi_sdk"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -702,7 +702,7 @@ packages:
description:
path: "packages/komodo_defi_types"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -718,7 +718,7 @@ packages:
description:
path: "packages/komodo_ui"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand All @@ -734,7 +734,7 @@ packages:
description:
path: "packages/komodo_wallet_build_transformer"
ref: dev
resolved-ref: "41b554d08ed3f42f9f784a488cedf9ab4b3b3313"
resolved-ref: f63bebb0288db26f2a369579109e1fcc93e19b67
url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git"
source: git
version: "0.2.0+0"
Expand Down Expand Up @@ -862,10 +862,10 @@ packages:
dependency: transitive
description:
name: mobile_scanner
sha256: "9cb9e371ee9b5b548714f9ab5fd33b530d799745c83d5729ecd1e8ab2935dbd1"
sha256: "54005bdea7052d792d35b4fef0f84ec5ddc3a844b250ecd48dc192fb9b4ebc95"
url: "https://pub.dev"
source: hosted
version: "6.0.7"
version: "7.0.1"
mutex:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ dependencies:
## ---- Dart.dev, Flutter.dev
args: ^2.7.0 # dart.dev
flutter_markdown: ^0.7.7 # flutter.dev
http: 1.3.0 # dart.dev
http: 1.4.0 # dart.dev
intl: 0.20.2 # dart.dev
js: ">=0.6.7 <=0.7.2" # dart.dev
url_launcher: 6.3.1 # flutter.dev
Expand Down
Loading