From 4de39ce51305e542dd4d82092f68e7bff7ad8bd9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 12 Dec 2022 13:29:55 +0100 Subject: [PATCH] fetch media items --- .../editors/media/editor-media.element.ts | 8 ++- .../editor-content/editor-content.element.ts | 43 +++++++------ .../trees/media/tree-media.element.ts | 1 + .../src/core/mocks/browser-handlers.ts | 2 + .../src/core/mocks/data/media.data.ts | 5 +- .../src/core/mocks/domains/media.handlers.ts | 35 +++++++++++ .../src/core/stores/media/media.store.ts | 63 +++++++++++++++++-- .../src/core/stores/member/member.store.ts | 0 8 files changed, 131 insertions(+), 26 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/stores/member/member.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/editors/media/editor-media.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/editors/media/editor-media.element.ts index 7dd4de4067..2a1658587c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/editors/media/editor-media.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/editors/media/editor-media.element.ts @@ -3,11 +3,13 @@ import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import type { ManifestEditorView, ManifestWithLoader } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry'; +import { UmbMediaStore } from 'src/core/stores/media/media.store'; +import { UmbContextConsumerMixin, UmbContextProviderMixin } from '@umbraco-cms/context-api'; import '../shared/editor-content/editor-content.element'; @customElement('umb-editor-media') -export class UmbEditorMediaElement extends LitElement { +export class UmbEditorMediaElement extends UmbContextConsumerMixin(UmbContextProviderMixin(LitElement)) { static styles = [ UUITextStyles, css` @@ -26,6 +28,10 @@ export class UmbEditorMediaElement extends LitElement { super(); this._registerEditorViews(); + + this.consumeContext('umbMediaStore', (mediaStore: UmbMediaStore) => { + this.provideContext('umbContentStore', mediaStore); + }); } private _registerEditorViews() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/editors/shared/editor-content/editor-content.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/editors/shared/editor-content/editor-content.element.ts index 18d03e63f2..8309db9ea6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/editors/shared/editor-content/editor-content.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/editors/shared/editor-content/editor-content.element.ts @@ -17,6 +17,8 @@ import '../editor-entity-layout/editor-entity-layout.element'; // TODO: Make this dynamic, use load-extensions method to loop over extensions for this node. import './views/edit/editor-view-content-edit.element'; import './views/info/editor-view-content-info.element'; +import { UmbDocumentStore } from 'src/core/stores/document/document.store'; +import { UmbMediaStore } from 'src/core/stores/media/media.store'; @customElement('umb-editor-content') export class UmbEditorContentElement extends UmbContextProviderMixin( @@ -60,19 +62,19 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( alias!: string; @state() - _node?: NodeEntity; + _content?: NodeEntity; - private _nodeStore?: UmbNodeStore; + private _store?: UmbDocumentStore | UmbMediaStore; private _nodeContext?: UmbNodeContext; private _notificationService?: UmbNotificationService; constructor() { super(); - this.consumeAllContexts(['umbNodeStore', 'umbNotificationService'], (instances) => { - this._nodeStore = instances['umbNodeStore']; + this.consumeAllContexts(['umbContentStore', 'umbNotificationService'], (instances) => { + this._store = instances['umbContentStore']; this._notificationService = instances['umbNotificationService']; - this._useNode(); + this._observeContent(); }); this.addEventListener('property-value-change', this._onPropertyValueChange); @@ -82,7 +84,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( const target = e.composedPath()[0] as any; // TODO: Set value. - const property = this._node?.properties.find((x) => x.alias === target.alias); + const property = this._content?.properties.find((x) => x.alias === target.alias); if (property) { this._setPropertyValue(property.alias, target.value); } else { @@ -91,28 +93,29 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( }; private _setPropertyValue(alias: string, value: unknown) { - this._node?.data.forEach((data) => { + this._content?.data.forEach((data) => { if (data.alias === alias) { data.value = value; } }); } - private _useNode() { - if (!this._nodeStore) return; + private _observeContent() { + if (!this._store) return; - this.observe(this._nodeStore.getByKey(this.entityKey), (node) => { - if (!node) return; // TODO: Handle nicely if there is no node. + this.observe(this._store.getByKey(this.entityKey), (content) => { + debugger + if (!content) return; // TODO: Handle nicely if there is no node. if (!this._nodeContext) { - this._nodeContext = new UmbNodeContext(node); + this._nodeContext = new UmbNodeContext(content); this.provideContext('umbNodeContext', this._nodeContext); } else { - this._nodeContext.update(node); + this._nodeContext.update(content); } this.observe(this._nodeContext.data.pipe(distinctUntilChanged()), (data) => { - this._node = data; + this._content = data; }); }); } @@ -122,9 +125,9 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( } private _onSave() { - // TODO: What if store is not present, what if node is not loaded.... - if (this._node) { - this._nodeStore?.save([this._node]).then(() => { + // TODO: What if store is not present, what if content is not loaded.... + if (this._content) { + this._store?.save([this._content]).then(() => { const data: UmbNotificationDefaultData = { message: 'Document Saved' }; this._notificationService?.peek('positive', { data }); }); @@ -161,9 +164,9 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( return html`
- + - ${this._node && this._node.variants.length > 0 + ${this._content && this._content.variants.length > 0 ? html`
@@ -176,7 +179,7 @@ export class UmbEditorContentElement extends UmbContextProviderMixin( - ${this._node && this._node.variants.length > 0 + ${this._content && this._content.variants.length > 0 ? html`