From 99b8c269ea22884f4dcd48edf4daf4d0c3f0ca4d Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 22 Sep 2022 13:55:52 +0100 Subject: [PATCH] Updating group types to accurately reflect the state of the documents, as well as centralising the logic for getting the app IDs in a group. --- packages/builder/src/pages/builder/apps/index.svelte | 3 ++- .../src/pages/builder/portal/manage/groups/[groupId].svelte | 4 +++- .../builder/portal/overview/_components/AccessTab.svelte | 4 ++-- .../portal/overview/_components/AssignmentModal.svelte | 2 +- packages/builder/src/stores/portal/groups.js | 4 ++++ packages/types/src/documents/global/userGroup.ts | 5 ++--- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 3b606480cc..c6f922f27b 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -52,7 +52,8 @@ ? publishedApps : publishedApps.filter(app => { return userGroups.find(group => { - return Object.keys(group.roles) + return groups.actions + .getGroupApps(group) .map(role => apps.extractAppId(role)) .includes(app.appId) }) diff --git a/packages/builder/src/pages/builder/portal/manage/groups/[groupId].svelte b/packages/builder/src/pages/builder/portal/manage/groups/[groupId].svelte index d97d4cddc3..0f4d621cd6 100644 --- a/packages/builder/src/pages/builder/portal/manage/groups/[groupId].svelte +++ b/packages/builder/src/pages/builder/portal/manage/groups/[groupId].svelte @@ -41,7 +41,9 @@ $: fetchUsers(page, searchTerm) $: group = $groups.find(x => x._id === groupId) $: filtered = $users.data - $: groupApps = $apps.filter(app => group?.roles?.includes(app.appId)) + $: groupApps = $apps.filter(app => + groups.actions.getGroupApps(group).includes(app.appId) + ) $: { if (loaded && !group?._id) { $goto("./") diff --git a/packages/builder/src/pages/builder/portal/overview/_components/AccessTab.svelte b/packages/builder/src/pages/builder/portal/overview/_components/AccessTab.svelte index 2014c3e2fe..96ea66ff13 100644 --- a/packages/builder/src/pages/builder/portal/overview/_components/AccessTab.svelte +++ b/packages/builder/src/pages/builder/portal/overview/_components/AccessTab.svelte @@ -44,7 +44,7 @@ if (!group.roles) { return false } - return Object.keys(group.roles).includes(fixedAppId) + return groups.actions.getGroupApps(group).includes(fixedAppId) }) async function removeUser(user) { @@ -114,7 +114,7 @@ autoWidth quiet value={group.roles[ - Object.keys(group.roles).find(x => x === fixedAppId) + groups.actions.getGroupApps(group).find(x => x === fixedAppId) ]} allowPublic={false} /> diff --git a/packages/builder/src/pages/builder/portal/overview/_components/AssignmentModal.svelte b/packages/builder/src/pages/builder/portal/overview/_components/AssignmentModal.svelte index 0b969073f3..570ab554b9 100644 --- a/packages/builder/src/pages/builder/portal/overview/_components/AssignmentModal.svelte +++ b/packages/builder/src/pages/builder/portal/overview/_components/AssignmentModal.svelte @@ -113,7 +113,7 @@ search = search?.toLowerCase() return (allGroups || []).filter(group => { // Filter out assigned groups - const appIds = Object.keys(group.roles || {}) + const appIds = groups.actions.getGroupApps(group) if (appIds.includes(appId)) { return false } diff --git a/packages/builder/src/stores/portal/groups.js b/packages/builder/src/stores/portal/groups.js index 66a3ded54e..b868e693ac 100644 --- a/packages/builder/src/stores/portal/groups.js +++ b/packages/builder/src/stores/portal/groups.js @@ -76,6 +76,10 @@ export function createGroupsStore() { // refresh the group roles await getGroup(groupId) }, + + getGroupApps: group => { + return Object.keys(group?.roles || {}) + }, } return { diff --git a/packages/types/src/documents/global/userGroup.ts b/packages/types/src/documents/global/userGroup.ts index 86010d118b..cda74b0536 100644 --- a/packages/types/src/documents/global/userGroup.ts +++ b/packages/types/src/documents/global/userGroup.ts @@ -4,9 +4,8 @@ export interface UserGroup extends Document { name: string icon: string color: string - users: GroupUser[] - apps: string[] - roles: UserGroupRoles + users?: GroupUser[] + roles?: UserGroupRoles createdAt?: number }