Sfoglia il codice sorgente

Also notify if the chat is not visible in the page.

JC Brand 6 anni fa
parent
commit
f947bcc4b1
1 ha cambiato i file con 11 aggiunte e 9 eliminazioni
  1. 11 9
      src/converse-notification.js

+ 11 - 9
src/converse-notification.js

@@ -1,7 +1,7 @@
 // Converse.js (A browser based XMPP chat client)
 // http://conversejs.org
 //
-// Copyright (c) 2012-2017, Jan-Carel Brand <jc@opkode.com>
+// Copyright (c) 2013-2018, JC Brand <jc@opkode.com>
 // Licensed under the Mozilla Public License (MPLv2)
 //
 /*global define */
@@ -10,10 +10,13 @@
     define(["converse-core"], factory);
 }(this, function (converse) {
     "use strict";
-    const { utils, Strophe, _ } = converse.env;
+    const { Strophe, _ } = converse.env,
+          u = converse.env.utils;
 
     converse.plugins.add('converse-notification', {
 
+        dependencies: ["converse-chatboxes"],
+
         initialize () {
             /* The initialize function gets called as soon as the plugin is
              * loaded by converse.js's plugin machinery.
@@ -72,10 +75,11 @@
 
             _converse.isMessageToHiddenChat = function (message) {
                 if (_.includes(['mobile', 'fullscreen', 'embedded'], _converse.view_mode)) {
-                    const jid = Strophe.getBareJidFromJid(message.getAttribute('from'));
-                    const model = _converse.chatboxes.get(jid);
-                    if (!_.isNil(model)) {
-                        return model.get('hidden') || _converse.windowState === 'hidden';
+                    const jid = Strophe.getBareJidFromJid(message.getAttribute('from')),
+                          view = _converse.chatboxviews.get(jid);
+
+                    if (!_.isNil(view)) {
+                        return view.model.get('hidden') || _converse.windowState === 'hidden' || !u.isVisible(view.el);
                     }
                     return true;
                 }
@@ -83,14 +87,12 @@
             }
 
             _converse.shouldNotifyOfMessage = function (message) {
-                /* Is this a message worthy of notification?
-                 */
                 const forwarded = message.querySelector('forwarded');
                 if (!_.isNull(forwarded)) {
                     return false;
                 } else if (message.getAttribute('type') === 'groupchat') {
                     return _converse.shouldNotifyOfGroupMessage(message);
-                } else if (utils.isHeadlineMessage(_converse, message)) {
+                } else if (u.isHeadlineMessage(_converse, message)) {
                     // We want to show notifications for headline messages.
                     return _converse.isMessageToHiddenChat(message);
                 }