xmpp.chapril.org-conversejs/src/shared/chat/message-history.js
JC Brand dc711d494f Add a placeholder to indicate a gap in the message history
The user can click the placeholder to fill in the gap.
2021-06-17 11:35:06 +02:00

47 lines
1.4 KiB
JavaScript

import "./message";
import { CustomElement } from 'shared/components/element.js';
import { api } from "@converse/headless/core";
import { getDayIndicator } from './utils.js';
import { html } from 'lit';
import { repeat } from 'lit/directives/repeat.js';
import { until } from 'lit/directives/until.js';
export default class MessageHistory extends CustomElement {
static get properties () {
return {
model: { type: Object },
messages: { type: Array }
}
}
render () {
const msgs = this.messages;
if (msgs.length) {
return repeat(msgs, m => m.get('id'), m => html`${this.renderMessage(m)}`)
} else {
return '';
}
}
renderMessage (model) {
if (model.get('dangling_retraction') || model.get('is_only_key')) {
return '';
}
const template_hook = model.get('template_hook')
if (typeof template_hook === 'string') {
const template_promise = api.hook(template_hook, model, '');
return until(template_promise, '');
} else {
const template = html`<converse-chat-message
jid="${this.model.get('jid')}"
mid="${model.get('id')}"></converse-chat-message>`
const day = getDayIndicator(model);
return day ? [day, template] : template;
}
}
}
api.elements.define('converse-message-history', MessageHistory);