From f80bf36991d2681794e3e9afc6b77ac8af042631 Mon Sep 17 00:00:00 2001 From: Bad Date: Thu, 29 Oct 2020 11:09:15 +0100 Subject: [PATCH 1/2] Style fixes --- src/js/events/event.js | 1 - src/js/events/message.js | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/js/events/event.js b/src/js/events/event.js index 765c03a..8f5ff74 100644 --- a/src/js/events/event.js +++ b/src/js/events/event.js @@ -14,7 +14,6 @@ class MatrixEvent extends ElemJS { // predicates canGroup() { - //return this.data.type === "m.room.message" return false } diff --git a/src/js/events/message.js b/src/js/events/message.js index 05ccfdd..bbd1b15 100644 --- a/src/js/events/message.js +++ b/src/js/events/message.js @@ -8,7 +8,7 @@ const {MatrixEvent} = require("./event") const purifier = DOMPurify() purifier.addHook("uponSanitizeAttribute", (node, hookevent, config) => { - //If purifier already rejected an attribute there is no point in checking it + // If purifier already rejected an attribute there is no point in checking it if (hookevent.keepAttr === false) return; const allowedElementAttributes = { @@ -24,8 +24,8 @@ purifier.addHook("uponSanitizeAttribute", (node, hookevent, config) => { hookevent.keepAttr = allowed_attributes.indexOf(hookevent.attrName) > -1; }) -//Remove bad classes from our code element purifier.addHook("uponSanitizeElement", (node, hookevent, config) => { + // Remove bad classes from our code element if (node.tagName == "CODE") { node.classList.forEach(c => { if (!c.startsWith("language-")) { @@ -53,7 +53,7 @@ function cleanHTML(html) { return purifier.sanitize(html) } -//Here we put all the processing of the messages that isn't as likely to potentially lead to security issues +// Here we put all the processing of the messages that isn't as likely to potentially lead to security issues function postProcessElements(rootNode) { const element = rootNode.element element.querySelectorAll("code").forEach((n) => rootNode.child(new HighlightedCode(n))) From 20bacce0682cc4c31e8a8f655808d99b5d886c98 Mon Sep 17 00:00:00 2001 From: Bad Date: Thu, 29 Oct 2020 11:31:08 +0100 Subject: [PATCH 2/2] Remove the simple event shorthand --- src/js/events/event.js | 15 +---------- src/js/events/membership.js | 50 +++++++++++++++++++++++++++++++------ src/js/events/unknown.js | 14 +++++++++-- 3 files changed, 55 insertions(+), 24 deletions(-) diff --git a/src/js/events/event.js b/src/js/events/event.js index 8f5ff74..ac09d5f 100644 --- a/src/js/events/event.js +++ b/src/js/events/event.js @@ -51,17 +51,4 @@ class MatrixEvent extends ElemJS { } } -function simpleEvent(filter, render) { - return class extends MatrixEvent { - render() { - super.render() - return this.text(render(this.data)) - } - - static canRender(event) { - return filter(event) - } - } -} - -module.exports = {MatrixEvent, simpleEvent} +module.exports = {MatrixEvent} diff --git a/src/js/events/membership.js b/src/js/events/membership.js index f00a765..04c194d 100644 --- a/src/js/events/membership.js +++ b/src/js/events/membership.js @@ -1,13 +1,47 @@ -const {simpleEvent} = require("./event") +const {MatrixEvent} = require("./event") -const UnknownMembership = simpleEvent((e) => e.type == "m.room.member", (e) => "unknown membership event") - -function createMembershipEvent(membership, message) { - return simpleEvent((e) => e.type == "m.room.member" && e.content.membership === membership, message) +class MembershipEvent extends MatrixEvent { + static canRender(event) { + return event.type == "m.room.member" + } } -const JoinedEvent = createMembershipEvent("join", (e) => "joined the room") -const InvitedEvent = createMembershipEvent("invite", (e) => `invited ${e.content.displayname} the room`) -const LeaveEvent = createMembershipEvent("leave", () => "left the room") + +class JoinedEvent extends MembershipEvent { + static canRender(event) { + return super.canRender(event) && event.content.membership === "join" + } + render() { + super.render() + return this.text("joined the room") + } +} + +class InvitedEvent extends MembershipEvent { + static canRender(event) { + return super.canRender(event) && event.content.membership === "invite" + } + render() { + super.render() + return this.text(`invited ${this.data.content.displayname}`) + } +} + +class LeaveEvent extends MembershipEvent { + static canRender(event) { + return super.canRender(event) && event.content.membership === "leave" + } + render() { + super.render() + return this.text(`left the room`) + } +} + +class UnknownMembership extends MembershipEvent { + render() { + super.render() + return this.text("unknown membership event") + } +} module.exports = [JoinedEvent, InvitedEvent, LeaveEvent, UnknownMembership] diff --git a/src/js/events/unknown.js b/src/js/events/unknown.js index 3e3bbd6..7fddf5b 100644 --- a/src/js/events/unknown.js +++ b/src/js/events/unknown.js @@ -1,3 +1,13 @@ -const {simpleEvent} = require("./event") -const UnknownEvent = simpleEvent(() => true, () => "Cannot render event") +const {MatrixEvent} = require("./event") + +class UnknownEvent extends MatrixEvent { + static canRender() { + return true + } + render() { + super.render() + return this.text(`cannot render event`) + } +} module.exports = [UnknownEvent] +