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;
}
}