diff --git a/js/background.js b/js/background.js index e593b0ed5..e0a7930c0 100644 --- a/js/background.js +++ b/js/background.js @@ -368,6 +368,7 @@ messageReceiver.addEventListener('verified', onVerified); messageReceiver.addEventListener('error', onError); messageReceiver.addEventListener('empty', onEmpty); + messageReceiver.addEventListener('reconnect', onReconnect); messageReceiver.addEventListener('progress', onProgress); messageReceiver.addEventListener('configuration', onConfiguration); @@ -460,6 +461,13 @@ Whisper.Notifications.enable(); } + function onReconnect() { + // We disable notifications on first connect, but the same applies to reconnect. In + // scenarios where we're coming back from sleep, we can get offline/online events + // very fast, and it looks like a network blip. But we need to suppress + // notifications in these scenarios too. So we listen for 'reconnect' events. + Whisper.Notifications.disable(); + } function onProgress(ev) { const { count } = ev; diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 1d312967c..0d63a78b8 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -39,6 +39,12 @@ MessageReceiver.prototype.extend({ return; } + this.count = 0; + if (this.hasConnected) { + const ev = new Event('reconnect'); + this.dispatchEvent(ev); + } + this.hasConnected = true; if (this.socket && this.socket.readyState !== WebSocket.CLOSED) {