From 163137d27c155e00572618b13090eb9bbabc53c9 Mon Sep 17 00:00:00 2001 From: Lucas Date: Thu, 7 Nov 2024 11:42:47 +0100 Subject: [PATCH] adapt to changes in environment functions --- .../app/confluence/config/config.tsx | 4 ++-- .../app/confluence/config/page.tsx | 11 +++++++---- .../confluence/macro-editor/create/macro-editor.tsx | 2 +- .../app/confluence/macro-editor/create/page.tsx | 13 ++++++++----- .../app/confluence/macro-editor/embed/page.tsx | 13 ++++++++----- .../app/confluence/macro/[processId]/page.tsx | 13 ++++++++----- src/management-system-v2/app/confluence/page.tsx | 13 ++++++++----- .../app/confluence/process-list.tsx | 4 ++-- src/management-system-v2/lib/data/user-schema.ts | 11 ++--------- 9 files changed, 46 insertions(+), 38 deletions(-) diff --git a/src/management-system-v2/app/confluence/config/config.tsx b/src/management-system-v2/app/confluence/config/config.tsx index c05810e9a..91a4c3936 100644 --- a/src/management-system-v2/app/confluence/config/config.tsx +++ b/src/management-system-v2/app/confluence/config/config.tsx @@ -17,9 +17,9 @@ const SpaceSelectionTab = ({ initialSpaceId?: string; }) => { const options = userEnvironments - .filter((environment) => environment.organization) + .filter((environment) => environment.isOrganization) .map((environment) => { - if (environment.organization) { + if (environment.isOrganization) { return { label: environment.name, value: environment.id }; } return { label: environment.id, value: environment.id }; diff --git a/src/management-system-v2/app/confluence/config/page.tsx b/src/management-system-v2/app/confluence/config/page.tsx index fd21a352b..1ce1ef77b 100644 --- a/src/management-system-v2/app/confluence/config/page.tsx +++ b/src/management-system-v2/app/confluence/config/page.tsx @@ -6,6 +6,7 @@ import { getUserOrganizationEnvironments } from '@/lib/data/legacy/iam/membershi import Config from './config'; import jwt, { JwtPayload } from 'jsonwebtoken'; import { getConfluenceClientInfos } from '@/lib/data/legacy/fileHandling'; +import { asyncMap } from '@/lib/helpers/javascriptHelpers'; const ConfigPage = async ({ params, searchParams }: { params: any; searchParams: any }) => { const jwtToken = searchParams.jwt; @@ -19,11 +20,13 @@ const ConfigPage = async ({ params, searchParams }: { params: any; searchParams: const { userId } = await getCurrentUser(); if (userId) { - const userEnvironments: Environment[] = [getEnvironmentById(userId)]; + const userEnvironments: Environment[] = [await getEnvironmentById(userId)]; + const userOrganizationEnvironments = await getUserOrganizationEnvironments(userId); + userEnvironments.push( - ...getUserOrganizationEnvironments(userId).map((environmentId) => - getEnvironmentById(environmentId), - ), + ...(await asyncMap(userOrganizationEnvironments, async (environmentId) => { + return getEnvironmentById(environmentId); + })), ); const confluenceClientInfos = await getConfluenceClientInfos(clientKey); diff --git a/src/management-system-v2/app/confluence/macro-editor/create/macro-editor.tsx b/src/management-system-v2/app/confluence/macro-editor/create/macro-editor.tsx index b267c3392..638a26ae8 100644 --- a/src/management-system-v2/app/confluence/macro-editor/create/macro-editor.tsx +++ b/src/management-system-v2/app/confluence/macro-editor/create/macro-editor.tsx @@ -61,7 +61,7 @@ const MacroEditor = ({ if (process) { const bpmnResponse = await getProcessBPMN(process.id, spaceId); - if (typeof bpmnResponse === 'object' && 'error' in bpmnResponse) { + if (!bpmnResponse || (typeof bpmnResponse === 'object' && 'error' in bpmnResponse)) { throw new Error('Could not retrieve BPMN of process'); } diff --git a/src/management-system-v2/app/confluence/macro-editor/create/page.tsx b/src/management-system-v2/app/confluence/macro-editor/create/page.tsx index 91ce99d2d..872f80742 100644 --- a/src/management-system-v2/app/confluence/macro-editor/create/page.tsx +++ b/src/management-system-v2/app/confluence/macro-editor/create/page.tsx @@ -10,6 +10,7 @@ import Layout from '../../layout-client'; import { getConfluenceClientInfos } from '@/lib/data/legacy/fileHandling'; import jwt, { JwtPayload } from 'jsonwebtoken'; import { getRootFolder } from '@/lib/data/legacy/folders'; +import { asyncMap } from '@/lib/helpers/javascriptHelpers'; const MacroEditorPage = async ({ params, searchParams }: { params: any; searchParams: any }) => { const jwtToken = searchParams.jwt; @@ -28,11 +29,13 @@ const MacroEditorPage = async ({ params, searchParams }: { params: any; searchPa const { userId } = await getCurrentUser(); if (userId) { - const userEnvironments: Environment[] = [getEnvironmentById(userId)]; + const userEnvironments: Environment[] = [await getEnvironmentById(userId)]; + const userOrganizationEnvironments = await getUserOrganizationEnvironments(userId); + userEnvironments.push( - ...getUserOrganizationEnvironments(userId).map((environmentId) => - getEnvironmentById(environmentId), - ), + ...(await asyncMap(userOrganizationEnvironments, async (environmentId) => { + return getEnvironmentById(environmentId); + })), ); const confluenceClientInfos = await getConfluenceClientInfos(clientKey); @@ -51,7 +54,7 @@ const MacroEditorPage = async ({ params, searchParams }: { params: any; searchPa // get all the processes the user has access to const ownedProcesses = ( await Promise.all( - (await getProcesses(ability)).map(async (process) => { + (await getProcesses(userId, ability)).map(async (process) => { const res = await getProcessBPMN(process.id, confluenceSelectedProceedSpace.id); if (typeof res === 'string') { return { ...process, bpmn: res }; diff --git a/src/management-system-v2/app/confluence/macro-editor/embed/page.tsx b/src/management-system-v2/app/confluence/macro-editor/embed/page.tsx index b6f86318e..443019571 100644 --- a/src/management-system-v2/app/confluence/macro-editor/embed/page.tsx +++ b/src/management-system-v2/app/confluence/macro-editor/embed/page.tsx @@ -8,6 +8,7 @@ import { Environment } from '@/lib/data/environment-schema'; import Layout from '../../layout-client'; import { getConfluenceClientInfos } from '@/lib/data/legacy/fileHandling'; import jwt, { JwtPayload } from 'jsonwebtoken'; +import { asyncMap } from '@/lib/helpers/javascriptHelpers'; const MacroEditorPage = async ({ params, searchParams }: { params: any; searchParams: any }) => { const jwtToken = searchParams.jwt; @@ -26,11 +27,13 @@ const MacroEditorPage = async ({ params, searchParams }: { params: any; searchPa const { userId } = await getCurrentUser(); if (userId) { - const userEnvironments: Environment[] = [getEnvironmentById(userId)]; + const userEnvironments: Environment[] = [await getEnvironmentById(userId)]; + const userOrganizationEnvironments = await getUserOrganizationEnvironments(userId); + userEnvironments.push( - ...getUserOrganizationEnvironments(userId).map((environmentId) => - getEnvironmentById(environmentId), - ), + ...(await asyncMap(userOrganizationEnvironments, async (environmentId) => { + return getEnvironmentById(environmentId); + })), ); const confluenceClientInfos = await getConfluenceClientInfos(clientKey); @@ -44,7 +47,7 @@ const MacroEditorPage = async ({ params, searchParams }: { params: any; searchPa const { ability } = await getCurrentEnvironment(confluenceSelectedProceedSpace.id); // get all the processes the user has access to - const ownedProcesses = (await getProcesses(ability, true)) as Process[]; + const ownedProcesses = (await getProcesses(userId, ability, true)) as Process[]; return ( - getEnvironmentById(environmentId), - ), + ...(await asyncMap(userOrganizationEnvironments, async (environmentId) => { + return getEnvironmentById(environmentId); + })), ); const confluenceClientInfos = await getConfluenceClientInfos(clientKey); @@ -56,7 +59,7 @@ const MacroPage = async ({ // get all the processes the user has access to in the selected space for confluence const ownedProcesses = ( await Promise.all( - (await getProcesses(ability)).map(async (process) => { + (await getProcesses(userId, ability)).map(async (process) => { const res = await getProcessBPMN(process.id, confluenceSelectedProceedSpace.id); if (typeof res === 'string') { return { ...process, bpmn: res }; diff --git a/src/management-system-v2/app/confluence/page.tsx b/src/management-system-v2/app/confluence/page.tsx index 77f05593c..b492e7efc 100644 --- a/src/management-system-v2/app/confluence/page.tsx +++ b/src/management-system-v2/app/confluence/page.tsx @@ -9,6 +9,7 @@ import { getConfluenceClientInfos } from '@/lib/data/legacy/fileHandling'; import jwt, { JwtPayload } from 'jsonwebtoken'; import { findPROCEEDMacrosInSpace } from './helpers'; import { ConfluenceProceedProcess } from './process-list'; +import { asyncMap } from '@/lib/helpers/javascriptHelpers'; const ConfluencePage = async ({ params, @@ -34,11 +35,13 @@ const ConfluencePage = async ({ const { userId } = await getCurrentUser(); if (userId) { - const userEnvironments: Environment[] = [getEnvironmentById(userId)]; + const userEnvironments: Environment[] = [await getEnvironmentById(userId)]; + const userOrganizationEnvironments = await getUserOrganizationEnvironments(userId); + userEnvironments.push( - ...getUserOrganizationEnvironments(userId).map((environmentId) => - getEnvironmentById(environmentId), - ), + ...(await asyncMap(userOrganizationEnvironments, async (environmentId) => { + return getEnvironmentById(environmentId); + })), ); const confluenceClientInfos = await getConfluenceClientInfos(clientKey); @@ -53,7 +56,7 @@ const ConfluencePage = async ({ const { ability } = await getCurrentEnvironment(confluenceSelectedProceedSpace.id); // get all the processes the user has access to - const ownedProcesses = await getProcesses(ability); + const ownedProcesses = await getProcesses(userId, ability); const result = await findPROCEEDMacrosInSpace(spaceKey); diff --git a/src/management-system-v2/app/confluence/process-list.tsx b/src/management-system-v2/app/confluence/process-list.tsx index bd4bc1565..3b03da9b0 100644 --- a/src/management-system-v2/app/confluence/process-list.tsx +++ b/src/management-system-v2/app/confluence/process-list.tsx @@ -68,8 +68,8 @@ const ProcessList = ({ row.cells.push( { - key: 'lastEdited' + process.lastEdited + process.id, - content: new Date(process.lastEdited).toLocaleString(), + key: 'lastEdited' + process.lastEditedOn + process.id, + content: new Date(process.lastEditedOn).toLocaleString(), }, { key: 'createdOn' + process.createdOn + process.id, diff --git a/src/management-system-v2/lib/data/user-schema.ts b/src/management-system-v2/lib/data/user-schema.ts index e5fc265f6..98d34d4b7 100644 --- a/src/management-system-v2/lib/data/user-schema.ts +++ b/src/management-system-v2/lib/data/user-schema.ts @@ -31,6 +31,7 @@ export const AuthenticatedUserSchema = AuthenticatedUserDataSchema.extend({ // NOTE: maybe email should be moved to user data as the user could change their email // TODO: email is optional because Twitter doesn't return an email for the time being, // once it does this type should be non-optional and the commit d34be03d9a89cd11418f4b550a04b3664ce1de71 reverted + confluenceId: z.string().optional(), email: z.string().optional(), emailVerifiedOn: z.date().nullable(), }); @@ -42,15 +43,7 @@ export const GuestUserSchema = z.object({ }); export type GuestUser = z.infer & { id: string }; -export const ConfluenceUserSchema = z.object({ - guest: z.literal(false), - confluence: z.literal(true), - id: z.string().optional(), - username: z.string(), -}); -export type ConfluenceUser = z.infer & { id: string }; - -export const UserSchema = z.union([AuthenticatedUserSchema, GuestUserSchema, ConfluenceUserSchema]); +export const UserSchema = z.union([AuthenticatedUserSchema, GuestUserSchema]); export type User = z.infer & { id: string }; /**