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