email property

TextFieldState email
latefinal

TextFieldState for an UserEmail text input.

Implementation

late final TextFieldState email = TextFieldState(
  onFocus: (s) {},
  onSubmitted: (s) async {
    final UserEmail? email = UserEmail.tryParse(s.text.toLowerCase());
    final UserLogin? login = UserLogin.tryParse(s.text.toLowerCase());
    final UserNum? userNum = UserNum.tryParse(s.text.toLowerCase());

    emailCode.clear();

    final IntroductionStage? previous = page.value;

    page.value = switch (page.value) {
      IntroductionStage.signInWithEmail =>
        IntroductionStage.signInWithEmailCode,
      (_) => IntroductionStage.signIn,
    };

    try {
      _setResendEmailTimer();

      // Simulate like everything's alright despite not sending anything.
      if (login != null || userNum != null || email != null) {
        await _authService.createConfirmationCode(
          email: email,
          login: login,
          num: userNum,
        );
      }

      s.unsubmit();
    } on AddUserEmailException catch (e) {
      s.error.value = e.toMessage();
      _setResendEmailTimer(false);

      page.value = previous;
    } catch (_) {
      s.resubmitOnError.value = true;
      s.error.value = 'err_data_transfer'.l10n;
      _setResendEmailTimer(false);
      s.unsubmit();

      page.value = previous;
      rethrow;
    }
  },
);