From b29a9fbeee8952b3e30de9ed038b4202ca0acdf5 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Fri, 30 Dec 2022 15:14:59 -0500 Subject: [PATCH] chore: Remove reliance on Markdown for document.getSummary, towards #3000 --- server/collaboration/AuthenticationExtension.ts | 4 +--- server/collaboration/PersistenceExtension.ts | 4 +--- server/emails/mailer.tsx | 4 +--- server/models/Document.ts | 9 +++------ server/models/helpers/DocumentHelper.tsx | 6 ++++-- 5 files changed, 10 insertions(+), 17 deletions(-) diff --git a/server/collaboration/AuthenticationExtension.ts b/server/collaboration/AuthenticationExtension.ts index 136af1bc6..474c9b380 100644 --- a/server/collaboration/AuthenticationExtension.ts +++ b/server/collaboration/AuthenticationExtension.ts @@ -5,9 +5,7 @@ import { can } from "@server/policies"; import { getUserForJWT } from "@server/utils/jwt"; import { AuthenticationError } from "../errors"; -@APM.trace({ - spanName: "authentication", -}) +@APM.trace() export default class AuthenticationExtension implements Extension { async onAuthenticate({ connection, diff --git a/server/collaboration/PersistenceExtension.ts b/server/collaboration/PersistenceExtension.ts index 8de33cfe0..a0a70f13c 100644 --- a/server/collaboration/PersistenceExtension.ts +++ b/server/collaboration/PersistenceExtension.ts @@ -12,9 +12,7 @@ import Document from "@server/models/Document"; import documentCollaborativeUpdater from "../commands/documentCollaborativeUpdater"; import markdownToYDoc from "./utils/markdownToYDoc"; -@APM.trace({ - spanName: "persistence", -}) +@APM.trace() export default class PersistenceExtension implements Extension { /** * Map of documentId -> userIds that have modified the document since it diff --git a/server/emails/mailer.tsx b/server/emails/mailer.tsx index 50aa0dfeb..2af50f1c3 100644 --- a/server/emails/mailer.tsx +++ b/server/emails/mailer.tsx @@ -22,9 +22,7 @@ type SendMailOptions = { /** * Mailer class to send emails. */ -@APM.trace({ - spanName: "mailer", -}) +@APM.trace() export class Mailer { transporter: Transporter | undefined; diff --git a/server/models/Document.ts b/server/models/Document.ts index 01a87b7a7..bb98a5314 100644 --- a/server/models/Document.ts +++ b/server/models/Document.ts @@ -1,4 +1,3 @@ -import removeMarkdown from "@tommoor/remove-markdown"; import { compact, uniq } from "lodash"; import randomstring from "randomstring"; import type { SaveOptions } from "sequelize"; @@ -34,7 +33,6 @@ import MarkdownSerializer from "slate-md-serializer"; import isUUID from "validator/lib/isUUID"; import getTasks from "@shared/utils/getTasks"; import parseTitle from "@shared/utils/parseTitle"; -import unescape from "@shared/utils/unescape"; import { SLUG_URL_REGEX } from "@shared/utils/urlHelpers"; import { DocumentValidation } from "@shared/validations"; import slugify from "@server/utils/slugify"; @@ -48,6 +46,7 @@ import User from "./User"; import View from "./View"; import ParanoidModel from "./base/ParanoidModel"; import Fix from "./decorators/Fix"; +import DocumentHelper from "./helpers/DocumentHelper"; import Length from "./validators/Length"; const serializer = new MarkdownSerializer(); @@ -740,10 +739,8 @@ class Document extends ParanoidModel { }; getSummary = () => { - const plain = removeMarkdown(unescape(this.text), { - stripHTML: false, - }); - const lines = compact(plain.split("\n")); + const plainText = DocumentHelper.toPlainText(this); + const lines = compact(plainText.split("\n")); const notEmpty = lines.length >= 1; if (this.version) { diff --git a/server/models/helpers/DocumentHelper.tsx b/server/models/helpers/DocumentHelper.tsx index 55ded7696..2ba545434 100644 --- a/server/models/helpers/DocumentHelper.tsx +++ b/server/models/helpers/DocumentHelper.tsx @@ -23,7 +23,8 @@ import { isRTL } from "@shared/utils/rtl"; import unescape from "@shared/utils/unescape"; import { parser, schema } from "@server/editor"; import Logger from "@server/logging/Logger"; -import Document from "@server/models/Document"; +import { APM } from "@server/logging/tracing"; +import type Document from "@server/models/Document"; import type Revision from "@server/models/Revision"; import User from "@server/models/User"; import diff from "@server/utils/diff"; @@ -42,6 +43,7 @@ type HTMLOptions = { signedUrls?: boolean; }; +@APM.trace() export default class DocumentHelper { /** * Returns the document as a Prosemirror Node. This method uses the @@ -176,7 +178,7 @@ export default class DocumentHelper { let output = dom.serialize(); - if (options?.signedUrls && document instanceof Document) { + if (options?.signedUrls && "teamId" in document) { output = await DocumentHelper.attachmentsToSignedUrls( output, document.teamId