summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhmhealey <harrisonmhealey@gmail.com>2015-12-07 18:13:14 -0500
committerhmhealey <harrisonmhealey@gmail.com>2015-12-07 18:13:14 -0500
commit7d4a9ad376cf346826ab13b7c0d4eec60eb5cb7d (patch)
treef3e456a67acd229d7d770ead1e9d637bd75f63da
parentb06f11fd632f146a204b4ef1357a8c099bade072 (diff)
downloadchat-7d4a9ad376cf346826ab13b7c0d4eec60eb5cb7d.tar.gz
chat-7d4a9ad376cf346826ab13b7c0d4eec60eb5cb7d.tar.bz2
chat-7d4a9ad376cf346826ab13b7c0d4eec60eb5cb7d.zip
Added preference_changed web socket event
-rw-r--r--api/web_team_hub.go4
-rw-r--r--model/message.go17
-rw-r--r--web/react/dispatcher/event_helpers.jsx7
-rw-r--r--web/react/stores/preference_store.jsx12
-rw-r--r--web/react/stores/socket_store.jsx9
-rw-r--r--web/react/utils/constants.jsx4
6 files changed, 40 insertions, 13 deletions
diff --git a/api/web_team_hub.go b/api/web_team_hub.go
index 6a25b7d3d..2c2386317 100644
--- a/api/web_team_hub.go
+++ b/api/web_team_hub.go
@@ -95,9 +95,11 @@ func ShouldSendEvent(webCon *WebConn, msg *model.Message) bool {
return false
}
} else {
- // Don't share a user's view events with other users
+ // Don't share a user's view or preference events with other users
if msg.Action == model.ACTION_CHANNEL_VIEWED {
return false
+ } else if msg.Action == model.ACTION_PREFERENCE_CHANGED {
+ return false
}
// Only report events to a user who is the subject of the event, or is in the channel of the event
diff --git a/model/message.go b/model/message.go
index 2725353ac..1cb350bbf 100644
--- a/model/message.go
+++ b/model/message.go
@@ -9,14 +9,15 @@ import (
)
const (
- ACTION_TYPING = "typing"
- ACTION_POSTED = "posted"
- ACTION_POST_EDITED = "post_edited"
- ACTION_POST_DELETED = "post_deleted"
- ACTION_CHANNEL_VIEWED = "channel_viewed"
- ACTION_NEW_USER = "new_user"
- ACTION_USER_ADDED = "user_added"
- ACTION_USER_REMOVED = "user_removed"
+ ACTION_TYPING = "typing"
+ ACTION_POSTED = "posted"
+ ACTION_POST_EDITED = "post_edited"
+ ACTION_POST_DELETED = "post_deleted"
+ ACTION_CHANNEL_VIEWED = "channel_viewed"
+ ACTION_NEW_USER = "new_user"
+ ACTION_USER_ADDED = "user_added"
+ ACTION_USER_REMOVED = "user_removed"
+ ACTION_PREFERENCE_CHANGED = "preference_changed"
)
type Message struct {
diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx
index 306c59e8b..297555f38 100644
--- a/web/react/dispatcher/event_helpers.jsx
+++ b/web/react/dispatcher/event_helpers.jsx
@@ -148,3 +148,10 @@ export function emitClearSuggestions(suggestionId) {
id: suggestionId
});
}
+
+export function emitPreferenceChangedEvent(preference) {
+ AppDispatcher.handleServerAction({
+ type: Constants.ActionTypes.RECIEVED_PREFERENCE,
+ preference
+ });
+}
diff --git a/web/react/stores/preference_store.jsx b/web/react/stores/preference_store.jsx
index 068bc29c2..e6a1d8a2b 100644
--- a/web/react/stores/preference_store.jsx
+++ b/web/react/stores/preference_store.jsx
@@ -90,8 +90,8 @@ class PreferenceStoreClass extends EventEmitter {
return preference;
}
- emitChange(preferences) {
- this.emit(CHANGE_EVENT, preferences);
+ emitChange() {
+ this.emit(CHANGE_EVENT);
}
addChangeListener(callback) {
@@ -106,6 +106,12 @@ class PreferenceStoreClass extends EventEmitter {
const action = payload.action;
switch (action.type) {
+ case ActionTypes.RECIEVED_PREFERENCE: {
+ const preference = action.preference;
+ this.setPreference(preference.category, preference.name, preference.value);
+ this.emitChange();
+ break;
+ }
case ActionTypes.RECIEVED_PREFERENCES: {
const preferences = this.getAllPreferences();
@@ -114,7 +120,7 @@ class PreferenceStoreClass extends EventEmitter {
}
this.setAllPreferences(preferences);
- this.emitChange(preferences);
+ this.emitChange();
break;
}
}
diff --git a/web/react/stores/socket_store.jsx b/web/react/stores/socket_store.jsx
index 29aa32a08..ee501c149 100644
--- a/web/react/stores/socket_store.jsx
+++ b/web/react/stores/socket_store.jsx
@@ -135,6 +135,10 @@ class SocketStoreClass extends EventEmitter {
handleChannelViewedEvent(msg);
break;
+ case SocketEvents.PREFERENCE_CHANGED:
+ handlePreferenceChangedEvent(msg);
+ break;
+
default:
}
}
@@ -279,6 +283,11 @@ function handleChannelViewedEvent(msg) {
}
}
+function handlePreferenceChangedEvent(msg) {
+ const preference = JSON.parse(msg.props.preference);
+ EventHelpers.emitPreferenceChangedEvent(preference);
+}
+
var SocketStore = new SocketStoreClass();
/*SocketStore.dispatchToken = AppDispatcher.register((payload) => {
diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx
index 170a16049..27cf2b175 100644
--- a/web/react/utils/constants.jsx
+++ b/web/react/utils/constants.jsx
@@ -35,6 +35,7 @@ export default {
RECIEVED_AUDITS: null,
RECIEVED_TEAMS: null,
RECIEVED_STATUSES: null,
+ RECIEVED_PREFERENCE: null,
RECIEVED_PREFERENCES: null,
RECIEVED_MSG: null,
@@ -74,7 +75,8 @@ export default {
NEW_USER: 'new_user',
USER_ADDED: 'user_added',
USER_REMOVED: 'user_removed',
- TYPING: 'typing'
+ TYPING: 'typing',
+ PREFERENCE_CHANGED: 'preference_changed'
},
//SPECIAL_MENTIONS: ['all', 'channel'],