removeAccount method

  1. @override
Future<void> removeAccount()
override

Implementation

@override
Future<void> removeAccount() async {
  AppConfig.logger.d("removeAccount method Started");
  try {

    if(user.id.isNotEmpty && user.profiles.isNotEmpty) {
      for (var prof in user.profiles) {
        await ProfileFirestore().remove(userId: user.id, profileId: prof.id);
      }
      await userFirestore.remove(user.id);
    }

    final loginServiceImpl = Sint.find<LoginService>();
    fba.AuthCredential? authCredential;

    if(loginServiceImpl.getAuthCredentials() == null) {
      await loginServiceImpl.setAuthCredentials();
    }

    authCredential = loginServiceImpl.getAuthCredentials();

    if(authCredential != null) {
      await loginServiceImpl.deleteFbaUser(authCredential);
      clear();
    } else {
      AppConfig.logger.e("AuthCredentials to reauthenticate were null");
      Sint.offAndToNamed(AppRouteConstants.login);
    }

  } catch (e, st) {
    NeomErrorLogger.recordError(e, st, module: 'neom_core', operation: 'removeAccount');
    Sint.snackbar(
      CoreConstants.errorSigningOut.tr,
      e.toString(),
      snackPosition: SnackPosition.bottom,
    );

    Sint.toNamed(AppRouteConstants.logout);
  }

  AppConfig.logger.i("removeAccount method Finished");
  update();
}