2021-01-06 20:43:21 +01:00
|
|
|
import { Model } from '@converse/skeletor/src/model.js';
|
|
|
|
import { __ } from 'i18n';
|
|
|
|
import { _converse, api, converse } from '@converse/headless/core';
|
|
|
|
import { invokeMap } from 'lodash-es';
|
|
|
|
|
|
|
|
const { u } = converse.env;
|
|
|
|
|
|
|
|
export const bookmarkableChatRoomView = {
|
|
|
|
/**
|
|
|
|
* Set whether the groupchat is bookmarked or not.
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
setBookmarkState () {
|
|
|
|
if (_converse.bookmarks !== undefined) {
|
|
|
|
const models = _converse.bookmarks.where({ 'jid': this.model.get('jid') });
|
|
|
|
if (!models.length) {
|
|
|
|
this.model.save('bookmarked', false);
|
|
|
|
} else {
|
|
|
|
this.model.save('bookmarked', true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
renderBookmarkForm () {
|
|
|
|
this.hideChatRoomContents();
|
|
|
|
if (!this.bookmark_form) {
|
|
|
|
this.bookmark_form = new _converse.MUCBookmarkForm({
|
|
|
|
'model': this.model,
|
|
|
|
'chatroomview': this
|
|
|
|
});
|
2020-12-08 12:54:14 +01:00
|
|
|
const container_el = this.querySelector('.chatroom-body');
|
2021-01-06 20:43:21 +01:00
|
|
|
container_el.insertAdjacentElement('beforeend', this.bookmark_form.el);
|
|
|
|
}
|
|
|
|
u.showElement(this.bookmark_form.el);
|
|
|
|
},
|
|
|
|
|
|
|
|
toggleBookmark (ev) {
|
|
|
|
ev?.preventDefault();
|
|
|
|
const models = _converse.bookmarks.where({ 'jid': this.model.get('jid') });
|
|
|
|
if (!models.length) {
|
|
|
|
this.renderBookmarkForm();
|
|
|
|
} else {
|
|
|
|
models.forEach(model => model.destroy());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export const eventMethods = {
|
|
|
|
|
|
|
|
removeBookmarkViaEvent (ev) {
|
|
|
|
/* Remove a bookmark as determined by the passed in
|
|
|
|
* event.
|
|
|
|
*/
|
|
|
|
ev.preventDefault();
|
|
|
|
const name = ev.target.getAttribute('data-bookmark-name');
|
|
|
|
const jid = ev.target.getAttribute('data-room-jid');
|
|
|
|
if (confirm(__('Are you sure you want to remove the bookmark "%1$s"?', name))) {
|
|
|
|
invokeMap(_converse.bookmarks.where({ 'jid': jid }), Model.prototype.destroy);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
addBookmarkViaEvent (ev) {
|
|
|
|
/* Add a bookmark as determined by the passed in
|
|
|
|
* event.
|
|
|
|
*/
|
|
|
|
ev.preventDefault();
|
|
|
|
const jid = ev.target.getAttribute('data-room-jid');
|
|
|
|
api.rooms.open(jid, { 'bring_to_foreground': true });
|
|
|
|
_converse.chatboxviews.get(jid).renderBookmarkForm();
|
|
|
|
}
|
|
|
|
}
|