dev
dart 51 lines 1.39 KB
Raw
1 import 'package:cake_wallet/cake_pay/src/cake_pay_states.dart';
2 import 'package:cake_wallet/cake_pay/src/services/cake_pay_service.dart';
3 import 'package:mobx/mobx.dart';
4
5 part 'cake_pay_auth_view_model.g.dart';
6
7 class CakePayAuthViewModel = CakePayAuthViewModelBase with _$CakePayAuthViewModel;
8
9 abstract class CakePayAuthViewModelBase with Store {
10 CakePayAuthViewModelBase({required this.cakePayService})
11 : userVerificationState = CakePayUserVerificationStateInitial(),
12 otpState = CakePayOtpSendDisabled(),
13 email = '',
14 otp = '';
15
16 final CakePayService cakePayService;
17
18 @observable
19 CakePayUserVerificationState userVerificationState;
20
21 @observable
22 CakePayOtpState otpState;
23
24 @observable
25 String email;
26
27 @observable
28 String otp;
29
30 @action
31 Future<void> verifyEmail(String code) async {
32 try {
33 otpState = CakePayOtpValidating();
34 await cakePayService.verifyEmail(code);
35 otpState = CakePayOtpSuccess();
36 } catch (_) {
37 otpState = CakePayOtpFailure(error: 'Invalid OTP. Try again');
38 }
39 }
40
41 @action
42 Future<void> logIn(String email) async {
43 try {
44 userVerificationState = CakePayUserVerificationStateLoading();
45 await cakePayService.logIn(email);
46 userVerificationState = CakePayUserVerificationStateSuccess();
47 } catch (e) {
48 userVerificationState = CakePayUserVerificationStateFailure(error: e.toString());
49 }
50 }
51 }