Carbon/src/js/events/event.js

60 lines
1.0 KiB
JavaScript
Raw Normal View History

2020-10-26 08:10:02 +00:00
const {ElemJS, ejs} = require("../basic")
const {dateFormatter} = require("../dateFormatter")
class Event extends ElemJS {
constructor(data) {
super("div")
this.class("c-message")
this.data = null
this.group = null
this.editedAt = null
this.update(data)
}
// predicates
canGroup() {
//return this.data.type === "m.room.message"
return false
}
// operations
setGroup(group) {
this.group = group
}
setEdited(time) {
this.editedAt = time
this.render()
}
update(data) {
this.data = data
this.render()
}
removeEvent() {
if (this.group) this.group.removeEvent(this)
else this.remove()
}
render() {
this.element.classList[this.data.pending ? "add" : "remove"]("c-message--pending")
if (this.editedAt) {
this.child(ejs("span").class("c-message__edited").text("(edited)").attribute("title", "at " + dateFormatter.format(this.editedAt)))
}
}
static canRender(_event) {
return false
}
}
function renderEvent(event) {
return new events.find(e => e.canRender(event))(event)
}
module.exports = {renderEvent, Event}