createAccount method

Future<void> createAccount()

Implementation

Future<void> createAccount() async {
  final userName = UserName.tryParse(signUpName.text);
  final userLogin = UserLogin.tryParse(signUpLogin.text);
  final userEmail = UserEmail.tryParse(signUpEmail.text);
  final userPassword = UserPassword.tryParse(password.text);
  final passwordRepeat = UserPassword.tryParse(repeatPassword.text);

  if (!signUpName.isEmpty.value && userName == null) {
    signUpName.error.value = 'err_incorrect_input'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  if (!signUpLogin.isEmpty.value && userLogin == null) {
    signUpLogin.error.value = 'err_incorrect_login_input'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  if (!signUpEmail.isEmpty.value && userEmail == null) {
    signUpEmail.error.value = 'err_incorrect_input'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  if (!password.isEmpty.value && userPassword == null) {
    password.error.value = 'err_password_incorrect'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  if (!repeatPassword.isEmpty.value && passwordRepeat == null) {
    repeatPassword.error.value = 'err_password_incorrect'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  if (userPassword != passwordRepeat) {
    password.error.value = 'err_passwords_mismatch'.l10n;
    repeatPassword.error.value = 'err_passwords_mismatch'.l10n;
    page.value = IntroductionStage.accountCreating;
    return;
  }

  try {
    await register(
      login: userLogin,
      password: userPassword,
      name: userName,
      email: userEmail,
    );
  } on SignUpException catch (e) {
    login.error.value = e.toMessage();
    page.value = IntroductionStage.accountCreating;
  } catch (e) {
    password.error.value = 'err_data_transfer'.l10n;
    page.value = IntroductionStage.accountCreating;
    rethrow;
  }
}