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 = Get.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");
      Get.offAndToNamed(AppRouteConstants.login);
    }

  } catch (e) {
    Get.snackbar(
      CoreConstants.errorSigningOut.tr,
      e.toString(),
      snackPosition: SnackPosition.bottom,
    );

    Get.toNamed(AppRouteConstants.logout);
  }

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