From a11421c74b338eee6eedb4f4260a75f38aa3fd4c Mon Sep 17 00:00:00 2001 From: hmhealey Date: Mon, 5 Oct 2015 12:45:15 -0400 Subject: Added default direct channels for previously existing users --- api/preference.go | 11 +++++++++- api/user.go | 63 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/api/preference.go b/api/preference.go index 9fadfd2e4..84cfc130c 100644 --- a/api/preference.go +++ b/api/preference.go @@ -58,6 +58,15 @@ func getPreferencesByName(c *Context, w http.ResponseWriter, r *http.Request) { c.Err = result.Err return } else { - w.Write([]byte(model.PreferenceListToJson(result.Data.([]*model.Preference)))) + data := result.Data.([]*model.Preference) + + if len(data) == 0 { + if category == model.PREFERENCE_CATEGORY_DIRECT_CHANNELS && name == model.PREFERENCE_NAME_SHOW { + // add direct channels for a user that existed before preferences were added + data = AddDirectChannels(c.Session.UserId, c.Session.TeamId) + } + } + + w.Write([]byte(model.PreferenceListToJson(data))) } } diff --git a/api/user.go b/api/user.go index b769a2912..204f00dcd 100644 --- a/api/user.go +++ b/api/user.go @@ -222,42 +222,49 @@ func CreateUser(c *Context, team *model.Team, user *model.User) *model.User { func fireAndForgetAddDirectChannels(user *model.User, team *model.Team) { go func() { - var profiles map[string]*model.User - if result := <-Srv.Store.User().GetProfiles(team.Id); result.Err != nil { - l4g.Error("Failed to add direct channel preferences for new user user_id=%s, team_id=%s, err=%v", user.Id, team.Id, result.Err.Error()) - return - } else { - profiles = result.Data.(map[string]*model.User) - } + AddDirectChannels(user.Id, team.Id) + }() +} - count := 10 +func AddDirectChannels(userId, teamId string) []*model.Preference { + var profiles map[string]*model.User + if result := <-Srv.Store.User().GetProfiles(teamId); result.Err != nil { + l4g.Error("Failed to add direct channel preferences for user user_id=%s, team_id=%s, err=%v", userId, teamId, result.Err.Error()) + return []*model.Preference{} + } else { + profiles = result.Data.(map[string]*model.User) + } - for id := range profiles { - if id == user.Id { - continue - } + var preferences []*model.Preference - profile := profiles[id] + for id := range profiles { + if id == userId { + continue + } - preference := &model.Preference{ - UserId: user.Id, - Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, - Name: model.PREFERENCE_NAME_SHOW, - AltId: profile.Id, - Value: "true", - } + profile := profiles[id] - if result := <-Srv.Store.Preference().Save(preference); result.Err != nil { - l4g.Error("Failed to add direct channel preferences for new user user_id=%s, alt_id=%s, team_id=%s, err=%v", user.Id, profile.Id, team.Id, result.Err.Error()) - } + preference := &model.Preference{ + UserId: userId, + Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNELS, + Name: model.PREFERENCE_NAME_SHOW, + AltId: profile.Id, + Value: "true", + } - count -= 1 + if result := <-Srv.Store.Preference().Save(preference); result.Err != nil { + l4g.Error("Failed to add direct channel preferences for user user_id=%s, alt_id=%s, team_id=%s, err=%v", userId, profile.Id, teamId, result.Err.Error()) + continue + } - if count == 0 { - break - } + preferences = append(preferences, preference) + + if len(preferences) >= 10 { + break } - }() + } + + return preferences } func fireAndForgetWelcomeEmail(email, teamDisplayName, siteURL, teamURL string) { -- cgit v1.2.3-1-g7c22