Don't re-notify about messages on browser refresh

Don't notify unless the js-sdk state is SYNCING, otherwise we'll
display notifications for messages that come in during the
incremental between the js-sdk cached data and the present.

Requires https://github.com/matrix-org/matrix-js-sdk/pull/405
Fixes https://github.com/vector-im/riot-web/issues/3251
pull/21833/head
David Baker 2017-03-28 15:02:08 +01:00
parent a8d85ca2ad
commit 4587b5f995
1 changed files with 6 additions and 6 deletions

View File

@ -98,7 +98,7 @@ var Notifier = {
MatrixClientPeg.get().on("Room.receipt", this.boundOnRoomReceipt); MatrixClientPeg.get().on("Room.receipt", this.boundOnRoomReceipt);
MatrixClientPeg.get().on("sync", this.boundOnSyncStateChange); MatrixClientPeg.get().on("sync", this.boundOnSyncStateChange);
this.toolbarHidden = false; this.toolbarHidden = false;
this.isPrepared = false; this.isSyncing = false;
}, },
stop: function() { stop: function() {
@ -107,7 +107,7 @@ var Notifier = {
MatrixClientPeg.get().removeListener("Room.receipt", this.boundOnRoomReceipt); MatrixClientPeg.get().removeListener("Room.receipt", this.boundOnRoomReceipt);
MatrixClientPeg.get().removeListener('sync', this.boundOnSyncStateChange); MatrixClientPeg.get().removeListener('sync', this.boundOnSyncStateChange);
} }
this.isPrepared = false; this.isSyncing = false;
}, },
supportsDesktopNotifications: function() { supportsDesktopNotifications: function() {
@ -213,18 +213,18 @@ var Notifier = {
}, },
onSyncStateChange: function(state) { onSyncStateChange: function(state) {
if (state === "PREPARED" || state === "SYNCING") { if (state === "SYNCING") {
this.isPrepared = true; this.isSyncing = true;
} }
else if (state === "STOPPED" || state === "ERROR") { else if (state === "STOPPED" || state === "ERROR") {
this.isPrepared = false; this.isSyncing = false;
} }
}, },
onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) { onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) {
if (toStartOfTimeline) return; if (toStartOfTimeline) return;
if (!room) return; if (!room) return;
if (!this.isPrepared) return; // don't alert for any messages initially if (!this.isSyncing) return; // don't alert for any messages initially
if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) return; if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) return;
if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return; if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;