media type store

This commit is contained in:
Niels Lyngsø
2022-12-20 17:00:26 +01:00
parent 6d10ad9d13
commit f07f6e7114

View File

@@ -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<MediaTypeDetails | EntityTreeItem>}
* @description - Data Store for Media Types
*/
export class UmbMediaTypeStore extends UmbDataStoreBase<MediaTypeDetails | FolderTreeItem> {
export class UmbMediaTypeStore extends UmbNodeStoreBase<UmbMediaTypeStoreItemType> {
/**
* @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<MediaTypeDetails | null>)}
* @memberof UmbMediaTypesStore
*/
getByKey(key: string): Observable<UmbMediaTypeStoreItemType | null> {
// 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<MediaTypeDetails | EntityTreeItem>} mediaTypes
* @memberof UmbMediaTypesStore
* @return {*} {Promise<void>}
*/
async save(mediaTypes: Array<UmbMediaTypeStoreItemType>): Promise<void> {
// 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<Array<FolderTreeItem>> {
MediaTypeResource.getTreeMediaTypeRoot({}).then(
(res) => {