fetchHomePermission method

Future<void> fetchHomePermission()

Implementation

Future<void> fetchHomePermission() async {
  final token = GetIt.I<StorageUtils>().getToken();
  final userId = GetIt.I<StorageUtils>().getUserId();
  if (token == null || token.isEmpty) return;

  try {
    isLoading.value = true;

    final result = await PermissionHandlerService.instance.getPermission(idModule: 0);

    if (/*result == null || result.isEmpty*/ userId != null && userId == '1') {
      // No permissions found, hide all modules
      for (var item in [...salesAndMarketing, ...financeApps, ...serviceApps]) {
        item.isVisible.value = true;
      }
      print('result:::::::::::: ' + result.map((e) => e.module).toString());
      return;
    }

    final allowedModuleIds = result
        .where((perm) => perm.idPermission != UserPermission.none.id)
        .map((perm) => perm.idModule)
        .toSet();

    print('Base Url:::::::::::: ' + _apiClient.currentBaseUrl.toString());
    if (_apiClient.currentBaseUrl
        .contains('https://preprod-brmdemo2.simpliworks.co.in/') || _apiClient.currentBaseUrl.contains('https://brmdemo2.simpliworks.co.in/')) {
      // Only fetch live active modules if NOT proprod
      final liveActiveModuleIds = await getLiveActiveModules();

      // Intersect permission with live active modules
      final filteredModuleIds = allowedModuleIds.intersection(liveActiveModuleIds);
      final visibleOldPlatformModules = allowedModuleIds.difference(liveActiveModuleIds);
      final hasOldPlatformModules = visibleOldPlatformModules.isNotEmpty;
      showOldPlatformNote.value = hasOldPlatformModules;

      updateVisibility(salesAndMarketing, filteredModuleIds);
      updateVisibility(financeApps, filteredModuleIds);
      updateVisibility(serviceApps, allowedModuleIds);

      updateOldPlatformVisibility(salesAndMarketing, visibleOldPlatformModules);
      updateOldPlatformVisibility(financeApps, visibleOldPlatformModules);
    } else {
      updateVisibility(salesAndMarketing, allowedModuleIds);
      updateVisibility(financeApps, allowedModuleIds);
      updateVisibility(serviceApps, allowedModuleIds);
    }
  } catch (e, st) {
    debugPrint('Error in fetchHomePermission: $e');
    debugPrintStack(stackTrace: st);
  } finally {
    isLoading.value = false;
  }
}