summaryrefslogtreecommitdiffstats
path: root/roles/reverseproxy/files/conversejs/src/plugins/chatboxviews/templates/chats.js
blob: 8977de8cb9513ed614932c907a298df701771d8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { html } from 'lit';
import { repeat } from 'lit/directives/repeat.js';
import { _converse, api } from '@converse/headless/core';


function shouldShowChat (c) {
    const { CONTROLBOX_TYPE } = _converse;
    const is_minimized = (api.settings.get('view_mode') === 'overlayed' && c.get('minimized'));
    return c.get('type') === CONTROLBOX_TYPE || !(c.get('hidden') || is_minimized);
}


export default () => {
    const { chatboxes, CONTROLBOX_TYPE, CHATROOMS_TYPE, HEADLINES_TYPE } = _converse;
    const view_mode = api.settings.get('view_mode');
    const connection = _converse?.connection;
    const logged_out = !connection?.connected || !connection?.authenticated || connection?.disconnecting;
    return html`
        ${!logged_out && view_mode === 'overlayed' ? html`<converse-minimized-chats></converse-minimized-chats>` : ''}
        ${repeat(chatboxes.filter(shouldShowChat), m => m.get('jid'), m => {
            if (m.get('type') === CONTROLBOX_TYPE) {
                return html`
                    ${view_mode === 'overlayed' ? html`<converse-controlbox-toggle class="${!m.get('closed') ? 'hidden' : ''}"></converse-controlbox-toggle>` : ''}
                    <converse-controlbox
                        id="controlbox"
                        class="chatbox ${view_mode === 'overlayed' && m.get('closed') ? 'hidden' : ''} ${logged_out ? 'logged-out': ''}"
                        style="${m.get('width') ? `width: ${m.get('width')}` : ''}"></converse-controlbox>
                `;
            } else if (m.get('type') === CHATROOMS_TYPE) {
                return html`
                    <converse-muc jid="${m.get('jid')}" class="chatbox chatroom"></converse-muc>
                `;
            } else if (m.get('type') === HEADLINES_TYPE) {
                return html`
                    <converse-headlines jid="${m.get('jid')}" class="chatbox headlines"></converse-headlines>
                `;
            } else {
                return html`
                    <converse-chat jid="${m.get('jid')}" class="chatbox"></converse-chat>
                `;
            }
        })}
    `;
};