From a6c97490b3c6b7bca00d16bc436abf902ee7b101 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Mon, 25 Jan 2016 10:40:29 -0500 Subject: [PATCH 1/2] Changed first preference load to be done synchronously --- api/context.go | 1 + web/react/pages/channel.jsx | 17 +++-------------- web/react/stores/preference_store.jsx | 21 ++++++++++++--------- web/templates/channel.html | 2 +- web/web.go | 9 +++++++++ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/api/context.go b/api/context.go index 41a52fa0cf..b91981ecd1 100644 --- a/api/context.go +++ b/api/context.go @@ -45,6 +45,7 @@ type Page struct { User *model.User Team *model.Team Channel *model.Channel + Preferences *model.Preferences PostID string SessionTokenIndex int64 Locale string diff --git a/web/react/pages/channel.jsx b/web/react/pages/channel.jsx index 1e28dab8b8..5bb0294fdd 100644 --- a/web/react/pages/channel.jsx +++ b/web/react/pages/channel.jsx @@ -20,12 +20,8 @@ import InviteMemberModal from '../components/invite_member_modal.jsx'; import PreferenceStore from '../stores/preference_store.jsx'; -import * as Utils from '../utils/utils.jsx'; -import * as AsyncClient from '../utils/async_client.jsx'; import * as EventHelpers from '../dispatcher/event_helpers.jsx'; -import Constants from '../utils/constants.jsx'; - var IntlProvider = ReactIntl.IntlProvider; class Root extends React.Component { @@ -92,24 +88,17 @@ class Root extends React.Component { } } -function onPreferenceChange() { - const selectedFont = PreferenceStore.get(Constants.Preferences.CATEGORY_DISPLAY_SETTINGS, 'selected_font', Constants.DEFAULT_FONT); - Utils.applyFont(selectedFont); - PreferenceStore.removeChangeListener(onPreferenceChange); -} - -global.window.setup_channel_page = function setup(props, team, channel) { +global.window.setup_channel_page = function setup(props, team, channel, preferences) { if (props.PostId === '') { EventHelpers.emitChannelClickEvent(channel); } else { EventHelpers.emitPostFocusEvent(props.PostId); } - PreferenceStore.addChangeListener(onPreferenceChange); - AsyncClient.getAllPreferences(); + PreferenceStore.setPreferences(preferences); ReactDOM.render( , document.getElementById('channel_view') ); -}; \ No newline at end of file +}; diff --git a/web/react/stores/preference_store.jsx b/web/react/stores/preference_store.jsx index 79eab4fe11..7ecaf0a95f 100644 --- a/web/react/stores/preference_store.jsx +++ b/web/react/stores/preference_store.jsx @@ -133,6 +133,16 @@ class PreferenceStoreClass extends EventEmitter { return preference; } + setPreferences(newPreferences) { + const preferences = this.getAllPreferences(); + + for (const preference of newPreferences) { + preferences.set(getPreferenceKeyForModel(preference), preference); + } + + this.setAllPreferences(preferences); + } + emitChange() { this.emit(CHANGE_EVENT); } @@ -155,18 +165,11 @@ class PreferenceStoreClass extends EventEmitter { this.emitChange(); break; } - case ActionTypes.RECIEVED_PREFERENCES: { - const preferences = this.getAllPreferences(); - - for (const preference of action.preferences) { - preferences.set(getPreferenceKeyForModel(preference), preference); - } - - this.setAllPreferences(preferences); + case ActionTypes.RECIEVED_PREFERENCES: + this.setPreferences(action.preferences); this.emitChange(); break; } - } } } diff --git a/web/templates/channel.html b/web/templates/channel.html index dcc50115b8..3737074995 100644 --- a/web/templates/channel.html +++ b/web/templates/channel.html @@ -6,7 +6,7 @@