2020-10-26 08:10:02 +00:00
|
|
|
const {ElemJS, ejs} = require("../basic")
|
2020-10-31 17:20:56 +00:00
|
|
|
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-11-05 03:44:22 +00:00
|
|
|
static canRender(eventData) {
|
2020-10-26 08:10:02 +00:00
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-29 10:31:08 +00:00
|
|
|
module.exports = {MatrixEvent}
|