diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-04-20 08:57:31 -0400 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-04-20 13:57:31 +0100 |
commit | 1a0f8d1b3c7451eac43bfdc5971de060caabf441 (patch) | |
tree | 3bf83f3f8da16a257a1539d0a20cf7febb95fba8 /app/preference.go | |
parent | b79439e92b11a53c972bbd1169f4c3aaede9b8ce (diff) | |
download | chat-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.go | 35 |
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 } |