createUser method

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

Implementation

@override
Future<void> createUser() async {

  AppConfig.logger.d("User to create ${user.name}");
  AppUser newUser = user;
  setNewProfileInfo();

  newUser.profiles = [_newProfile];
  newUser.userRole = UserRole.subscriber;

  try {

    if(newUser.name.isEmpty) newUser.name = _newProfile.name;

    newUser.createdDate = DateTime.now().millisecondsSinceEpoch;

    if(await userFirestore.insert(newUser)) {
      _isNewUser = false;

      String profileId = await ProfileFirestore().insert(newUser.id, newUser.profiles.first);

      if(profileId.isNotEmpty) {
        newUser.profiles.first.id = profileId;
        newUser.currentProfileId = profileId;
        userFirestore.updateCurrentProfile(newUser.id, profileId);
        profile = newUser.profiles.first;
        user = newUser;
        AppHiveController().writeProfileInfo();
        Get.offAllNamed(AppRouteConstants.home);
      } else {
        userFirestore.remove(newUser.id);
        Get.snackbar(
          CoreConstants.errorCreatingAccount.tr,
          '',
          snackPosition: SnackPosition.bottom,
        );

        Get.offAllNamed(AppRouteConstants.login);
      }
    } else {
      Get.snackbar(
        CoreConstants.errorCreatingAccount.tr,
        '',
        snackPosition: SnackPosition.bottom,
      );

      Get.offAllNamed(AppRouteConstants.login);
    }
  } catch (e) {
    Get.snackbar(
      CoreConstants.errorCreatingAccount.tr,
      e.toString(),
      snackPosition: SnackPosition.bottom,
    );
  }
}