// Converse.js (A browser based XMPP chat client) // http://conversejs.org // // Copyright (c) 2012-2016, Jan-Carel Brand // Licensed under the Mozilla Public License (MPLv2) // /*global Backbone, define, window */ (function (root, factory) { define(["converse-core", "converse-chatview", "converse-controlbox", "converse-muc", "converse-singleton" ], factory); }(this, function (converse) { "use strict"; var $ = converse.env.jQuery, Strophe = converse.env.Strophe, _ = converse.env._; converse.plugins.add('converse-inverse', { overrides: { // overrides mentioned here will be picked up by converse.js's // plugin architecture they will replace existing methods on the // relevant objects or classes. // // new functions which don't exist yet can also be added. areDesktopNotificationsEnabled: function () { // Call with "ignore_hidden" as true, so that it doesn't check // if the windowState is hidden. return this.__super__.areDesktopNotificationsEnabled.call(this, true); }, shouldNotifyOfMessage: function (message) { var _converse = this.__super__._converse; var result = this.__super__.shouldNotifyOfMessage.apply(this, arguments); return result && _converse.isMessageToHiddenChat(message); }, ControlBoxView: { renderContactsPanel: function () { this.__super__.renderContactsPanel.apply(this, arguments); this.el.classList.remove("fullscreen"); return this; }, renderRegistrationPanel: function () { this.__super__.renderRegistrationPanel.apply(this, arguments); // TODO: put into template var div = document.createElement('div'); div.innerHTML = '

inVerse

'; var el = document.getElementById('converse-register'); el.parentNode.insertBefore(div.firstChild, el); return this; }, renderLoginPanel: function () { this.__super__.renderLoginPanel.apply(this, arguments); this.el.classList.add("fullscreen"); // TODO: put into template var div = document.createElement('div'); div.innerHTML = '

inVerse

'; var el = document.getElementById('converse-login'); el.parentNode.insertBefore(div.firstChild, el); return this; } }, ChatRoomView: { afterShown: function (focus) { /* Make sure chat rooms are scrolled down when opened */ this.scrollDown(); if (focus) { this.focus(); } return this.__super__.afterShown.apply(this, arguments); } } }, initialize: function () { var _converse = this._converse; this.updateSettings({ chatview_avatar_height: 44, chatview_avatar_width: 44, hide_open_bookmarks: true, notification_icon: '/node_modules/converse.js/logo/conversejs128.png', // New default show_controlbox_by_default: true, sounds_path: '/node_modules/converse.js/sounds/', // New default sticky_controlbox: true, }); _converse.isMessageToHiddenChat = function (message) { var jid = Strophe.getBareJidFromJid(message.getAttribute('from')); var model = _converse.chatboxes.get(jid); if (!_.isNil(model)) { return model.get('hidden'); } // Not having a chat box is assume to be practically the same // as it being hidden. return true; } } }); }));