UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

47 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RichReply = void 0; const sanitizeHtml = require("sanitize-html"); /** * Helper for creating rich replies. * @category Utilities */ class RichReply { constructor() { } /** * Generates the event content required to reply to the provided event with the * provided text. * @param {string} roomId the room ID the event being replied to resides in * @param {any} event the event to reply to * @param {string} withText the plain text to reply with * @param {string} withHtml the HTML to reply with * @returns {any} the content of the event representing the reply */ static createFor(roomId, event, withText, withHtml) { const originalBody = (event["content"] ? event["content"]["body"] : "") || ""; let originalHtml = (event["content"] ? event["content"]["formatted_body"] : "") || null; if (originalHtml === null) { originalHtml = sanitizeHtml(originalBody); } const fallbackText = "> <" + event["sender"] + "> " + originalBody.split("\n").join("\n> "); const fallbackHtml = "<mx-reply><blockquote>" + `<a href="https://matrix.to/#/${roomId}/${event["event_id"]}">In reply to</a> ` + `<a href="https://matrix.to/#/${event["sender"]}">${event["sender"]}</a>` + "<br />" + originalHtml + "</blockquote></mx-reply>"; return { "m.relates_to": { "m.in_reply_to": { "event_id": event["event_id"], }, }, "msgtype": "m.text", "body": fallbackText + "\n\n" + withText, "format": "org.matrix.custom.html", "formatted_body": fallbackHtml + withHtml, }; } } exports.RichReply = RichReply; //# sourceMappingURL=RichReply.js.map