Carbon/src/js/events/membership.js

33 lines
843 B
JavaScript
Raw Normal View History

2020-10-26 08:10:02 +00:00
const {Event} = require("./event")
2020-10-26 21:55:27 +00:00
function createMembershipEvent(membership, message) {
2020-10-26 08:10:02 +00:00
return class extends Event {
render() {
super.render()
2020-10-26 21:55:27 +00:00
return this.text(message(this.data))
2020-10-26 08:10:02 +00:00
}
static canRender(event) {
return event.type == "m.room.member" && event.content.membership == membership
}
}
}
2020-10-26 21:55:27 +00:00
class UnknownMembership extends Event {
render() {
super.render()
return this.text("Unsupported membership event")
}
static canRender(event) {
return event.type == "m.room.member"
}
}
2020-10-26 08:10:02 +00:00
const JoinedEvent = createMembershipEvent("join", () => "joined the room")
const InvitedEvent = createMembershipEvent("invite", (e) => `invited ${e.content.displayname} the room`)
const LeaveEvent = createMembershipEvent("leave", () => "left the room")
2020-10-26 21:55:27 +00:00
module.exports = [JoinedEvent, InvitedEvent, LeaveEvent, UnknownMembership]