resendEmail method

Future<void> resendEmail()

Resends a ConfirmationCode to the specified email.

Implementation

Future<void> resendEmail() async {
  _setResendEmailTimer();

  try {
    switch (stage.value) {
      case LoginViewStage.signInWithEmailCode:
        final UserLogin? userLogin = UserLogin.tryParse(identifier.text);
        final UserNum? userNum = UserNum.tryParse(identifier.text);
        final UserEmail? userEmail = UserEmail.tryParse(identifier.text);
        final UserPhone? userPhone = UserPhone.tryParse(identifier.text);

        if (userLogin != null ||
            userNum != null ||
            userEmail != null ||
            userPhone != null) {
          await _authService.createConfirmationCode(
            email: userEmail,
            login: userLogin,
            num: userNum,
            phone: userPhone,
          );
        }
        break;

      default:
        await _authService.createConfirmationCode(
          email: UserEmail(email.text),
        );
        break;
    }
  } on AddUserEmailException catch (e) {
    emailCode.error.value = e.toMessage();
  } catch (e) {
    emailCode.resubmitOnError.value = true;
    emailCode.error.value = 'err_data_transfer'.l10n;
    _setResendEmailTimer(false);
    rethrow;
  }
}