From e709e34f1f57644ba997017a37c04dfdf228e970 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Thu, 12 Feb 2026 11:09:08 -0800 Subject: [PATCH] dry --- .../src/core/page/services/page.service.ts | 85 ++++++++----------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/apps/server/src/core/page/services/page.service.ts b/apps/server/src/core/page/services/page.service.ts index 1cabbdc0..964ea42e 100644 --- a/apps/server/src/core/page/services/page.service.ts +++ b/apps/server/src/core/page/services/page.service.ts @@ -100,30 +100,10 @@ export class PageService { let ydoc = undefined; if (createPageDto?.content && createPageDto?.format) { - let prosemirrorJson: any; - - switch (createPageDto.format) { - case 'markdown': { - const html = await markdownToHtml(createPageDto.content as string); - prosemirrorJson = htmlToJson(html as string); - break; - } - case 'html': { - prosemirrorJson = htmlToJson(createPageDto.content as string); - break; - } - case 'json': - default: { - prosemirrorJson = createPageDto.content; - break; - } - } - - try { - jsonToNode(prosemirrorJson); - } catch (err) { - throw new BadRequestException('Invalid content format'); - } + const prosemirrorJson = await this.parseProsemirrorContent( + createPageDto.content, + createPageDto.format, + ); content = prosemirrorJson; textContent = jsonToText(prosemirrorJson); @@ -240,30 +220,7 @@ export class PageService { format: ContentFormat, user: User, ): Promise { - let prosemirrorJson: any; - - switch (format) { - case 'markdown': { - const html = await markdownToHtml(content as string); - prosemirrorJson = htmlToJson(html as string); - break; - } - case 'html': { - prosemirrorJson = htmlToJson(content as string); - break; - } - case 'json': - default: { - prosemirrorJson = content; - break; - } - } - - try { - jsonToNode(prosemirrorJson); - } catch (err) { - throw new BadRequestException('Invalid content'); - } + const prosemirrorJson = await this.parseProsemirrorContent(content, format); const documentName = `page.${pageId}`; await this.collaborationGateway.handleYjsEvent( @@ -754,4 +711,36 @@ export class PageService { ): Promise { await this.pageRepo.removePage(pageId, userId, workspaceId); } + + private async parseProsemirrorContent( + content: string | object, + format: ContentFormat, + ): Promise { + let prosemirrorJson: any; + + switch (format) { + case 'markdown': { + const html = await markdownToHtml(content as string); + prosemirrorJson = htmlToJson(html as string); + break; + } + case 'html': { + prosemirrorJson = htmlToJson(content as string); + break; + } + case 'json': + default: { + prosemirrorJson = content; + break; + } + } + + try { + jsonToNode(prosemirrorJson); + } catch (err) { + throw new BadRequestException('Invalid content format'); + } + + return prosemirrorJson; + } }