diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js index ca349f00ba..292f7beb98 100644 --- a/src/stores/RoomListStore.js +++ b/src/stores/RoomListStore.js @@ -133,6 +133,8 @@ class RoomListStore extends Store { const logicallyReady = this._matrixClient && this._state.ready; switch (payload.action) { case 'setting_updated': { + if (!logicallyReady) break; + if (payload.settingName === 'RoomList.orderByImportance') { this.updateSortingAlgorithm(payload.newValue === true ? ALGO_IMPORTANCE : ALGO_RECENT); } else if (payload.settingName === 'feature_custom_tags') { @@ -147,6 +149,10 @@ class RoomListStore extends Store { break; } + // Always ensure that we set any state needed for settings here. It is possible that + // setting updates trigger on startup before we are ready to sync, so we want to make + // sure that the right state is in place before we actually react to those changes. + this._setState({tagsEnabled: SettingsStore.isFeatureEnabled("feature_custom_tags")}); this._matrixClient = payload.matrixClient;