From 20bacce0682cc4c31e8a8f655808d99b5d886c98 Mon Sep 17 00:00:00 2001 From: Bad Date: Thu, 29 Oct 2020 11:31:08 +0100 Subject: [PATCH] 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] +