diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.server.data.ts index 6cf3c8cb9d..71b0024cd2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.server.data.ts @@ -90,7 +90,17 @@ export class UmbDocumentServerDataSource async insert(document: CreateDocumentRequestModel & { id: string }) { if (!document.id) throw new Error('Id is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.postDocument({ requestBody: document })); + // TODO: Hack to remove some props that ruins the document-type post end-point. + const unFroozenDocument = { ...document }; + (unFroozenDocument as any).$type = undefined; + (unFroozenDocument as any).id = undefined; + + (unFroozenDocument.variants as any) = + unFroozenDocument.variants?.map((variant) => { + return { ...variant, $type: undefined }; + }) ?? []; + + return tryExecuteAndNotify(this.#host, DocumentResource.postDocument({ requestBody: unFroozenDocument })); } /** @@ -102,7 +112,17 @@ export class UmbDocumentServerDataSource async update(id: string, document: UpdateDocumentRequestModel) { if (!id) throw new Error('Id is missing'); - return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentById({ id, requestBody: document })); + // TODO: Hack to remove some props that ruins the document-type post end-point. + const unFroozenDocument = { ...document }; + (unFroozenDocument as any).$type = undefined; + (unFroozenDocument as any).id = undefined; + + (unFroozenDocument.variants as any) = + unFroozenDocument.variants?.map((variant) => { + return { ...variant, $type: undefined }; + }) ?? []; + + return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentById({ id, requestBody: unFroozenDocument })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index b78bc929bb..a3fd61cfc9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -9,6 +9,7 @@ import { } from '@umbraco-cms/backoffice/workspace'; import type { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { + appendToFrozenArray, partialUpdateFrozenArray, UmbObjectState, UmbObserverController, @@ -159,12 +160,12 @@ export class UmbDocumentWorkspaceContext } } setPropertyValue(alias: string, value: unknown, variantId?: UmbVariantId) { - const partialEntry = { value }; + const entry = { $type: 'DocumentValueModel', ...variantId?.toObject(), alias, value }; const currentData = this.#draft.value; if (currentData) { - const values = partialUpdateFrozenArray( + const values = appendToFrozenArray( currentData.values || [], - partialEntry, + entry, (x) => x.alias === alias && (variantId ? variantId.compare(x) : true) ); this.#draft.update({ values });