diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/workspace-content.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/workspace-content.context.ts index 9ddbd0587f..4bbbb6245b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/workspace-content.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/workspace-content.context.ts @@ -1,7 +1,7 @@ import { v4 as uuidv4 } from 'uuid'; +import { BehaviorSubject, Observable } from 'rxjs'; import { UmbNotificationService } from '../../../../../core/notification'; import { UmbNotificationDefaultData } from '../../../../../core/notification/layouts/default'; -import { UmbWorkspaceContext } from '../workspace-context/workspace.context'; import { UmbNodeStoreBase } from '@umbraco-cms/stores/store'; import { UmbControllerHostInterface } from 'src/core/controller/controller-host.mixin'; import { UmbContextConsumerController } from 'src/core/context-api/consume/context-consumer.controller'; @@ -14,7 +14,14 @@ import type { ContentDetails } from '@umbraco-cms/models'; export class UmbWorkspaceContentContext< ContentTypeType extends ContentDetails = ContentDetails, StoreType extends UmbNodeStoreBase = UmbNodeStoreBase -> extends UmbWorkspaceContext { +> { + + protected _host: UmbControllerHostInterface; + + // TODO: figure out how fine grained we want to make our observables. + // TODO: add interface + protected _data!:BehaviorSubject; + public readonly data: Observable; protected _notificationService?: UmbNotificationService; @@ -32,8 +39,10 @@ export class UmbWorkspaceContentContext< storeAlias: string, entityType: string ) { - super(host, defaultData); + this._host = host; + this._data = new BehaviorSubject(defaultData); + this.data = this._data.asObservable(); this.entityType = entityType; host.addEventListener('property-value-change', this._onPropertyValueChange); @@ -59,6 +68,14 @@ export class UmbWorkspaceContentContext< }); } + + public getData() { + return this._data.getValue(); + } + public update(data: Partial) { + this._data.next({ ...this.getData(), ...data }); + } + load(entityKey: string) { this.#isNew = false; this.entityKey = entityKey; @@ -137,4 +154,12 @@ export class UmbWorkspaceContentContext< this._notificationService?.peek('danger', { data }); }); } + + + + // TODO: how can we make sure to call this. + public destroy(): void { + this._host.removeEventListener('property-value-change', this._onPropertyValueChange); + this._data.unsubscribe(); + } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/notes-from-structure-talk.txt b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/notes-from-structure-talk.txt deleted file mode 100644 index ff458e753e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/notes-from-structure-talk.txt +++ /dev/null @@ -1,131 +0,0 @@ - -CollectionContext { - - // RxJS store.. - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - getStore(); - -} - - -DocumentCollectionContext extends CollectionContext { - - // RxJS store.. - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - getStore(); - publish(); - update(); - -} - - -MediaCollectionContext extends CollectionContext { - - // RxJS store.. - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - getStore(); - update(); - save(); - -} - - -VendrCollectionContext extends CollectionContext { - - // RxJS store.. - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - getStore(); - update(); - save(); - -} - - - - - - - -DocumentContext { - - // Validation? - - // RxJS store.. - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - getStore(); - - setPublishDate() - - addVariant(name) { - this.data.name = name; - } - - save() { - this.backendStore.save() - } - -} - - -PropertyContext { - - // Validation? - -} - - -BlockContext { - - // Validation? - - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - - this._liveEditing = true; - - setName(name) { - this.update({name: name}) - if(this._liveEditing) { - this.save(); - } - } - - save() { - // - this.parentData.block[123] = this.data.getData(); - this.parentDatarxJS.update(this.parentData); - } - -} - - -var myBlockContext = new BlockContext(documentData.blocks[1]); - - -// Property Editor Edit Element Name: - -myBlockContext.data.subscribe((blockData) => { - this.input.value = blockData.name; -}) -this.input.addEventListener("change", () => { - myBlockContext.setName(this.input.value); - // RXJS update?? ^^ -}) - - - - -blockContext.setName('sdaafgdss'); -// Does does other update? - - diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace.context.ts deleted file mode 100644 index 1277e47ace..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace.context.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BehaviorSubject, Observable } from "rxjs"; -import { UmbControllerHostInterface } from "src/core/controller/controller-host.mixin"; - - -export abstract class UmbWorkspaceContext { - - protected _host: UmbControllerHostInterface; - - // TODO: figure out how fine grained we want to make our observables. - // TODO: add interface - protected _data!:BehaviorSubject; - public readonly data: Observable; - - - constructor(host:UmbControllerHostInterface, defaultData: DataType) { - this._host = host; - - this._data = new BehaviorSubject(defaultData); - this.data = this._data.asObservable(); - } - - - public getData() { - return this._data.getValue(); - } - - public update(data: Partial) { - this._data.next({ ...this.getData(), ...data }); - } - - - - - // TODO: how can we make sure to call this. - public destroy(): void { - this._data.unsubscribe(); - } - -} -