From e08b8956943e08f96b1f40a0b663814b895bfdfe Mon Sep 17 00:00:00 2001 From: Bad Date: Mon, 26 Oct 2020 23:16:47 +0100 Subject: [PATCH] Create a simple event shorthand --- src/js/events/event.js | 13 ++++++++++++- src/js/events/membership.js | 29 +++++------------------------ src/js/events/unknown.js | 17 +++-------------- 3 files changed, 20 insertions(+), 39 deletions(-) diff --git a/src/js/events/event.js b/src/js/events/event.js index 06d8a50..4ec6c54 100644 --- a/src/js/events/event.js +++ b/src/js/events/event.js @@ -50,6 +50,17 @@ 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} +module.exports = {MatrixEvent, simpleEvent} diff --git a/src/js/events/membership.js b/src/js/events/membership.js index 285fc9e..a81a3ca 100644 --- a/src/js/events/membership.js +++ b/src/js/events/membership.js @@ -1,31 +1,12 @@ -const {MatrixEvent} = require("./event") +const {simpleEvent} = require("./event") + +const UnknownMembership = simpleEvent((e) => e.type == "m.room.member", (e) => "unknown membership event") function createMembershipEvent(membership, message) { - return class extends MatrixEvent { - render() { - super.render() - return this.text(message(this.data)) - } - - static canRender(event) { - return event.type == "m.room.member" && event.content.membership == membership - } - - } -} -class UnknownMembership extends MatrixEvent { - render() { - super.render() - return this.text("Unsupported membership event") - } - - static canRender(event) { - return event.type == "m.room.member" - } - + return simpleEvent((e) => e.type == "m.room.member" && e.content.membership === membership, message) } -const JoinedEvent = createMembershipEvent("join", () => "joined the room") +const JoinedEvent = createMembershipEvent("join", (e) => {console.log(e); return "joined the room"}) const InvitedEvent = createMembershipEvent("invite", (e) => `invited ${e.content.displayname} the room`) const LeaveEvent = createMembershipEvent("leave", () => "left the room") diff --git a/src/js/events/unknown.js b/src/js/events/unknown.js index 6fb1a02..bbc40f8 100644 --- a/src/js/events/unknown.js +++ b/src/js/events/unknown.js @@ -1,15 +1,4 @@ -const {MatrixEvent} = require("./event") - -class UnknownEvent extends MatrixEvent { - render() { - super.render() - this.text("Cannot render event") - } - - static canRender(_event) { - return true - } - -} - +const {simpleEvent} = require("./event") +const UnknownEvent = simpleEvent(() => true, () => "Cannot render event") +console.log(UnknownEvent) module.exports = [UnknownEvent]