From d8df66c00cadbde1aa35dd9fcdb520bb5bd230ce Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Mon, 25 Apr 2016 08:20:45 -0400 Subject: Fixed updating mention keys when a user's username changes (#2774) --- model/user.go | 23 +++++++++++++++++++---- model/user_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) (limited to 'model') diff --git a/model/user.go b/model/user.go index f43fc2089..7563de8ae 100644 --- a/model/user.go +++ b/model/user.go @@ -186,13 +186,28 @@ func (u *User) SetDefaultNotifications() { u.NotifyProps["desktop"] = USER_NOTIFY_ALL u.NotifyProps["desktop_sound"] = "true" u.NotifyProps["mention_keys"] = u.Username + ",@" + u.Username - u.NotifyProps["first_name"] = "false" u.NotifyProps["all"] = "true" u.NotifyProps["channel"] = "true" - splitName := strings.Split(u.Nickname, " ") - if len(splitName) > 0 && splitName[0] != "" { + + if u.FirstName == "" { + u.NotifyProps["first_name"] = "false" + } else { u.NotifyProps["first_name"] = "true" - u.NotifyProps["mention_keys"] += "," + splitName[0] + } +} + +func (user *User) UpdateMentionKeysFromUsername(oldUsername string) { + nonUsernameKeys := []string{} + splitKeys := strings.Split(user.NotifyProps["mention_keys"], ",") + for _, key := range splitKeys { + if key != oldUsername && key != "@"+oldUsername { + nonUsernameKeys = append(nonUsernameKeys, key) + } + } + + user.NotifyProps["mention_keys"] = user.Username + ",@" + user.Username + if len(nonUsernameKeys) > 0 { + user.NotifyProps["mention_keys"] += "," + strings.Join(nonUsernameKeys, ",") } } diff --git a/model/user_test.go b/model/user_test.go index 286c92a66..c6f7dfecc 100644 --- a/model/user_test.go +++ b/model/user_test.go @@ -41,6 +41,33 @@ func TestUserPreUpdate(t *testing.T) { user.PreUpdate() } +func TestUserUpdateMentionKeysFromUsername(t *testing.T) { + user := User{Username: "user"} + user.SetDefaultNotifications() + + if user.NotifyProps["mention_keys"] != "user,@user" { + t.Fatal("default mention keys are invalid: %v", user.NotifyProps["mention_keys"]) + } + + user.Username = "person" + user.UpdateMentionKeysFromUsername("user") + if user.NotifyProps["mention_keys"] != "person,@person" { + t.Fatal("mention keys are invalid after changing username: %v", user.NotifyProps["mention_keys"]) + } + + user.NotifyProps["mention_keys"] += ",mention" + user.UpdateMentionKeysFromUsername("person") + if user.NotifyProps["mention_keys"] != "person,@person,mention" { + t.Fatal("mention keys are invalid after adding extra mention keyword: %v", user.NotifyProps["mention_keys"]) + } + + user.Username = "user" + user.UpdateMentionKeysFromUsername("person") + if user.NotifyProps["mention_keys"] != "user,@user,mention" { + t.Fatal("mention keys are invalid after changing username with extra mention keyword: %v", user.NotifyProps["mention_keys"]) + } +} + func TestUserIsValid(t *testing.T) { user := User{} -- cgit v1.2.3-1-g7c22