diff --git a/app/notification.go b/app/notification.go index 0ce5161e23..7090e963c2 100644 --- a/app/notification.go +++ b/app/notification.go @@ -126,7 +126,7 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod if len(m.OtherPotentialMentions) > 0 && !post.IsSystemMessage() { if result := <-a.Srv.Store.User().GetProfilesByUsernames(m.OtherPotentialMentions, team.Id); result.Err == nil { - channelMentions := model.UserSlice(result.Data.([]*model.User)) + channelMentions := model.UserSlice(result.Data.([]*model.User)).FilterByActive(true) var outOfChannelMentions model.UserSlice var outOfGroupsMentions model.UserSlice diff --git a/model/user.go b/model/user.go index 7c1cd146ee..b3ad63e349 100644 --- a/model/user.go +++ b/model/user.go @@ -137,6 +137,19 @@ func (u UserSlice) IDs() []string { return ids } +func (u UserSlice) FilterByActive(active bool) UserSlice { + var matches []*User + + for _, user := range u { + if user.DeleteAt == 0 && active { + matches = append(matches, user) + } else if user.DeleteAt != 0 && !active { + matches = append(matches, user) + } + } + return UserSlice(matches) +} + func (u UserSlice) FilterByID(ids []string) UserSlice { var matches []*User for _, user := range u { diff --git a/model/user_test.go b/model/user_test.go index bdd8f20038..fb3449dd83 100644 --- a/model/user_test.go +++ b/model/user_test.go @@ -388,3 +388,25 @@ func TestIsValidLocale(t *testing.T) { }) } } + +func TestUserSlice(t *testing.T) { + t.Run("FilterByActive", func(t *testing.T) { + user0 := &User{Id: "user0", DeleteAt: 0} + user1 := &User{Id: "user1", DeleteAt: 0} + user2 := &User{Id: "user2", DeleteAt: 1} + + slice := UserSlice([]*User{user0, user1, user2}) + + activeUsers := slice.FilterByActive(true) + assert.Equal(t, 2, len(activeUsers)) + for _, user := range activeUsers { + assert.True(t, user.DeleteAt == 0) + } + + inactiveUsers := slice.FilterByActive(false) + assert.Equal(t, 1, len(inactiveUsers)) + for _, user := range inactiveUsers { + assert.True(t, user.DeleteAt != 0) + } + }) +}