From 08543a66c438bfa8437d78262862630d108243a1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 16 Sep 2016 18:01:14 +0100 Subject: [PATCH] fix race between setting canonical alias and creating aliases --- .../views/room_settings/AliasSettings.js | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/components/views/room_settings/AliasSettings.js b/src/components/views/room_settings/AliasSettings.js index 8c8ae659e8..96618b613a 100644 --- a/src/components/views/room_settings/AliasSettings.js +++ b/src/components/views/room_settings/AliasSettings.js @@ -70,22 +70,6 @@ module.exports = React.createClass({ saveSettings: function() { var promises = []; - // save new canonical alias - var oldCanonicalAlias = null; - if (this.props.canonicalAliasEvent) { - oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias; - } - if (oldCanonicalAlias !== this.state.canonicalAlias) { - console.log("AliasSettings: Updating canonical alias"); - promises.push( - MatrixClientPeg.get().sendStateEvent( - this.props.roomId, "m.room.canonical_alias", { - alias: this.state.canonicalAlias - }, "" - ) - ); - } - // save new aliases for m.room.aliases var aliasOperations = this.getAliasOperations(); for (var i = 0; i < aliasOperations.length; i++) { @@ -111,6 +95,23 @@ module.exports = React.createClass({ } } + + // save new canonical alias + var oldCanonicalAlias = null; + if (this.props.canonicalAliasEvent) { + oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias; + } + if (oldCanonicalAlias !== this.state.canonicalAlias) { + console.log("AliasSettings: Updating canonical alias"); + promises = [ q.all(promises).then( + MatrixClientPeg.get().sendStateEvent( + this.props.roomId, "m.room.canonical_alias", { + alias: this.state.canonicalAlias + }, "" + ) + ) ]; + } + return promises; },