From 861745e33b9067c06d4afefca2bc7c955416dba4 Mon Sep 17 00:00:00 2001 From: Eli Yukelzon Date: Thu, 29 Apr 2021 12:15:27 +0300 Subject: [PATCH] MM-35123 - CRT: Replying to a post with mention causes two mention badges to appear (#17506) Co-authored-by: Mattermod --- app/notification.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/notification.go b/app/notification.go index 74fdde7002..3e488d7c23 100644 --- a/app/notification.go +++ b/app/notification.go @@ -172,11 +172,12 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod mentionAutofollowChans := []chan *model.AppError{} threadParticipants := map[string]bool{post.UserId: true} if *a.Config().ServiceSettings.ThreadAutoFollow && post.RootId != "" { + var rootMentions *ExplicitMentions if parentPostList != nil { threadParticipants[parentPostList.Posts[parentPostList.Order[0]].UserId] = true if channel.Type != model.CHANNEL_DIRECT { rootPost := parentPostList.Posts[parentPostList.Order[0]] - rootMentions := getExplicitMentions(rootPost, keywords, groups) + rootMentions = getExplicitMentions(rootPost, keywords, groups) for id := range rootMentions.Mentions { threadParticipants[id] = true } @@ -190,6 +191,10 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod mac := make(chan *model.AppError, 1) go func(userID string) { defer close(mac) + isRootMention := false + if rootMentions != nil { + _, isRootMention = rootMentions.Mentions[userID] + } _, incrementMentions := mentions.Mentions[userID] // if the user was not explicitly mentioned, check if they explicitly unfollowed the thread if !incrementMentions { @@ -205,7 +210,7 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod return } } - _, err := a.Srv().Store.Thread().MaintainMembership(userID, post.RootId, true, incrementMentions, *a.Config().ServiceSettings.ThreadAutoFollow, userID == post.UserId, userID == post.UserId) + _, err := a.Srv().Store.Thread().MaintainMembership(userID, post.RootId, true, !isRootMention && incrementMentions, *a.Config().ServiceSettings.ThreadAutoFollow, userID == post.UserId, userID == post.UserId) if err != nil { mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, err.Error(), http.StatusInternalServerError) return