forked from SatoshiPortal/bullbitcoin-mobile
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_onboarding_wallets_usecase.dart
More file actions
56 lines (53 loc) · 1.92 KB
/
Copy pathcreate_onboarding_wallets_usecase.dart
File metadata and controls
56 lines (53 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import 'package:bb_mobile/core/utils/logger.dart';
import 'package:bb_mobile/core/utils/result.dart';
import 'package:bb_mobile/core/wallet/domain/entities/wallet.dart';
import 'package:bb_mobile/core/wallet/domain/inconsistent_wallet_state_exception.dart';
import 'package:bb_mobile/core/wallet/domain/usecases/create_default_wallets_usecase.dart';
import 'package:bb_mobile/features/onboarding/domain/onboarding_failure.dart';
import 'package:meta/meta.dart';
class CreateOnboardingWalletsUsecase {
final CreateDefaultWalletsUsecase _createDefaultWalletsUsecase;
CreateOnboardingWalletsUsecase(this._createDefaultWalletsUsecase);
@useResult
Future<Result<List<Wallet>, OnboardingFailure>> execute({
List<String>? mnemonicWords,
}) async {
try {
final wallets = mnemonicWords == null
? await _createDefaultWalletsUsecase.execute()
: await _createDefaultWalletsUsecase.execute(
mnemonicWords: mnemonicWords,
);
if (wallets.isEmpty) {
const failure = OnboardingUnexpectedFailure(
'No wallets were created or restored',
);
log.severe(
message: failure.logMessage,
error: failure,
trace: StackTrace.current,
);
return const Err(failure);
}
return Ok(wallets);
} on InconsistentWalletStateException catch (error, trace) {
log.severe(
message: 'createOnboardingWallets found wallet records without a seed',
error: error,
trace: trace,
);
return Err(
OnboardingInconsistentWalletStateFailure(
'wallet records without a seed for ${error.fingerprint}',
),
);
} on CreateDefaultWalletsException catch (error, trace) {
log.severe(
message: 'createOnboardingWallets failed',
error: error,
trace: trace,
);
return Err(OnboardingUnexpectedFailure(error.toString()));
}
}
}