diff --git a/frontend/packages/shared/src/api/mutations.ts b/frontend/packages/shared/src/api/mutations.ts index 83ceff78552..aaafd1ab96e 100644 --- a/frontend/packages/shared/src/api/mutations.ts +++ b/frontend/packages/shared/src/api/mutations.ts @@ -45,7 +45,6 @@ import type { ApplicationAttachmentMetadata } from 'app-shared/types/Application import type { CreateDeploymentPayload } from 'app-shared/types/api/CreateDeploymentPayload'; import type { CreateReleasePayload } from 'app-shared/types/api/CreateReleasePayload'; import type { CreateRepoCommitPayload } from 'app-shared/types/api/CreateRepoCommitPayload'; -import type { ExternalFormLayoutV3 } from 'app-shared/types/api/FormLayoutsResponseV3'; import type { LayoutSetPayload } from 'app-shared/types/api/LayoutSetsResponse'; import type { ILayoutSettings, ITextResourcesObjectFormat } from 'app-shared/types/global'; import type { RuleConfig } from 'app-shared/types/RuleConfig'; @@ -95,7 +94,7 @@ export const pushRepoChanges = (org: string, app: string) => post(repoPushPath(o export const resetRepoChanges = (org: string, app: string) => get(repoResetPath(org, app)); //Technically a mutation, but currently only implemented as a GET export const saveDataModel = (org: string, app: string, modelPath: string, payload: JsonSchema) => put(dataModelPath(org, app, modelPath, true), payload); export const saveFormLayout = (org: string, app: string, layoutName: string, layoutSetName: string, payload: FormLayoutRequest) => post(formLayoutPath(org, app, layoutName, layoutSetName), payload); -export const saveFormLayoutV3 = (org: string, app: string, layoutName: string, layoutSetName: string, payload: ExternalFormLayoutV3) => post(formLayoutPath(org, app, layoutName, layoutSetName), payload); +export const saveFormLayoutV3 = (org: string, app: string, layoutName: string, layoutSetName: string, payload: FormLayoutRequest) => post(formLayoutPath(org, app, layoutName, layoutSetName), payload); export const saveFormLayoutSettings = (org: string, app: string, layoutSetName: string, payload: ILayoutSettings) => post(layoutSettingsPath(org, app, layoutSetName), payload); export const saveRuleConfig = (org: string, app: string, layoutSetName: string, payload: RuleConfig) => post(ruleConfigPath(org, app, layoutSetName), payload); export const setStarredRepo = (org: string, app: string) => put(userStarredRepoPath(org, app), {}); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.test.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.test.ts index b3b6fe5ff98..6f5e5a90d91 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.test.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.test.ts @@ -37,10 +37,12 @@ describe('useAddLayoutMutation', () => { layoutName, selectedLayoutSet, { - $schema: 'https://altinncdn.no/schemas/json/layout/layout.schema.v1.json', - data: { - layout: [expect.objectContaining({ type: ComponentTypeV3.NavigationButtons })], - hidden: undefined, + layout: { + $schema: 'https://altinncdn.no/schemas/json/layout/layout.schema.v1.json', + data: { + layout: [expect.objectContaining({ type: ComponentTypeV3.NavigationButtons })], + hidden: undefined, + }, }, }, ); @@ -66,10 +68,12 @@ describe('useAddLayoutMutation', () => { formLayoutSettingsMock.receiptLayoutName, selectedLayoutSet, { - $schema: 'https://altinncdn.no/schemas/json/layout/layout.schema.v1.json', - data: { - layout: [], - hidden: undefined, + layout: { + $schema: 'https://altinncdn.no/schemas/json/layout/layout.schema.v1.json', + data: { + layout: [], + hidden: undefined, + }, }, }, ); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.ts index 468df272459..192c9f75e4f 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useAddLayoutMutation.ts @@ -13,6 +13,7 @@ import { useFormLayoutSettingsQuery } from '../queries/useFormLayoutSettingsQuer import type { ILayoutSettings } from 'app-shared/types/global'; import { addOrRemoveNavigationButtons } from '../../utils/formLayoutsUtils'; import { internalLayoutToExternal } from '../../converters/formLayoutConverters'; +import { type FormLayoutRequest } from 'app-shared/types/api/FormLayoutRequest'; export interface AddLayoutMutationArgs { layoutName: string; @@ -29,7 +30,9 @@ export const useAddLayoutMutation = (org: string, app: string, layoutSetName: st const save = async (updatedLayoutName: string, updatedLayout: IInternalLayout) => { const convertedLayout: ExternalFormLayoutV3 = internalLayoutToExternal(updatedLayout); - return await saveFormLayoutV3(org, app, updatedLayoutName, layoutSetName, convertedLayout); + return await saveFormLayoutV3(org, app, updatedLayoutName, layoutSetName, { + layout: convertedLayout, + } as unknown as FormLayoutRequest); }; return useMutation({ diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormComponentMutation.test.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormComponentMutation.test.ts index ee0d1c1994d..221a3adbdb8 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormComponentMutation.test.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormComponentMutation.test.ts @@ -21,8 +21,10 @@ describe('useDeleteFormComponentMutation', () => { layout1NameMock, selectedLayoutSet, expect.objectContaining({ - data: expect.objectContaining({ - layout: expect.not.arrayContaining([expect.objectContaining({ id: component2IdMock })]), + layout: expect.objectContaining({ + data: expect.objectContaining({ + layout: expect.not.arrayContaining([expect.objectContaining({ id: component2IdMock })]), + }), }), }), ); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormContainerMutation.test.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormContainerMutation.test.ts index a3ca0dc4ae0..26a96f27f93 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormContainerMutation.test.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteFormContainerMutation.test.ts @@ -27,8 +27,10 @@ describe('useDeleteFormContainerMutation', () => { layout1NameMock, selectedLayoutSet, expect.objectContaining({ - data: expect.objectContaining({ - layout: expect.not.arrayContaining([expect.objectContaining({ id })]), + layout: expect.objectContaining({ + data: expect.objectContaining({ + layout: expect.not.arrayContaining([expect.objectContaining({ id })]), + }), }), }), ); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteLayoutMutation.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteLayoutMutation.ts index 649d5588b68..74c3cc0651d 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteLayoutMutation.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useDeleteLayoutMutation.ts @@ -15,6 +15,7 @@ import { useAddLayoutMutation } from './useAddLayoutMutation'; import { useText } from '../useText'; import { selectedLayoutNameSelector } from '../../selectors/formLayoutSelectors'; import { internalLayoutToExternal } from '../../converters/formLayoutConverters'; +import { type FormLayoutRequest } from 'app-shared/types/api/FormLayoutRequest'; export const useDeleteLayoutMutation = (org: string, app: string, layoutSetName: string) => { const { deleteFormLayout, saveFormLayoutV3 } = useServicesContext(); @@ -31,7 +32,9 @@ export const useDeleteLayoutMutation = (org: string, app: string, layoutSetName: const saveLayout = async (updatedLayoutName: string, updatedLayout: IInternalLayout) => { const convertedLayout: ExternalFormLayoutV3 = internalLayoutToExternal(updatedLayout); - return await saveFormLayoutV3(org, app, updatedLayoutName, layoutSetName, convertedLayout); + return await saveFormLayoutV3(org, app, updatedLayoutName, layoutSetName, { + layout: convertedLayout, + } as unknown as FormLayoutRequest); }; return useMutation({ diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.test.tsx b/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.test.tsx index a46f0eca0ab..7409af864e4 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.test.tsx +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.test.tsx @@ -62,20 +62,22 @@ describe('useFormLayoutMutation', () => { layoutName, selectedLayoutSet, expect.objectContaining({ - data: { - layout: [ - { - id: containerId, - type: ComponentTypeV3.Group, - children: [componentId], - }, - { - id: componentId, - type: componentType, - dataModelBindings: {}, - }, - ], - }, + layout: expect.objectContaining({ + data: { + layout: [ + { + id: containerId, + type: ComponentTypeV3.Group, + children: [componentId], + }, + { + id: componentId, + type: componentType, + dataModelBindings: {}, + }, + ], + }, + }), }), ); }); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.ts index fce1cdac5b5..752df2a33f7 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useFormLayoutMutation.ts @@ -6,6 +6,7 @@ import { usePreviewConnection } from 'app-shared/providers/PreviewConnectionCont import type { ExternalFormLayoutV3 } from 'app-shared/types/api/FormLayoutsResponseV3'; import { useAppContext } from '../useAppContext'; import { internalLayoutToExternal } from '../../converters/formLayoutConverters'; +import type { FormLayoutRequest } from 'app-shared/types/api/FormLayoutRequest'; export const useFormLayoutMutation = ( org: string, @@ -21,7 +22,12 @@ export const useFormLayoutMutation = ( return useMutation({ mutationFn: (layout: IInternalLayout) => { const convertedLayout: ExternalFormLayoutV3 = internalLayoutToExternal(layout); - return saveFormLayoutV3(org, app, layoutName, layoutSetName, convertedLayout).then( + + const requestPayload = { + layout: convertedLayout, + } as unknown as FormLayoutRequest; + + return saveFormLayoutV3(org, app, layoutName, layoutSetName, requestPayload).then( () => layout, ); }, diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormComponentMutation.test.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormComponentMutation.test.ts index 5008630b419..969c30b15f8 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormComponentMutation.test.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormComponentMutation.test.ts @@ -55,14 +55,16 @@ describe('useUpdateFormComponentMutation', () => { layout1NameMock, selectedLayoutSet, expect.objectContaining({ - data: expect.objectContaining({ - layout: expect.arrayContaining([ - { - id, - type, - dataModelBindings, - }, - ]), + layout: expect.objectContaining({ + data: expect.objectContaining({ + layout: expect.arrayContaining([ + { + id, + type, + dataModelBindings, + }, + ]), + }), }), }), ); @@ -128,15 +130,17 @@ describe('useUpdateFormComponentMutation', () => { layout1NameMock, selectedLayoutSet, expect.objectContaining({ - data: expect.objectContaining({ - layout: expect.arrayContaining([ - { - id, - type: componentType, - dataModelBindings, - ...optionsProp, - }, - ]), + layout: expect.objectContaining({ + data: expect.objectContaining({ + layout: expect.arrayContaining([ + { + id, + type: componentType, + dataModelBindings, + ...optionsProp, + }, + ]), + }), }), }), ); diff --git a/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormContainerMutation.test.ts b/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormContainerMutation.test.ts index 2fc65272eb2..6e7416002e9 100644 --- a/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormContainerMutation.test.ts +++ b/frontend/packages/ux-editor-v3/src/hooks/mutations/useUpdateFormContainerMutation.test.ts @@ -49,14 +49,16 @@ describe('useUpdateFormContainerMutation', () => { layout1NameMock, selectedLayoutSet, expect.objectContaining({ - data: expect.objectContaining({ - layout: expect.arrayContaining([ - { - ...layout1Mock.data.layout[0], - id: updatedContainer.id, - maxCount, - }, - ]), + layout: expect.objectContaining({ + data: expect.objectContaining({ + layout: expect.arrayContaining([ + { + ...layout1Mock.data.layout[0], + id: updatedContainer.id, + maxCount, + }, + ]), + }), }), }), );