cache issue for reduce function

This commit is contained in:
kriks7iitk 2024-07-18 13:43:38 +05:30
parent 4af32c6f98
commit 39a675c89d

View file

@ -54,6 +54,8 @@ export class AbilityService {
if (resources && resources.some((item) => item.resource === TOOLJET_RESOURCE.APP)) {
userPermissions[TOOLJET_RESOURCE.APP] = await this.createUserAppsPermissions(appsGranularPermissions, user);
}
console.log(userPermissions);
return userPermissions;
}
@ -61,24 +63,35 @@ export class AbilityService {
appsGranularPermissions: GranularPermissions[],
user: User
): Promise<UserAppsPermissions> {
const userAppsPermissions: UserAppsPermissions = appsGranularPermissions.reduce((acc, permission) => {
const userAppsPermissions: UserAppsPermissions = { ...DEFAULT_USER_APPS_PERMISSIONS };
appsGranularPermissions.forEach((permission) => {
const appsPermission = permission?.appsGroupPermissions;
const groupApps = appsPermission?.groupApps ? appsPermission.groupApps.map((item) => item.appId) : [];
return {
isAllEditable: acc.isAllEditable || (permission.isAll && appsPermission?.canEdit),
editableAppsId: Array.from(new Set([...acc.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])])),
isAllViewable: acc.isAllViewable || (permission.isAll && appsPermission?.canView),
viewableAppsId: Array.from(new Set([...acc.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])])),
hiddenAppsId: Array.from(
new Set([...acc.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])])
),
hideAll: acc.hideAll || (appsPermission.hideFromDashboard && permission.isAll),
};
}, DEFAULT_USER_APPS_PERMISSIONS);
userAppsPermissions.isAllEditable =
userAppsPermissions.isAllEditable || (permission.isAll && appsPermission?.canEdit);
userAppsPermissions.editableAppsId = Array.from(
new Set([...userAppsPermissions.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])])
);
userAppsPermissions.isAllViewable =
userAppsPermissions.isAllViewable || (permission.isAll && appsPermission?.canView);
userAppsPermissions.viewableAppsId = Array.from(
new Set([...userAppsPermissions.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])])
);
userAppsPermissions.hiddenAppsId = Array.from(
new Set([...userAppsPermissions.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])])
);
userAppsPermissions.hideAll =
userAppsPermissions.hideAll || (appsPermission?.hideFromDashboard && permission.isAll);
});
await dbTransactionWrap(async (manager: EntityManager) => {
const appsOwnedByUser = await manager.find(App, {
where: { userId: user.id, organizationId: user.organizationId },
});
const appsIdOwnedByUser = appsOwnedByUser.map((app) => app.id);
userAppsPermissions.editableAppsId = Array.from(
new Set([...userAppsPermissions.editableAppsId, ...appsIdOwnedByUser])