Carbon/src/js/events/event.js

55 lines
951 B
JavaScript
Raw Normal View History

2020-10-26 08:10:02 +00:00
const {ElemJS, ejs} = require("../basic")
const {dateFormatter} = require("../date-formatter")
2020-10-26 08:10:02 +00:00
2020-10-26 21:58:38 +00:00
class MatrixEvent extends ElemJS {
2020-10-26 08:10:02 +00:00
constructor(data) {
super("div")
this.class("c-message")
this.data = null
this.group = null
this.editedAt = null
this.update(data)
}
// predicates
canGroup() {
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)))
}
2020-10-29 09:42:17 +00:00
return this
2020-10-26 08:10:02 +00:00
}
2020-10-29 09:42:17 +00:00
2020-10-26 08:10:02 +00:00
static canRender(_event) {
return false
}
}
2020-10-29 10:31:08 +00:00
module.exports = {MatrixEvent}