summaryrefslogtreecommitdiffstats
path: root/app/preference.go
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-04-20 08:57:31 -0400
committerGeorge Goldberg <george@gberg.me>2017-04-20 13:57:31 +0100
commit1a0f8d1b3c7451eac43bfdc5971de060caabf441 (patch)
tree3bf83f3f8da16a257a1539d0a20cf7febb95fba8 /app/preference.go
parentb79439e92b11a53c972bbd1169f4c3aaede9b8ce (diff)
downloadchat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.tar.gz
chat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.tar.bz2
chat-1a0f8d1b3c7451eac43bfdc5971de060caabf441.zip
PLT-1384 Added websocket event when preferences are updated/deleted (#6107)
Diffstat (limited to 'app/preference.go')
-rw-r--r--app/preference.go35
1 files changed, 29 insertions, 6 deletions
diff --git a/app/preference.go b/app/preference.go
index 793f1802b..425b88d29 100644
--- a/app/preference.go
+++ b/app/preference.go
@@ -39,22 +39,45 @@ func GetPreferenceByCategoryAndNameForUser(userId string, category string, prefe
}
}
-func UpdatePreferences(preferences model.Preferences) (bool, *model.AppError) {
+func UpdatePreferences(userId string, preferences model.Preferences) *model.AppError {
+ for _, preference := range preferences {
+ if userId != preference.UserId {
+ return model.NewAppError("savePreferences", "api.preference.update_preferences.set.app_error", nil,
+ "userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden)
+ }
+ }
+
if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
- return false, result.Err
+ return result.Err
}
- return true, nil
+ message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_CHANGED, "", "", userId, nil)
+ message.Add("preferences", preferences.ToJson())
+ go Publish(message)
+
+ return nil
}
-func DeletePreferences(userId string, preferences model.Preferences) (bool, *model.AppError) {
+func DeletePreferences(userId string, preferences model.Preferences) *model.AppError {
+ for _, preference := range preferences {
+ if userId != preference.UserId {
+ err := model.NewAppError("deletePreferences", "api.preference.delete_preferences.delete.app_error", nil,
+ "userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden)
+ return err
+ }
+ }
+
for _, preference := range preferences {
if result := <-Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); result.Err != nil {
result.Err.StatusCode = http.StatusBadRequest
- return false, result.Err
+ return result.Err
}
}
- return true, nil
+ message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_DELETED, "", "", userId, nil)
+ message.Add("preferences", preferences.ToJson())
+ go Publish(message)
+
+ return nil
}