From b2970c6c04fec07f5c32704d1c005ad106f37c73 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 28 Jan 2024 13:11:50 +0100 Subject: [PATCH] fix(assignees): prevent double notifications for assignees --- pkg/models/listeners.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/models/listeners.go b/pkg/models/listeners.go index 2a9dc2fed..e9876de5f 100644 --- a/pkg/models/listeners.go +++ b/pkg/models/listeners.go @@ -291,11 +291,18 @@ func (s *SendTaskAssignedNotification) Handle(msg *message.Message) (err error) return err } + notifiedUsers := make(map[int64]bool) + for _, subscriber := range subscribers { if subscriber.UserID == event.Doer.ID { continue } + if notifiedUsers[subscriber.UserID] { + // Users may be subscribed to the task and the project itself, which leads to double notifications + continue + } + n := &TaskAssignedNotification{ Doer: event.Doer, Task: &task, @@ -306,6 +313,8 @@ func (s *SendTaskAssignedNotification) Handle(msg *message.Message) (err error) if err != nil { return } + + notifiedUsers[subscriber.UserID] = true } return nil