From 4a49dec7ade2672a861647f508e6611cbade3905 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Thu, 20 Apr 2017 11:30:50 -0400 Subject: PLT-1384 Synced preferences over the websocket (#6108) --- webapp/actions/global_actions.jsx | 24 +++++++++++++++++++++++- webapp/actions/websocket_actions.jsx | 18 ++++++++++++++++++ webapp/utils/constants.jsx | 2 ++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index c81bb02ac..c3cfb00a4 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -403,11 +403,33 @@ export function emitPreferenceChangedEvent(preference) { preference }); - if (preference.category === Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW) { + if (addedNewDmUser(preference)) { loadProfilesForSidebar(); } } +export function emitPreferencesChangedEvent(preferences) { + AppDispatcher.handleServerAction({ + type: Constants.ActionTypes.RECEIVED_PREFERENCES, + preferences + }); + + if (preferences.findIndex(addedNewDmUser) !== -1) { + loadProfilesForSidebar(); + } +} + +function addedNewDmUser(preference) { + return preference.category === Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW && preference.value === 'true'; +} + +export function emitPreferencesDeletedEvent(preferences) { + AppDispatcher.handleServerAction({ + type: Constants.ActionTypes.DELETED_PREFERENCES, + preferences + }); +} + export function emitRemovePost(post) { AppDispatcher.handleViewAction({ type: Constants.ActionTypes.REMOVE_POST, diff --git a/webapp/actions/websocket_actions.jsx b/webapp/actions/websocket_actions.jsx index 916abb5af..41e1c8f4b 100644 --- a/webapp/actions/websocket_actions.jsx +++ b/webapp/actions/websocket_actions.jsx @@ -185,6 +185,14 @@ function handleEvent(msg) { handlePreferenceChangedEvent(msg); break; + case SocketEvents.PREFERENCES_CHANGED: + handlePreferencesChangedEvent(msg); + break; + + case SocketEvents.PREFERENCES_DELETED: + handlePreferencesDeletedEvent(msg); + break; + case SocketEvents.TYPING: handleUserTypingEvent(msg); break; @@ -356,6 +364,16 @@ function handlePreferenceChangedEvent(msg) { GlobalActions.emitPreferenceChangedEvent(preference); } +function handlePreferencesChangedEvent(msg) { + const preferences = JSON.parse(msg.data.preferences); + GlobalActions.emitPreferencesChangedEvent(preferences); +} + +function handlePreferencesDeletedEvent(msg) { + const preferences = JSON.parse(msg.data.preferences); + GlobalActions.emitPreferencesDeletedEvent(preferences); +} + function handleUserTypingEvent(msg) { GlobalActions.emitRemoteUserTypingEvent(msg.broadcast.channel_id, msg.data.user_id, msg.data.parent_id); diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx index d1bc73228..031e46b44 100644 --- a/webapp/utils/constants.jsx +++ b/webapp/utils/constants.jsx @@ -229,6 +229,8 @@ export const SocketEvents = { USER_UPDATED: 'user_updated', TYPING: 'typing', PREFERENCE_CHANGED: 'preference_changed', + PREFERENCES_CHANGED: 'preferences_changed', + PREFERENCES_DELETED: 'preferences_deleted', EPHEMERAL_MESSAGE: 'ephemeral_message', STATUS_CHANGED: 'status_change', HELLO: 'hello', -- cgit v1.2.3-1-g7c22