Merge pull request #1677 from hmhealey/plt1244
PLT-1244 Changed serverside mention parsing to support usernames containing periods
Этот коммит содержится в:
33
api/post.go
33
api/post.go
@@ -491,20 +491,38 @@ func sendNotificationsAndForget(c *Context, post *model.Post, team *model.Team,
|
||||
splitF := func(c rune) bool {
|
||||
return model.SplitRunes[c]
|
||||
}
|
||||
splitMessage := strings.FieldsFunc(post.Message, splitF)
|
||||
splitMessage := strings.Fields(post.Message)
|
||||
for _, word := range splitMessage {
|
||||
var userIds []string
|
||||
|
||||
// Non-case-sensitive check for regular keys
|
||||
userIds1, keyMatch := keywordMap[strings.ToLower(word)]
|
||||
if ids, match := keywordMap[strings.ToLower(word)]; match {
|
||||
userIds = append(userIds, ids...)
|
||||
}
|
||||
|
||||
// Case-sensitive check for first name
|
||||
userIds2, firstNameMatch := keywordMap[word]
|
||||
if ids, match := keywordMap[word]; match {
|
||||
userIds = append(userIds, ids...)
|
||||
}
|
||||
|
||||
userIds := append(userIds1, userIds2...)
|
||||
if len(userIds) == 0 {
|
||||
// No matches were found with the string split just on whitespace so try further splitting
|
||||
// the message on punctuation
|
||||
splitWords := strings.FieldsFunc(word, splitF)
|
||||
|
||||
for _, splitWord := range splitWords {
|
||||
// Non-case-sensitive check for regular keys
|
||||
if ids, match := keywordMap[strings.ToLower(splitWord)]; match {
|
||||
userIds = append(userIds, ids...)
|
||||
}
|
||||
|
||||
// Case-sensitive check for first name
|
||||
if ids, match := keywordMap[splitWord]; match {
|
||||
userIds = append(userIds, ids...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If one of the non-case-senstive keys or the first name matches the word
|
||||
// then we add en entry to the sendEmail map
|
||||
if keyMatch || firstNameMatch {
|
||||
for _, userId := range userIds {
|
||||
if post.UserId == userId {
|
||||
continue
|
||||
@@ -520,7 +538,6 @@ func sendNotificationsAndForget(c *Context, post *model.Post, team *model.Team,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for id := range toEmailMap {
|
||||
updateMentionCountAndForget(post.ChannelId, id)
|
||||
|
||||
Ссылка в новой задаче
Block a user