From 380d4664726931b45fbb1e61069754717f95254f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 17 Mar 2016 02:06:47 +0000 Subject: [PATCH 1/4] correctly fix notif spam after logout/login: https://github.com/vector-im/vector-web/issues/809 --- src/Notifier.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Notifier.js b/src/Notifier.js index f0d38bd7b2..523c259cf4 100644 --- a/src/Notifier.js +++ b/src/Notifier.js @@ -103,6 +103,7 @@ var Notifier = { MatrixClientPeg.get().on('Room.timeline', this.boundOnRoomTimeline); MatrixClientPeg.get().on("sync", this.boundOnSyncStateChange); this.toolbarHidden = false; + this.isPrepared = false; }, stop: function() { @@ -110,6 +111,7 @@ var Notifier = { MatrixClientPeg.get().removeListener('Room.timeline', this.boundOnRoomTimeline); MatrixClientPeg.get().removeListener('sync', this.boundOnSyncStateChange); } + this.isPrepared = false; }, supportsDesktopNotifications: function() { @@ -203,12 +205,10 @@ var Notifier = { }, onSyncStateChange: function(state) { + console.log("sync state change: " + state); if (state === "PREPARED" || state === "SYNCING") { this.isPrepared = true; } - else if (state === "STOPPED" || state === "ERROR") { - this.isPrepared = false; - } }, onRoomTimeline: function(ev, room, toStartOfTimeline) { From 08618f6ad586433de92d522d10a2f1fb12ac8087 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 17 Mar 2016 02:09:49 +0000 Subject: [PATCH 2/4] remove start_login_from_guest and instead make logout able to preserve guestCreds --- src/components/structures/MatrixChat.js | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 838dd1bc02..02223dd1f1 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -232,6 +232,17 @@ module.exports = React.createClass({ var self = this; switch (payload.action) { case 'logout': + var guestCreds; + if (MatrixClientPeg.get().isGuest()) { + guestCreds = { // stash our guest creds so we can backout if needed + userId: MatrixClientPeg.get().credentials.userId, + accessToken: MatrixClientPeg.get().getAccessToken(), + homeserverUrl: MatrixClientPeg.get().getHomeserverUrl(), + identityServerUrl: MatrixClientPeg.get().getIdentityServerUrl(), + guest: true + } + } + if (window.localStorage) { var hsUrl = this.getCurrentHsUrl(); var isUrl = this.getCurrentIsUrl(); @@ -251,7 +262,8 @@ module.exports = React.createClass({ this.notifyNewScreen('login'); this.replaceState({ logged_in: false, - ready: false + ready: false, + guestCreds: guestCreds, }); break; case 'start_registration': @@ -277,7 +289,8 @@ module.exports = React.createClass({ case 'start_login': if (this.state.logged_in) return; this.replaceState({ - screen: 'login' + screen: 'login', + guestCreds: this.state.guestCreds, }); this.notifyNewScreen('login'); break; @@ -286,19 +299,6 @@ module.exports = React.createClass({ screen: 'post_registration' }); break; - case 'start_login_from_guest': - this.replaceState({ - screen: 'login', - guestCreds: { // stash our guest creds so we can backout if needed - userId: MatrixClientPeg.get().credentials.userId, - accessToken: MatrixClientPeg.get().getAccessToken(), - homeserverUrl: MatrixClientPeg.get().getHomeserverUrl(), - identityServerUrl: MatrixClientPeg.get().getIdentityServerUrl(), - guest: true - } - }); - this.notifyNewScreen('login'); - break; case 'start_upgrade_registration': this.replaceState({ screen: "register", From e9b0539b5889db5902c9a3e44de2baa38aec4160 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 17 Mar 2016 02:16:39 +0000 Subject: [PATCH 3/4] hopefully stop weird flickering bugs when pressing delete or zero-height textareas... --- src/components/views/rooms/MessageComposer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 90bf14f5af..6744de5d14 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -240,7 +240,7 @@ module.exports = React.createClass({ resizeInput: function() { // scrollHeight is at least equal to clientHeight, so we have to // temporarily crimp clientHeight to 0 to get an accurate scrollHeight value - this.refs.textarea.style.height = "0px"; + this.refs.textarea.style.height = "20px"; // 20 hardcoded from CSS var newHeight = Math.min(this.refs.textarea.scrollHeight, this.constructor.MAX_HEIGHT); this.refs.textarea.style.height = Math.ceil(newHeight) + "px"; From 810f72ce2c390d5f8c9c9c4c88dcfebec4f235c2 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 17 Mar 2016 11:34:20 +0000 Subject: [PATCH 4/4] suppress notification floods again after returning from error state --- src/Notifier.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Notifier.js b/src/Notifier.js index 523c259cf4..08322e91bc 100644 --- a/src/Notifier.js +++ b/src/Notifier.js @@ -209,6 +209,9 @@ var Notifier = { if (state === "PREPARED" || state === "SYNCING") { this.isPrepared = true; } + else if (state === "STOPPED" || state === "ERROR") { + this.isPrepared = false; + } }, onRoomTimeline: function(ev, room, toStartOfTimeline) {