(function (root, factory) { define(['jquery.noconflict', 'converse', 'es6-promise', 'mock', 'wait-until-promise'], factory); }(this, function ($, converse_api, Promise, mock, waitUntilPromise) { var _ = converse_api.env._; var $msg = converse_api.env.$msg; var $pres = converse_api.env.$pres; var $iq = converse_api.env.$iq; var Strophe = converse_api.env.Strophe; var utils = {}; if (typeof window.Promise === 'undefined') { waitUntilPromise.setPromiseImplementation(Promise); } utils.waitUntil = waitUntilPromise.default; utils.waitUntilFeatureSupportConfirmed = function (_converse, feature_name) { var IQ_disco, stanza; return utils.waitUntil(function () { IQ_disco = _.filter(_converse.connection.IQ_stanzas, function (iq) { return iq.nodeTree.querySelector('query[xmlns="http://jabber.org/protocol/disco#info"]'); }).pop(); return !_.isUndefined(IQ_disco); }, 300).then(function () { var info_IQ_id = IQ_disco.nodeTree.getAttribute('id'); stanza = $iq({ 'type': 'result', 'from': 'localhost', 'to': 'dummy@localhost/resource', 'id': info_IQ_id }).c('query', {'xmlns': 'http://jabber.org/protocol/disco#info'}) .c('feature', {'var': feature_name}); _converse.connection._dataRecv(utils.createRequest(stanza)); }); } utils.createRequest = function (iq) { iq = typeof iq.tree == "function" ? iq.tree() : iq; var req = new Strophe.Request(iq, function() {}); req.getResponse = function () { var env = new Strophe.Builder('env', {type: 'mock'}).tree(); env.appendChild(iq); return env; }; return req; }; utils.closeAllChatBoxes = function (converse) { var i, chatbox; for (i=converse.chatboxes.models.length-1; i>-1; i--) { chatbox = converse.chatboxes.models[i]; converse.chatboxviews.get(chatbox.get('id')).close(); } return this; }; utils.openControlBox = function () { var $toggle = $(".toggle-controlbox"); if (!$("#controlbox").is(':visible')) { if (!$toggle.is(':visible')) { $toggle[0].classList.remove('hidden'); $toggle.click(); } else { $toggle.click(); } } return this; }; utils.closeControlBox = function () { if ($("#controlbox").is(':visible')) { $("#controlbox").find(".close-chatbox-button").click(); } return this; }; utils.openContactsPanel = function (converse) { this.openControlBox(converse); var cbview = converse.chatboxviews.get('controlbox'); var $tabs = cbview.$el.find('#controlbox-tabs'); $tabs.find('li').first().find('a').click(); }; utils.openRoomsPanel = function (converse) { utils.openControlBox(); var cbview = converse.chatboxviews.get('controlbox'); var $tabs = cbview.$el.find('#controlbox-tabs'); $tabs.find('li').last().find('a').click(); }; utils.openChatBoxes = function (converse, amount) { var i = 0, jid, views = []; for (i; i