delete method

  1. @override
Future<AuthResponse<T>> delete()
override

Implementation

@override
Future<AuthResponse<T>> delete() async {
  emit(const AuthResponse.loading(AuthProviders.none, AuthType.delete));
  var data = await auth;
  if (data != null) {
    try {
      return authHandler.delete.then((response) {
        if (response.isSuccessful) {
          return _clear().then((value) {
            return backupHandler.onDeleteUser(data.id).then((value) {
              return emit(AuthResponse.unauthenticated(
                msg: msg.delete.done,
                provider: AuthProviders.none,
                type: AuthType.delete,
              ));
            });
          });
        } else {
          return emit(AuthResponse.rollback(
            data,
            msg: response.message,
            provider: AuthProviders.none,
            type: AuthType.delete,
          ));
        }
      });
    } catch (_) {
      return emit(AuthResponse.rollback(
        data,
        msg: msg.delete.failure ?? _,
        provider: AuthProviders.none,
        type: AuthType.delete,
      ));
    }
  } else {
    return emit(AuthResponse.rollback(
      data,
      msg: msg.loggedIn.failure,
      provider: AuthProviders.none,
      type: AuthType.delete,
    ));
  }
}