summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2016-04-25 08:20:45 -0400
committerChristopher Speller <crspeller@gmail.com>2016-04-25 08:20:45 -0400
commitd8df66c00cadbde1aa35dd9fcdb520bb5bd230ce (patch)
treed108b6375e0ca926e57d28dfd3f0266b6eaa6763 /model
parentf73daebb61311efb966afdff75034a7f9c710fbf (diff)
downloadchat-d8df66c00cadbde1aa35dd9fcdb520bb5bd230ce.tar.gz
chat-d8df66c00cadbde1aa35dd9fcdb520bb5bd230ce.tar.bz2
chat-d8df66c00cadbde1aa35dd9fcdb520bb5bd230ce.zip
Fixed updating mention keys when a user's username changes (#2774)
Diffstat (limited to 'model')
-rw-r--r--model/user.go23
-rw-r--r--model/user_test.go27
2 files changed, 46 insertions, 4 deletions
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{}