diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context/publishable-workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context/publishable-workspace-context.interface.ts index a8e07a9717..c435391d11 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context/publishable-workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context/publishable-workspace-context.interface.ts @@ -3,6 +3,7 @@ import type { UmbSaveableWorkspaceContextInterface } from './saveable-workspace- export interface UmbPublishableWorkspaceContextInterface extends UmbSaveableWorkspaceContextInterface { //getData(): EntityType | undefined; + saveAndPublish(): Promise; publish(): Promise; unpublish(): Promise; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts index 1a2a68fe58..6afd5b74ba 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts @@ -218,7 +218,26 @@ export class UmbDocumentRepository return { error }; } - async saveAndPublish(id: string, variantIds: Array) { + async saveAndPublish(id: string, item: UpdateDocumentRequestModel, variantIds: Array) { + if (!id) throw new Error('id is missing'); + if (!variantIds) throw new Error('variant IDs are missing'); + //await this.#init; + + await this.save(id, item); + + const { error } = await this.#detailDataSource.saveAndPublish(id, variantIds); + + if (!error) { + // TODO: Update other stores based on above effect. + + const notification = { data: { message: `Document saved and published` } }; + this.#notificationContext?.peek('positive', notification); + } + + return { error }; + } + + async publish(id: string, variantIds: Array) { if (!id) throw new Error('id is missing'); if (!variantIds) throw new Error('variant IDs are missing'); await this.#init; 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 6fbfc033e7..fe551aeef5 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 @@ -217,7 +217,19 @@ export class UmbDocumentWorkspaceContext const variantIds = currentData.variants?.map((x) => UmbVariantId.Create(x)); const id = this.getEntityId(); if(variantIds && id) { - await this.repository.saveAndPublish(id, variantIds); + await this.repository.publish(id, variantIds); + } + } + } + + public async saveAndPublish() { + // TODO: This might be right to publish all, but we need a method that just saves and publishes a declared range of variants. + const currentData = this.#currentData.value; + if(currentData) { + const variantIds = currentData.variants?.map((x) => UmbVariantId.Create(x)); + const id = currentData.id; + if(variantIds && id) { + await this.repository.saveAndPublish(id, currentData, variantIds); } } }