import { html } from 'lit';
import { repeat } from 'lit/directives/repeat.js';
import { until } from 'lit/directives/until.js';
import { api } from "@converse/headless";
import { CustomElement } from 'shared/components/element.js';
import { getDayIndicator } from './utils.js';
import "./message";
export default class MessageHistory extends CustomElement {
/**
* @typedef {import('@converse/headless/types/plugins/chat/message').default} Message
*/
constructor () {
super();
this.model = null;
this.messages = [];
}
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 '';
}
}
/**
* @param {(Message)} model
*/
renderMessage (model) {
if (model.get('dangling_retraction') || model.get('dangling_moderation') || 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``
const day = getDayIndicator(model);
return day ? [day, template] : template;
}
}
}
api.elements.define('converse-message-history', MessageHistory);