fix: Review findings
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
cernst 2023-03-08 15:55:11 +01:00
parent 333832293d
commit 7f9e70cc1f
1 changed files with 21 additions and 26 deletions

View File

@ -973,13 +973,8 @@ func createTask(s *xorm.Session, t *Task, a web.Auth, updateAssignees bool) (err
}
}
// Deprecated: the if clause can be removed when ReminderDates will be removed
if t.ReminderDates != nil {
t.overwriteRemindersWithReminderDates(t.ReminderDates)
}
// Update the reminders
if err := t.updateReminders(s, t.Reminders, t.DueDate, t.StartDate, t.EndDate); err != nil {
if err := t.updateReminders(s, t); err != nil {
return err
}
@ -1031,7 +1026,7 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
t.ListID = ot.ListID
}
// Get the reminders
// Get the stored reminders
reminders, err := getRemindersForTasks(s, []int64{t.ID})
if err != nil {
return
@ -1066,13 +1061,8 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
return err
}
// Deprecated: This statement can be removed when ReminderDates will be removed
if t.ReminderDates != nil {
t.overwriteRemindersWithReminderDates(t.ReminderDates)
}
// Update the reminders
if err := ot.updateReminders(s, t.Reminders, t.DueDate, t.StartDate, t.EndDate); err != nil {
if err := ot.updateReminders(s, t); err != nil {
return err
}
@ -1520,21 +1510,21 @@ func (t *Task) overwriteRemindersWithReminderDates(reminderDates []time.Time) {
}
// Set the absolute trigger dates for Reminders with relative period
func updateRelativeReminderDates(reminders []*TaskReminder, dueDate time.Time, startDate time.Time, endDate time.Time) {
for _, reminder := range reminders {
func updateRelativeReminderDates(task *Task) {
for _, reminder := range task.Reminders {
relativeDuration := time.Duration(reminder.RelativePeriod) * time.Second
switch reminder.RelativeTo {
case ReminderRelationDueDate:
if !dueDate.IsZero() {
reminder.Reminder = dueDate.Add(relativeDuration)
if !task.DueDate.IsZero() {
reminder.Reminder = task.DueDate.Add(relativeDuration)
}
case ReminderRelationStartDate:
if !startDate.IsZero() {
reminder.Reminder = startDate.Add(relativeDuration)
if !task.StartDate.IsZero() {
reminder.Reminder = task.StartDate.Add(relativeDuration)
}
case ReminderRelationEndDate:
if !endDate.IsZero() {
reminder.Reminder = endDate.Add(relativeDuration)
if !task.EndDate.IsZero() {
reminder.Reminder = task.EndDate.Add(relativeDuration)
}
}
}
@ -1544,7 +1534,12 @@ func updateRelativeReminderDates(reminders []*TaskReminder, dueDate time.Time, s
// trying to figure out which reminders changed and then only re-add those needed. And since it does
// not make a performance difference we'll just do that.
// The parameter is a slice which holds the new reminders.
func (t *Task) updateReminders(s *xorm.Session, reminders []*TaskReminder, dueDate time.Time, startDate time.Time, endDate time.Time) (err error) {
func (t *Task) updateReminders(s *xorm.Session, task *Task) (err error) {
// Deprecated: This statement must be removed when ReminderDates will be removed
if t.ReminderDates != nil {
t.overwriteRemindersWithReminderDates(t.ReminderDates)
}
_, err = s.
Where("task_id = ?", t.ID).
@ -1553,12 +1548,12 @@ func (t *Task) updateReminders(s *xorm.Session, reminders []*TaskReminder, dueDa
return
}
updateRelativeReminderDates(reminders, dueDate, startDate, endDate)
updateRelativeReminderDates(task)
// Resolve duplicates and sort them
reminderMap := make(map[int64]TaskReminder, len(reminders))
for _, reminder := range reminders {
reminderMap[reminder.Reminder.UTC().Unix()] = *reminder
reminderMap := make(map[int64]*TaskReminder, len(task.Reminders))
for _, reminder := range task.Reminders {
reminderMap[reminder.Reminder.UTC().Unix()] = reminder
}
t.Reminders = make([]*TaskReminder, 0, len(reminderMap))