From f07f6e7114fe2179bc44f8d19adb1dc4a86a517d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 20 Dec 2022 17:00:26 +0100 Subject: [PATCH] media type store --- .../stores/media-type/media-type.store.ts | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/stores/media-type/media-type.store.ts b/src/Umbraco.Web.UI.Client/src/core/stores/media-type/media-type.store.ts index 854c817174..099dd40085 100644 --- a/src/Umbraco.Web.UI.Client/src/core/stores/media-type/media-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/core/stores/media-type/media-type.store.ts @@ -1,15 +1,63 @@ import { map, Observable } from 'rxjs'; -import { UmbDataStoreBase } from '../store'; +import { UmbNodeStoreBase } from '../store'; import { MediaTypeResource, ApiError, ProblemDetails, FolderTreeItem } from '@umbraco-cms/backend-api'; import type { MediaTypeDetails } from '@umbraco-cms/models'; + +export type UmbMediaTypeStoreItemType = MediaTypeDetails | FolderTreeItem; /** * @export * @class UmbMediaTypeStore * @extends {UmbDataStoreBase} * @description - Data Store for Media Types */ -export class UmbMediaTypeStore extends UmbDataStoreBase { +export class UmbMediaTypeStore extends UmbNodeStoreBase { + + /** + * @description - Request a Data Type by key. The Data Type is added to the store and is returned as an Observable. + * @param {string} key + * @return {*} {(Observable)} + * @memberof UmbMediaTypesStore + */ + getByKey(key: string): Observable { + // TODO: use backend cli when available. + /* + fetch(`/umbraco/backoffice/media-type/details/${key}`) + .then((res) => res.json()) + .then((data) => { + this.updateItems(data); + }); + + return this.items.pipe(map((mediaTypes) => mediaTypes.find((mediaType) => mediaType.key === key && isMediaTypeDetails(mediaType)) as UmbMediaTypeStoreItemType || null)); + */ + } + + /** + * @description - Save a Data Type. + * @param {Array} mediaTypes + * @memberof UmbMediaTypesStore + * @return {*} {Promise} + */ + async save(mediaTypes: Array): Promise { + // TODO: use backend cli when available. + /* + try { + const res = await fetch('/umbraco/backoffice/media-type/save', { + method: 'POST', + body: JSON.stringify(mediaTypes), + headers: { + 'Content-Type': 'application/json', + }, + }); + const json = await res.json(); + this.updateItems(json); + } catch (error) { + console.error('Save Data Type error', error); + } + */ + } + + getTreeRoot(): Observable> { MediaTypeResource.getTreeMediaTypeRoot({}).then( (res) => {