From 3b0b4a8460618939d713f64a1b59cb9c56a3ce68 Mon Sep 17 00:00:00 2001 From: kolaente Date: Tue, 8 Nov 2022 16:50:19 +0100 Subject: [PATCH] fix(task): duplicate reminders when adding different ones between winter / summer time Resolves F-889 --- pkg/models/tasks.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/models/tasks.go b/pkg/models/tasks.go index 53e7f592881..bcc04a7512f 100644 --- a/pkg/models/tasks.go +++ b/pkg/models/tasks.go @@ -580,7 +580,9 @@ func GetTasksByUIDs(s *xorm.Session, uids []string, a web.Auth) (tasks []*Task, func getRemindersForTasks(s *xorm.Session, taskIDs []int64) (reminders []*TaskReminder, err error) { reminders = []*TaskReminder{} - err = s.In("task_id", taskIDs).Find(&reminders) + err = s.In("task_id", taskIDs). + OrderBy("reminder asc"). + Find(&reminders) return } @@ -1400,8 +1402,14 @@ func (t *Task) updateReminders(s *xorm.Session, reminders []time.Time) (err erro return } + // Resolve duplicates and sort them + reminderMap := make(map[string]time.Time, len(reminders)) + for _, reminder := range reminders { + reminderMap[reminder.UTC().String()] = reminder + } + // Loop through all reminders and add them - for _, r := range reminders { + for _, r := range reminderMap { _, err = s.Insert(&TaskReminder{TaskID: t.ID, Reminder: r}) if err != nil { return err