signOut method
Implementation
@override
Future<AuthResponse<T>> signOut([
AuthProviders provider = AuthProviders.none,
]) async {
try {
emit(AuthResponse.loading(provider, AuthType.logout));
final response = await authHandler.signOut(provider);
if (response.isSuccessful) {
return _auth.then((data) async {
if (data != null) {
await update({
AuthKeys.i.loggedIn: false,
AuthKeys.i.loggedOutTime: Entity.generateTimeMills,
});
if (data.isBiometric) {
return _update(
id: data.id,
updates: {
...data.extra ?? {},
AuthKeys.i.loggedIn: false,
AuthKeys.i.loggedOutTime: Entity.generateTimeMills,
},
).then((value) {
return emit(AuthResponse.unauthenticated(
msg: msg.signOut.done,
provider: provider,
type: AuthType.logout,
));
});
} else {
return _clear().then((value) {
return emit(AuthResponse.unauthenticated(
msg: msg.signOut.done,
provider: provider,
type: AuthType.logout,
));
});
}
} else {
return emit(AuthResponse.unauthenticated(
msg: msg.signOut.done,
provider: provider,
type: AuthType.logout,
));
}
});
} else {
return emit(AuthResponse.failure(
response.exception,
provider: provider,
type: AuthType.logout,
));
}
} catch (_) {
return emit(AuthResponse.failure(
msg.signOut.failure ?? _,
provider: provider,
type: AuthType.logout,
));
}
}