2018-08-16 22:30:59 +00:00
|
|
|
/*
|
2021-02-04 22:04:35 +00:00
|
|
|
* Copyright (c) 2010-2021 Tim Düsterhus.
|
2018-08-16 22:30:59 +00:00
|
|
|
*
|
|
|
|
* Use of this software is governed by the Business Source License
|
|
|
|
* included in the LICENSE file.
|
|
|
|
*
|
2023-02-22 16:45:50 +00:00
|
|
|
* Change Date: 2027-02-22
|
2018-08-16 22:30:59 +00:00
|
|
|
*
|
|
|
|
* On the date above, in accordance with the Business Source
|
|
|
|
* License, use of this software will be governed by version 2
|
|
|
|
* or later of the General Public License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
define(['../MessageType'], function (MessageType) {
|
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const DEPENDENCIES = ['UiMessageStream'].concat(
|
|
|
|
MessageType.DEPENDENCIES || []
|
|
|
|
)
|
|
|
|
class Tombstone extends MessageType {
|
|
|
|
constructor(messageStream, ...superDeps) {
|
|
|
|
super(...superDeps)
|
|
|
|
|
|
|
|
this.messageStream = messageStream
|
|
|
|
}
|
|
|
|
|
|
|
|
render(message) {
|
|
|
|
if (message.isDeleted) {
|
|
|
|
return super.render(message)
|
|
|
|
}
|
|
|
|
|
|
|
|
const messageID = message.payload.messageID
|
|
|
|
const node = elById(`message-${messageID}`)
|
|
|
|
if (!node) return false
|
|
|
|
|
|
|
|
node.classList.add('tombstone')
|
|
|
|
|
|
|
|
const chatMessage = node.querySelector('.chatMessage')
|
|
|
|
if (!chatMessage) return false
|
|
|
|
|
|
|
|
const rendered = super.render(message)
|
|
|
|
const oldIcon = node.querySelector(
|
|
|
|
'.chatMessageContent > .chatMessageIcon'
|
|
|
|
)
|
|
|
|
const newIcon = rendered.querySelector('.chatMessageIcon')
|
|
|
|
|
|
|
|
if (oldIcon) {
|
|
|
|
oldIcon.parentNode.replaceChild(newIcon, oldIcon)
|
|
|
|
} else {
|
|
|
|
chatMessage.parentNode.insertBefore(newIcon, chatMessage)
|
|
|
|
}
|
|
|
|
|
|
|
|
chatMessage.parentNode.replaceChild(
|
|
|
|
rendered.querySelector('.chatMessage'),
|
|
|
|
chatMessage
|
|
|
|
)
|
|
|
|
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Tombstone.DEPENDENCIES = DEPENDENCIES
|
|
|
|
|
|
|
|
return Tombstone
|
|
|
|
})
|