From c08e8d49f69897e328b852865d55fe578dcdb82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 8 Nov 2023 16:21:41 +1300 Subject: [PATCH] add missing properties. and add generic updateProperty function --- .../workspace/media-type-workspace.context.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts index da94bfcba4..7e736271f4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts @@ -4,17 +4,22 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { MediaTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { firstValueFrom } from 'rxjs'; +type EntityType = MediaTypeResponseModel; export class UmbMediaTypeWorkspaceContext - extends UmbWorkspaceContext - implements UmbSaveableWorkspaceContextInterface + extends UmbWorkspaceContext + implements UmbSaveableWorkspaceContextInterface { - #data = new UmbObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); #getDataPromise?: Promise; name = this.#data.asObservablePart((data) => data?.name); id = this.#data.asObservablePart((data) => data?.id); + alias = this.#data.asObservablePart((data) => data?.alias); + description = this.#data.asObservablePart((data) => data?.description); + icon = this.#data.asObservablePart((data) => data?.icon); constructor(host: UmbControllerHostElement) { super(host, 'Umb.Workspace.MediaType', new UmbMediaTypeRepository(host)); @@ -32,12 +37,8 @@ export class UmbMediaTypeWorkspaceContext return 'media-type'; } - setName(name: string) { - this.#data.update({ name }); - } - - setPropertyValue(alias: string, value: string) { - // TODO => Implement setPropertyValue + updateProperty(propertyName: PropertyName, value: EntityType[PropertyName]) { + this.#data.update({ [propertyName]: value }); } async load(id: string) { @@ -52,13 +53,17 @@ export class UmbMediaTypeWorkspaceContext async create() { const { data } = await this.repository.createScaffold(); if (!data) return; + this.setIsNew(true); this.#data.next(data); } async save() { - if (!this.#data.value) return; - await this.repository.save(this.#data.value); + const id = await firstValueFrom(this.id); + + if (!this.#data.value || !id) return; + + await this.repository.save(id, this.#data.value); this.setIsNew(false); }