diff --git a/frontend/src/HomePage/AppList.jsx b/frontend/src/HomePage/AppList.jsx index 5863e85d2e..54cf513b3e 100644 --- a/frontend/src/HomePage/AppList.jsx +++ b/frontend/src/HomePage/AppList.jsx @@ -48,14 +48,16 @@ const AppList = (props) => { )} - {!props.isLoading && props.currentFolder.count === 0 && ( + {!props.isLoading && props.apps?.length === 0 && (
- {t('homePage.thisFolderIsEmpty', 'This folder is empty')} + {props.currentFolder?.count == 0 + ? t('homePage.thisFolderIsEmpty', 'This folder is empty') + : t('homePage.nonAccessibleFolderApps', 'No apps are accessible of this folder')}
)} diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index b9972391cd..89de0e7459 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -30,7 +30,7 @@ export function viewableAppsQueryUsingPermissions( select?: Array ): SelectQueryBuilder { const viewableApps = userAppPermissions.hideAll - ? [...userAppPermissions.editableAppsId] + ? [null, ...userAppPermissions.editableAppsId] : [ null, ...Array.from( @@ -40,6 +40,7 @@ export function viewableAppsQueryUsingPermissions( ]) ), ]; + const viewableAppsQb = manager .createQueryBuilder(AppBase, 'viewable_apps') .innerJoin('viewable_apps.user', 'user') @@ -55,14 +56,16 @@ export function viewableAppsQueryUsingPermissions( if (select) { viewableAppsQb.select(select.map((col) => `viewable_apps.${col}`)); } - const viewAll = userAppPermissions.isAllEditable || userAppPermissions.isAllViewable; - if (!viewAll || userAppPermissions.hideAll) { + const { isAllEditable, isAllViewable, hideAll } = userAppPermissions; + if (isAllEditable) return viewableAppsQb; + if ((isAllViewable && hideAll) || (!isAllViewable && !hideAll) || (!isAllViewable && hideAll)) { viewableAppsQb.where('viewable_apps.id IN (:...viewableApps)', { viewableApps, }); + return viewableAppsQb; } const hiddenApps = userAppPermissions.hiddenAppsId.filter((id) => !userAppPermissions.editableAppsId.includes(id)); - if (!userAppPermissions.hideAll && viewAll && hiddenApps.length > 0) { + if (!userAppPermissions.hideAll && isAllViewable && hiddenApps.length > 0) { viewableAppsQb.where('viewable_apps.id NOT IN (:...hiddenApps)', { hiddenApps, }); diff --git a/server/src/services/folders.service.ts b/server/src/services/folders.service.ts index 4c911387cb..ee752337fb 100644 --- a/server/src/services/folders.service.ts +++ b/server/src/services/folders.service.ts @@ -98,20 +98,29 @@ export class FoldersService { totalCount: 0, }; } - const viewableAppsTotal = Array.from( - new Set([ - ...userAppPermissions.editableAppsId, - ...userAppPermissions.viewableAppsId.filter((id) => !userAppPermissions.hiddenAppsId.includes(id)), - ]) - ); + const { isAllEditable, isAllViewable, hideAll } = userAppPermissions; + const viewableAppsTotal = isAllEditable + ? [null, ...folderAppIds] + : hideAll + ? [null, ...userAppPermissions.editableAppsId] + : isAllViewable + ? [null, ...folderAppIds].filter((id) => !userAppPermissions.hiddenAppsId.includes(id)) + : [ + null, + ...Array.from( + new Set([ + ...userAppPermissions.editableAppsId, + ...userAppPermissions.viewableAppsId.filter((id) => !userAppPermissions.hiddenAppsId.includes(id)), + ]) + ), + ]; - const viewableAppIds = viewableAppsTotal.filter((id) => folderAppIds.includes(id)); + const viewableAppIds = [null, ...viewableAppsTotal.filter((id) => folderAppIds.includes(id))]; const viewableAppsInFolder = createQueryBuilder(AppBase, 'apps') .innerJoin('apps.user', 'user') .addSelect(['user.firstName', 'user.lastName']); - // if (!(userAppPermissions.isAllEditable || userAppPermissions.isAllViewable)) { viewableAppsInFolder.where('apps.id IN (:...viewableAppIds)', { viewableAppIds: viewableAppIds, });