Move method to utils

This commit is contained in:
JC Brand 2021-06-15 09:56:22 +02:00
parent c8304497b5
commit 8907adc236
3 changed files with 37 additions and 39 deletions

View File

@ -6,7 +6,7 @@ import tpl_muc_head from './templates/muc-head.js';
import { Model } from '@converse/skeletor/src/model.js'; import { Model } from '@converse/skeletor/src/model.js';
import { __ } from 'i18n'; import { __ } from 'i18n';
import { _converse, api, converse } from "@converse/headless/core"; import { _converse, api, converse } from "@converse/headless/core";
import { showModeratorToolsModal } from './utils.js'; import { destroyMUC, showModeratorToolsModal } from './utils.js';
import { import {
getHeadingDropdownItem, getHeadingDropdownItem,
getHeadingStandaloneButton, getHeadingStandaloneButton,
@ -65,8 +65,9 @@ export default class MUCHeading extends ChatHeading {
this.model.session.set('view', converse.MUC.VIEWS.CONFIG); this.model.session.set('view', converse.MUC.VIEWS.CONFIG);
} }
destroy () { destroy (ev) {
_converse.chatboxviews.get(this.getAttribute('jid'))?.destroy(); ev.preventDefault();
destroyMUC(this.model);
} }
/** /**
@ -187,7 +188,6 @@ export default class MUCHeading extends ChatHeading {
}) })
); );
} }
} }
api.elements.define('converse-muc-heading', MUCHeading); api.elements.define('converse-muc-heading', MUCHeading);

View File

@ -1,7 +1,5 @@
import BaseChatView from 'shared/chat/baseview.js'; import BaseChatView from 'shared/chat/baseview.js';
import log from '@converse/headless/log';
import tpl_muc from './templates/muc.js'; import tpl_muc from './templates/muc.js';
import { __ } from 'i18n';
import { _converse, api, converse } from '@converse/headless/core'; import { _converse, api, converse } from '@converse/headless/core';
@ -40,37 +38,6 @@ export default class MUCView extends BaseChatView {
return tpl_muc({ 'model': this.model }); return tpl_muc({ 'model': this.model });
} }
async destroy () {
const messages = [__('Are you sure you want to destroy this groupchat?')];
let fields = [
{
'name': 'challenge',
'label': __('Please enter the XMPP address of this groupchat to confirm'),
'challenge': this.model.get('jid'),
'placeholder': __('name@example.org'),
'required': true
},
{
'name': 'reason',
'label': __('Optional reason for destroying this groupchat'),
'placeholder': __('Reason')
},
{
'name': 'newjid',
'label': __('Optional XMPP address for a new groupchat that replaces this one'),
'placeholder': __('replacement@example.org')
}
];
try {
fields = await api.confirm(__('Confirm'), messages, fields);
const reason = fields.filter(f => f.name === 'reason').pop()?.value;
const newjid = fields.filter(f => f.name === 'newjid').pop()?.value;
return this.model.sendDestroyIQ(reason, newjid).then(() => this.close());
} catch (e) {
log.error(e);
}
}
onConnectionStatusChanged () { onConnectionStatusChanged () {
const conn_status = this.model.session.get('connection_status'); const conn_status = this.model.session.get('connection_status');
if (conn_status === converse.ROOMSTATUS.CONNECTING) { if (conn_status === converse.ROOMSTATUS.CONNECTING) {

View File

@ -31,6 +31,38 @@ export function clearHistory (jid) {
} }
} }
export async function destroyMUC (model) {
const messages = [__('Are you sure you want to destroy this groupchat?')];
let fields = [
{
'name': 'challenge',
'label': __('Please enter the XMPP address of this groupchat to confirm'),
'challenge': model.get('jid'),
'placeholder': __('name@example.org'),
'required': true
},
{
'name': 'reason',
'label': __('Optional reason for destroying this groupchat'),
'placeholder': __('Reason')
},
{
'name': 'newjid',
'label': __('Optional XMPP address for a new groupchat that replaces this one'),
'placeholder': __('replacement@example.org')
}
];
try {
fields = await api.confirm(__('Confirm'), messages, fields);
const reason = fields.filter(f => f.name === 'reason').pop()?.value;
const newjid = fields.filter(f => f.name === 'newjid').pop()?.value;
return model.sendDestroyIQ(reason, newjid).then(() => model.close());
} catch (e) {
log.error(e);
}
}
function setMUCDomain (domain, controlboxview) { function setMUCDomain (domain, controlboxview) {
controlboxview.querySelector('converse-rooms-list') controlboxview.querySelector('converse-rooms-list')
.model.save('muc_domain', Strophe.getDomainFromJid(domain)); .model.save('muc_domain', Strophe.getDomainFromJid(domain));
@ -305,8 +337,7 @@ export function parseMessageForMUCCommands (muc, text) {
if (!muc.verifyAffiliations(['owner'])) { if (!muc.verifyAffiliations(['owner'])) {
break; break;
} }
const chatview = _converse.chatboxviews.get(muc.get('jid')); destroyMUC(muc).catch(e => muc.onCommandError(e));
chatview.destroy().catch(e => muc.onCommandError(e));
break; break;
} }
case 'help': { case 'help': {