signUpByEmail method
Future<AuthResponse<T> >
signUpByEmail(
- EmailAuthenticator authenticator, {
- SignByBiometricCallback? onBiometric,
- Object? args,
- String? id,
- bool notifiable = true,
override
Implementation
@override
Future<AuthResponse<T>> signUpByEmail(
EmailAuthenticator authenticator, {
SignByBiometricCallback? onBiometric,
Object? args,
String? id,
bool notifiable = true,
}) async {
emit(
args: args,
id: id,
notifiable: notifiable,
const AuthResponse.loading(AuthProviders.email, AuthType.register),
);
try {
final response = await authHandler.signUpWithEmailNPassword(
email: authenticator.email,
password: authenticator.password,
);
if (!response.isSuccessful) {
return emit(
args: args,
id: id,
notifiable: notifiable,
AuthResponse.failure(
response.exception,
provider: AuthProviders.email,
type: AuthType.register,
),
);
}
final result = response.data?.user;
if (result == null) {
return emit(
args: args,
id: id,
notifiable: notifiable,
AuthResponse.failure(
msg.authorization,
provider: AuthProviders.email,
type: AuthType.register,
),
);
}
final creationTime = Entity.generateTimeMills;
final user = authenticator.copy(
id: result.uid,
email: result.email,
name: result.displayName,
phone: result.phoneNumber,
photo: result.photoURL,
provider: AuthProviders.email.name,
loggedIn: true,
loggedInTime: creationTime,
timeMills: creationTime,
);
BiometricStatus? biometric;
if (onBiometric != null) biometric = await onBiometric(user.mBiometric);
final value = await _update(
id: user.id,
initials:
(biometric != null ? user.copy(biometric: biometric.name) : user)
.source,
);
return emit(
args: args,
id: id,
notifiable: notifiable,
AuthResponse.authenticated(
value,
msg: msg.signUpWithEmail.done,
provider: AuthProviders.email,
type: AuthType.register,
),
);
} catch (error) {
return emit(
args: args,
id: id,
notifiable: notifiable,
AuthResponse.failure(
msg.signUpWithEmail.failure ?? error,
provider: AuthProviders.email,
type: AuthType.register,
),
);
}
}