From cefa1ea90b7a77bc2e347c290303e17bb84a720d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 8 Jan 2024 13:45:24 +0100 Subject: [PATCH] split stylesheet handlers --- .../src/mocks/browser-handlers.ts | 2 +- .../file-system/file-system-detail.manager.ts | 25 +++-- .../src/mocks/data/script/script.db.ts | 2 +- .../src/mocks/handlers/stylesheet.handlers.ts | 100 ------------------ .../handlers/stylesheet/detail.handlers.ts | 42 ++++++++ .../handlers/stylesheet/folder.handlers.ts | 28 +++++ .../src/mocks/handlers/stylesheet/index.ts | 7 ++ .../handlers/stylesheet/item.handlers.ts | 12 +++ .../handlers/stylesheet/overview.handlers.ts | 13 +++ .../src/mocks/handlers/stylesheet/slug.ts | 1 + .../handlers/stylesheet/tree.handlers.ts | 18 ++++ .../stylesheet-detail.server.data-source.ts | 2 +- 12 files changed, 143 insertions(+), 109 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/slug.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index 086f2db8cb..7f077a5b6a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -28,7 +28,7 @@ import { handlers as logViewerHandlers } from './handlers/log-viewer.handlers.js import { handlers as packageHandlers } from './handlers/package.handlers.js'; import { handlers as rteEmbedHandlers } from './handlers/rte-embed.handlers.js'; import { handlers as staticFileHandlers } from './handlers/static-file.handlers.js'; -import { handlers as stylesheetHandlers } from './handlers/stylesheet.handlers.js'; +import { handlers as stylesheetHandlers } from './handlers/stylesheet/index.js'; import { handlers as partialViewsHandlers } from './handlers/partial-views.handlers.js'; import { handlers as tagHandlers } from './handlers/tag-handlers.js'; import { handlers as configHandlers } from './handlers/config.handlers.js'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/file-system/file-system-detail.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/file-system/file-system-detail.manager.ts index c6cb8c6d85..f4dae8aa75 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/file-system/file-system-detail.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/file-system/file-system-detail.manager.ts @@ -37,8 +37,24 @@ export class UmbMockFileSystemDetailManager { return { name: item.name, path: item.path, - parentPath: item.parentPath, + parentPath: item.parentPath, content: item.content, }; }; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet.handlers.ts deleted file mode 100644 index 870b5cc57a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet.handlers.ts +++ /dev/null @@ -1,100 +0,0 @@ -const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../data/stylesheet/stylesheet.db.js'; -import { - CreatePathFolderRequestModel, - CreateStylesheetRequestModel, - UpdateStylesheetRequestModel, -} from '@umbraco-cms/backoffice/backend-api'; -import { umbracoPath } from '@umbraco-cms/backoffice/utils'; - -const treeHandlers = [ - rest.get(umbracoPath('/tree/stylesheet/root'), (req, res, ctx) => { - const response = umbStylesheetData.tree.getRoot(); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get(umbracoPath('/tree/stylesheet/children'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbStylesheetData.tree.getChildrenOf(path); - return res(ctx.status(200), ctx.json(response)); - }), -]; - -const detailHandlers = [ - rest.get(umbracoPath('/stylesheet'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbStylesheetData.file.read(path); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.post(umbracoPath('/stylesheet'), async (req, res, ctx) => { - const requestBody = (await req.json()) as CreateStylesheetRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - const path = umbStylesheetData.file.create(requestBody); - return res( - ctx.status(200), - ctx.set({ - Location: path, - }), - ); - }), - - rest.delete(umbracoPath('/stylesheet'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - umbStylesheetData.file.delete(path); - return res(ctx.status(200)); - }), - - rest.put(umbracoPath('/stylesheet'), async (req, res, ctx) => { - const requestBody = (await req.json()) as UpdateStylesheetRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - umbStylesheetData.file.update(requestBody); - return res(ctx.status(200)); - }), -]; - -const itemHandlers = [ - rest.get(umbracoPath('/stylesheet/item'), (req, res, ctx) => { - const paths = req.url.searchParams.getAll('paths'); - if (!paths) return res(ctx.status(400, 'no body found')); - const items = umbStylesheetData.item.getItems(paths); - return res(ctx.status(200), ctx.json(items)); - }), -]; - -const collectionHandlers = [ - rest.get(umbracoPath('/stylesheet/all'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return; - const response = umbStylesheetData.getAllStylesheets(); - return res(ctx.status(200), ctx.json(response)); - }), -]; - -const folderHandlers = [ - rest.get(umbracoPath('/stylesheet/folder'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - const response = umbStylesheetData.folder.read(path); - return res(ctx.status(200), ctx.json(response)); - }), - - rest.post(umbracoPath('/stylesheet/folder'), async (req, res, ctx) => { - const requestBody = (await req.json()) as CreatePathFolderRequestModel; - if (!requestBody) return res(ctx.status(400, 'no body found')); - umbStylesheetData.folder.create(requestBody); - return res(ctx.status(200)); - }), - - rest.delete(umbracoPath('/stylesheet/folder'), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return res(ctx.status(400)); - umbStylesheetData.folder.delete(path); - return res(ctx.status(200)); - }), -]; - -export const handlers = [...treeHandlers, ...detailHandlers, ...itemHandlers, ...collectionHandlers, ...folderHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts new file mode 100644 index 0000000000..2132868379 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts @@ -0,0 +1,42 @@ +const { rest } = window.MockServiceWorker; +import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { UMB_SLUG } from './slug.js'; +import { CreateStylesheetRequestModel, UpdateStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const detailHandlers = [ + rest.post(umbracoPath(UMB_SLUG), async (req, res, ctx) => { + const requestBody = (await req.json()) as CreateStylesheetRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + const path = umbStylesheetData.file.create(requestBody); + return res( + ctx.status(200), + ctx.set({ + Location: path, + }), + ); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + const response = umbStylesheetData.file.read(path); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.delete(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + umbStylesheetData.file.delete(path); + return res(ctx.status(200)); + }), + + rest.put(umbracoPath(`${UMB_SLUG}/:path`), async (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return res(ctx.status(400)); + const requestBody = (await req.json()) as UpdateStylesheetRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + umbStylesheetData.file.update(path, requestBody); + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts new file mode 100644 index 0000000000..cec27b6a39 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts @@ -0,0 +1,28 @@ +const { rest } = window.MockServiceWorker; +import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { UMB_SLUG } from './slug.js'; +import { CreatePathFolderRequestModel } from '@umbraco-cms/backoffice/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const folderHandlers = [ + rest.get(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + const response = umbStylesheetData.folder.read(path); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.post(umbracoPath(`${UMB_SLUG}/folder`), async (req, res, ctx) => { + const requestBody = (await req.json()) as CreatePathFolderRequestModel; + if (!requestBody) return res(ctx.status(400, 'no body found')); + umbStylesheetData.folder.create(requestBody); + return res(ctx.status(200)); + }), + + rest.delete(umbracoPath(`${UMB_SLUG}/folder`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + umbStylesheetData.folder.delete(path); + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/index.ts new file mode 100644 index 0000000000..2fed924518 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/index.ts @@ -0,0 +1,7 @@ +import { folderHandlers } from './folder.handlers.js'; +import { treeHandlers } from './tree.handlers.js'; +import { detailHandlers } from './detail.handlers.js'; +import { itemHandlers } from './item.handlers.js'; +import { overviewHandlers } from './overview.handlers.js'; + +export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...overviewHandlers, ...detailHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts new file mode 100644 index 0000000000..46129a69c9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts @@ -0,0 +1,12 @@ +const { rest } = window.MockServiceWorker; +import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const itemHandlers = [ + rest.get(umbracoPath('/stylesheet/item'), (req, res, ctx) => { + const paths = req.url.searchParams.getAll('paths'); + if (!paths) return res(ctx.status(400, 'no body found')); + const items = umbStylesheetData.item.getItems(paths); + return res(ctx.status(200), ctx.json(items)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts new file mode 100644 index 0000000000..f1d1f29feb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts @@ -0,0 +1,13 @@ +const { rest } = window.MockServiceWorker; +import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const overviewHandlers = [ + rest.get(umbracoPath(`${UMB_SLUG}/overview`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return; + const response = umbStylesheetData.getAllStylesheets(); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/slug.ts new file mode 100644 index 0000000000..fce9f77381 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/stylesheet'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts new file mode 100644 index 0000000000..f4a26b485f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts @@ -0,0 +1,18 @@ +const { rest } = window.MockServiceWorker; +import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const treeHandlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const response = umbStylesheetData.tree.getRoot(); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return res(ctx.status(400)); + const response = umbStylesheetData.tree.getChildrenOf(path); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.ts index f740f44d5e..c2b7567660 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet-detail.server.data-source.ts @@ -10,7 +10,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -export class UmbStylesheetDetailServerDataSource implements UmbDetailDataSource { +export class UmbStylesheetDetailServerDataSource implements UmbDetailDataSource { #host: UmbControllerHost; #serverPathUniqueSerializer = new UmbServerPathUniqueSerializer();