2021-02-16 13:43:13 +01:00
|
|
|
import AddMUCModal from 'plugins/muc-views/modals/add-muc.js';
|
|
|
|
import MUCListModal from 'plugins/muc-views/modals/muc-list.js';
|
2020-12-16 14:05:34 +01:00
|
|
|
import { __ } from 'i18n';
|
2021-01-26 09:58:16 +01:00
|
|
|
import { _converse, api } from "@converse/headless/core";
|
2021-04-14 22:56:59 +02:00
|
|
|
import { html } from "lit";
|
2020-01-26 17:31:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
const bookmark = (o) => {
|
2020-08-16 23:33:17 +02:00
|
|
|
const i18n_add_bookmark = __('Bookmark this groupchat');
|
|
|
|
const i18n_remove_bookmark = __('Unbookmark this groupchat');
|
2020-01-26 17:31:55 +01:00
|
|
|
if (o.bookmarked) {
|
|
|
|
return html`
|
|
|
|
<a class="list-item-action fa fa-bookmark remove-bookmark button-on"
|
|
|
|
data-room-jid="${o.room.get('jid')}"
|
|
|
|
data-bookmark-name="${o.room.getDisplayName()}"
|
|
|
|
@click=${o.removeBookmark}
|
|
|
|
title="${ o.bookmarked ? i18n_remove_bookmark : i18n_add_bookmark }"></a>`;
|
|
|
|
} else {
|
|
|
|
return html`
|
|
|
|
<a class="list-item-action fa fa-bookmark add-bookmark"
|
|
|
|
data-room-jid="${o.room.get('jid')}"
|
|
|
|
data-bookmark-name="${o.room.getDisplayName()}"
|
|
|
|
@click=${o.addBookmark}
|
|
|
|
title="${ o.bookmarked ? i18n_remove_bookmark : i18n_add_bookmark }"></a>`;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2020-12-16 14:35:53 +01:00
|
|
|
const unread_indicator = (o) => html`<span class="list-item-badge badge badge--muc msgs-indicator">${ o.room.get('num_unread') }</span>`;
|
|
|
|
const activity_indicator = () => html`<span class="list-item-badge badge badge--muc msgs-indicator"></span>`;
|
|
|
|
|
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
const room_item = (o) => {
|
|
|
|
const i18n_leave_room = __('Leave this groupchat');
|
2020-12-16 14:35:53 +01:00
|
|
|
const has_unread_msgs = o.room.get('num_unread_general') || o.room.get('has_activity');
|
2020-08-16 23:33:17 +02:00
|
|
|
return html`
|
2020-12-16 14:35:53 +01:00
|
|
|
<div class="list-item controlbox-padded available-chatroom d-flex flex-row ${ o.currently_open(o.room) ? 'open' : '' } ${ has_unread_msgs ? 'unread-msgs' : '' }"
|
2020-08-16 23:33:17 +02:00
|
|
|
data-room-jid="${o.room.get('jid')}">
|
2020-01-26 17:31:55 +01:00
|
|
|
|
2020-12-16 14:35:53 +01:00
|
|
|
${ o.room.get('num_unread') ? unread_indicator(o) : (o.room.get('has_activity') ? activity_indicator(o) : '') }
|
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
<a class="list-item-link open-room available-room w-100"
|
2020-12-16 14:35:53 +01:00
|
|
|
data-room-jid="${o.room.get('jid')}"
|
|
|
|
title="${__('Click to open this groupchat')}"
|
|
|
|
@click=${o.openRoom}>${o.room.getDisplayName()}</a>
|
2020-01-26 17:31:55 +01:00
|
|
|
|
2021-09-15 15:37:00 +02:00
|
|
|
${ api.settings.get('allow_bookmarks') ? bookmark(o) : '' }
|
2020-01-26 17:31:55 +01:00
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
<a class="list-item-action room-info fa fa-info-circle"
|
2020-12-16 14:35:53 +01:00
|
|
|
data-room-jid="${o.room.get('jid')}"
|
|
|
|
title="${__('Show more information on this groupchat')}"
|
|
|
|
@click=${o.showRoomDetailsModal}></a>
|
2020-01-26 17:31:55 +01:00
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
<a class="list-item-action fa fa-sign-out-alt close-room"
|
2020-12-16 14:35:53 +01:00
|
|
|
data-room-jid="${o.room.get('jid')}"
|
|
|
|
data-room-name="${o.room.getDisplayName()}"
|
|
|
|
title="${i18n_leave_room}"
|
|
|
|
@click=${o.closeRoom}></a>
|
2020-08-16 23:33:17 +02:00
|
|
|
</div>`;
|
|
|
|
}
|
2020-01-26 17:31:55 +01:00
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
export default (o) => {
|
|
|
|
const i18n_desc_rooms = __('Click to toggle the list of open groupchats');
|
2021-01-26 09:58:16 +01:00
|
|
|
const i18n_heading_chatrooms = __('Groupchats');
|
|
|
|
const i18n_title_list_rooms = __('Query for groupchats');
|
|
|
|
const i18n_title_new_room = __('Add a new groupchat');
|
2020-08-16 23:33:17 +02:00
|
|
|
return html`
|
2021-01-26 09:58:16 +01:00
|
|
|
<div class="d-flex controlbox-padded">
|
|
|
|
<span class="w-100 controlbox-heading controlbox-heading--groupchats">${i18n_heading_chatrooms}</span>
|
2021-07-15 16:16:25 +02:00
|
|
|
<a class="controlbox-heading__btn show-list-muc-modal"
|
2021-01-26 09:58:16 +01:00
|
|
|
@click=${(ev) => api.modal.show(MUCListModal, { 'model': o.model }, ev)}
|
2021-07-15 16:16:25 +02:00
|
|
|
title="${i18n_title_list_rooms}" data-toggle="modal" data-target="#muc-list-modal">
|
|
|
|
<converse-icon class="fa fa-list-ul right" color="var(--subdued-color)" path-prefix="/dist" size="1em"></converse-icon>
|
|
|
|
</a>
|
|
|
|
<a class="controlbox-heading__btn show-add-muc-modal"
|
2021-01-26 09:58:16 +01:00
|
|
|
@click=${(ev) => api.modal.show(AddMUCModal, { 'model': o.model }, ev)}
|
2021-07-15 16:16:25 +02:00
|
|
|
title="${i18n_title_new_room}" data-toggle="modal" data-target="#add-chatrooms-modal">
|
|
|
|
<converse-icon class="fa fa-plus right" color="var(--subdued-color)" path-prefix="/dist" size="1em"></converse-icon>
|
|
|
|
</a>
|
2021-01-26 09:58:16 +01:00
|
|
|
</div>
|
|
|
|
|
2020-08-16 23:33:17 +02:00
|
|
|
<div class="list-container list-container--openrooms ${ o.rooms.length ? '' : 'hidden' }">
|
|
|
|
<a class="list-toggle open-rooms-toggle controlbox-padded" title="${i18n_desc_rooms}" @click=${o.toggleRoomsList}>
|
2021-01-26 09:58:16 +01:00
|
|
|
<span class="fa ${ (o.toggle_state === _converse.OPENED) ? 'fa-caret-down' : 'fa-caret-right' }"></span> ${__('Open Groupchats')}</a>
|
2020-08-16 23:33:17 +02:00
|
|
|
<div class="items-list rooms-list open-rooms-list ${ o.collapsed && 'collapsed' }">
|
|
|
|
${ o.rooms.map(room => room_item(Object.assign({room}, o))) }
|
|
|
|
</div>
|
|
|
|
</div>`;
|
|
|
|
}
|