55 lines
2.0 KiB
JavaScript
55 lines
2.0 KiB
JavaScript
|
import ChatHeading from 'plugins/chatview/heading.js';
|
||
|
import tpl_chat_head from './templates/chat-head.js';
|
||
|
import { __ } from 'i18n';
|
||
|
import { _converse, api } from "@converse/headless/core";
|
||
|
import { getHeadingDropdownItem, getHeadingStandaloneButton } from 'plugins/chatview/utils.js';
|
||
|
|
||
|
|
||
|
export default class HeadlinesHeading extends ChatHeading {
|
||
|
|
||
|
async connectedCallback () {
|
||
|
super.connectedCallback();
|
||
|
this.model = _converse.chatboxes.get(this.getAttribute('jid'));
|
||
|
await this.model.initialized;
|
||
|
this.render();
|
||
|
}
|
||
|
|
||
|
async generateHeadingTemplate () {
|
||
|
const heading_btns = await this.getHeadingButtons();
|
||
|
const standalone_btns = heading_btns.filter(b => b.standalone);
|
||
|
const dropdown_btns = heading_btns.filter(b => !b.standalone);
|
||
|
return tpl_chat_head(
|
||
|
Object.assign(this.model.toJSON(), {
|
||
|
'display_name': this.model.getDisplayName(),
|
||
|
'dropdown_btns': dropdown_btns.map(b => getHeadingDropdownItem(b)),
|
||
|
'standalone_btns': standalone_btns.map(b => getHeadingStandaloneButton(b))
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns a list of objects which represent buttons for the headlines header.
|
||
|
* @async
|
||
|
* @emits _converse#getHeadingButtons
|
||
|
* @method HeadlinesHeading#getHeadingButtons
|
||
|
*/
|
||
|
getHeadingButtons () {
|
||
|
const buttons = [];
|
||
|
if (!api.settings.get('singleton')) {
|
||
|
buttons.push({
|
||
|
'a_class': 'close-chatbox-button',
|
||
|
'handler': ev => this.close(ev),
|
||
|
'i18n_text': __('Close'),
|
||
|
'i18n_title': __('Close these announcements'),
|
||
|
'icon_class': 'fa-times',
|
||
|
'name': 'close',
|
||
|
'standalone': api.settings.get('view_mode') === 'overlayed'
|
||
|
});
|
||
|
}
|
||
|
return _converse.api.hook('getHeadingButtons', this, buttons);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
api.elements.define('converse-headlines-heading', HeadlinesHeading);
|