signOut method

  1. @override
Future<Response<Auth<AuthKeys>>> signOut([
  1. AuthProviders? provider
])
override

Implementation

@override
Future<Response<Auth>> signOut([AuthProviders? provider]) async {
  final response = Response<Auth>();
  var data = Auth.fromUser(user);
  try {
    if (await isConnected) {
      if (provider != null) {
        switch (provider) {
          case AuthProviders.email:
          case AuthProviders.phone:
          case AuthProviders.username:
            await firebaseAuth.signOut();
            break;
          case AuthProviders.facebook:
            await facebookAuth.logOut();
            break;
          case AuthProviders.google:
            await googleAuth.signOut();
            break;
          case AuthProviders.apple:
          case AuthProviders.biometric:
          case AuthProviders.github:
          case AuthProviders.twitter:
          case AuthProviders.none:
            break;
        }
      } else {
        await firebaseAuth.signOut();
        if (await googleAuth.isSignedIn()) {
          googleAuth.disconnect();
          googleAuth.signOut();
        }
      }
    } else {
      return response.withStatus(Status.networkError);
    }
  } catch (_) {
    return response.withException(_, status: Status.failure);
  }
  return response.withData(data);
}