Carbon/src/js/events/membership.js

33 lines
861 B
JavaScript

const {MatrixEvent} = require("./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"
}
}
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")
module.exports = [JoinedEvent, InvitedEvent, LeaveEvent, UnknownMembership]