peertube-plugin-livechat/conversejs/lib/plugins/livechat-specific/message-action.ts

33 lines
1.2 KiB
TypeScript

// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
//
// SPDX-License-Identifier: AGPL-3.0-only
/**
* Do some customization on Message actions custom elements:
* * override the copy text method to add meta data
*
* @param plugin The plugin object
*/
export function customizeMessageAction (plugin: any): void {
const _converse = plugin._converse
const MessageActions = _converse.api.elements.registry['converse-message-actions']
if (MessageActions) {
class MessageActionsOverloaded extends MessageActions {
async onMessageCopyButtonClicked (ev?: Event): Promise<void> {
ev?.preventDefault?.()
let txt = ''
try {
txt += this.model.getDisplayName() as string
txt += ' - '
const date = new Date(this.model.get('edited') || this.model.get('time'))
txt += date.toLocaleDateString() + ' ' + date.toLocaleTimeString()
txt += '\n'
} catch {}
txt += this.model.getMessageText() as string
await navigator.clipboard.writeText(txt)
}
}
_converse.api.elements.define('converse-message-actions', MessageActionsOverloaded)
}
}