(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 u = converse_api.env.utils; 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 = document.querySelector(".toggle-controlbox"); if (!u.isVisible(document.querySelector("#controlbox"))) { if (!u.isVisible(toggle)) { u.removeClass('hidden', toggle); } toggle.click(); } return this; }; utils.closeControlBox = function () { var controlbox = document.querySelector("#controlbox"); if (u.isVisible(controlbox)) { controlbox.querySelector(".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')[0].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')[0].click(); }; utils.openChatBoxes = function (converse, amount) { var i = 0, jid, views = []; for (i; i