signIn method
Signs in and redirects to the Routes.erase page.
Username is login's text and the password is password's text.
Implementation
Future<void> signIn() async {
UserLogin? userLogin;
UserNum? num;
UserEmail? email;
UserPhone? phone;
login.error.value = null;
password.error.value = null;
if (login.text.isEmpty) {
password.error.value = 'err_incorrect_login_or_password'.l10n;
password.unsubmit();
return;
}
try {
userLogin = UserLogin(login.text.toLowerCase());
} catch (e) {
// No-op.
}
try {
num = UserNum(login.text);
} catch (e) {
// No-op.
}
try {
email = UserEmail(login.text.toLowerCase());
} catch (e) {
// No-op.
}
try {
phone = UserPhone(login.text);
} catch (e) {
// No-op.
}
if (password.text.isEmpty) {
password.error.value = 'err_incorrect_login_or_password'.l10n;
password.unsubmit();
return;
}
if (userLogin == null && num == null && email == null && phone == null) {
password.error.value = 'err_incorrect_login_or_password'.l10n;
password.unsubmit();
return;
}
try {
login.status.value = RxStatus.loading();
password.status.value = RxStatus.loading();
await _authService.signIn(
password: UserPassword(password.text),
login: userLogin,
num: num,
email: email,
phone: phone,
);
router.go(Routes.erase);
router.tab = HomeTab.menu;
} on FormatException {
password.error.value = 'err_incorrect_login_or_password'.l10n;
} on ConnectionException {
password.unsubmit();
password.resubmitOnError.value = true;
password.error.value = 'err_data_transfer'.l10n;
} catch (e) {
password.unsubmit();
password.resubmitOnError.value = true;
password.error.value = 'err_data_transfer'.l10n;
rethrow;
} finally {
login.status.value = RxStatus.empty();
password.status.value = RxStatus.empty();
}
}