Merge pull request #1271 from umbraco/feature/mock-api-media-type-structure

Adds mock API for Media Type structure
This commit is contained in:
Lee Kelleher
2024-02-22 13:48:26 +00:00
committed by GitHub
4 changed files with 49 additions and 3 deletions

View File

@@ -67,7 +67,7 @@ export const data: Array<UmbMockMediaTypeModel> = [
sortOrder: 0,
},
],
allowedAsRoot: false,
allowedAsRoot: true,
variesByCulture: false,
variesBySegment: false,
isElement: false,

View File

@@ -7,11 +7,14 @@ import type { UmbMockMediaTypeModel } from './media-type.data.js';
import { data } from './media-type.data.js';
import { UmbId } from '@umbraco-cms/backoffice/id';
import type {
AllowedMediaTypeModel,
CreateFolderRequestModel,
CreateMediaTypeRequestModel,
MediaTypeItemResponseModel,
MediaTypeResponseModel,
MediaTypeSortModel,
MediaTypeTreeItemResponseModel,
PagedAllowedMediaTypeModel,
} from '@umbraco-cms/backoffice/external/backend-api';
class UmbMediaTypeMockDB extends UmbEntityMockDbBase<UmbMockMediaTypeModel> {
@@ -27,6 +30,21 @@ class UmbMediaTypeMockDB extends UmbEntityMockDbBase<UmbMockMediaTypeModel> {
constructor(data: Array<UmbMockMediaTypeModel>) {
super(data);
}
getAllowedChildren(id: string): PagedAllowedMediaTypeModel {
const mediaType = this.detail.read(id);
const allowedMediaTypes = mediaType.allowedMediaTypes.map((sortModel: MediaTypeSortModel) =>
this.detail.read(sortModel.mediaType.id),
);
const mappedItems = allowedMediaTypes.map((item: UmbMockMediaTypeModel) => allowedMediaTypeMapper(item));
return { items: mappedItems, total: mappedItems.length };
}
getAllowedAtRoot(): PagedAllowedMediaTypeModel {
const mockItems = this.data.filter((item) => item.allowedAsRoot);
const mappedItems = mockItems.map((item) => allowedMediaTypeMapper(item));
return { items: mappedItems, total: mappedItems.length };
}
}
const createMockMediaTypeFolderMapper = (request: CreateFolderRequestModel): UmbMockMediaTypeModel => {
@@ -108,4 +126,13 @@ const mediaTypeItemMapper = (item: UmbMockMediaTypeModel): MediaTypeItemResponse
};
};
const allowedMediaTypeMapper = (item: UmbMockMediaTypeModel): AllowedMediaTypeModel => {
return {
id: item.id,
name: item.name,
description: item.description,
icon: item.icon,
};
};
export const umbMediaTypeMockDb = new UmbMediaTypeMockDB(data);

View File

@@ -1,6 +1,7 @@
import { treeHandlers } from './tree.handlers.js';
import { itemHandlers } from './item.handlers.js';
import { detailHandlers } from './detail.handlers.js';
import { itemHandlers } from './item.handlers.js';
import { folderHandlers } from './folder.handlers.js';
import { structureHandlers } from './structure.handlers.js';
export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...detailHandlers];
export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...structureHandlers, ...detailHandlers];

View File

@@ -0,0 +1,18 @@
const { rest } = window.MockServiceWorker;
import { umbMediaTypeMockDb } from '../../data/media-type/media-type.db.js';
import { UMB_SLUG } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const structureHandlers = [
rest.get(umbracoPath(`${UMB_SLUG}/:id/allowed-children`), (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return res(ctx.status(400));
const response = umbMediaTypeMockDb.getAllowedChildren(id);
return res(ctx.status(200), ctx.json(response));
}),
rest.get(umbracoPath(`${UMB_SLUG}/allowed-at-root`), (req, res, ctx) => {
const response = umbMediaTypeMockDb.getAllowedAtRoot();
return res(ctx.status(200), ctx.json(response));
}),
];