This commit is contained in:
parent
333832293d
commit
7f9e70cc1f
|
@ -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
|
// 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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1031,7 +1026,7 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
|
||||||
t.ListID = ot.ListID
|
t.ListID = ot.ListID
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the reminders
|
// Get the stored reminders
|
||||||
reminders, err := getRemindersForTasks(s, []int64{t.ID})
|
reminders, err := getRemindersForTasks(s, []int64{t.ID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -1066,13 +1061,8 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated: This statement can be removed when ReminderDates will be removed
|
|
||||||
if t.ReminderDates != nil {
|
|
||||||
t.overwriteRemindersWithReminderDates(t.ReminderDates)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the reminders
|
// 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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1520,21 +1510,21 @@ func (t *Task) overwriteRemindersWithReminderDates(reminderDates []time.Time) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the absolute trigger dates for Reminders with relative period
|
// Set the absolute trigger dates for Reminders with relative period
|
||||||
func updateRelativeReminderDates(reminders []*TaskReminder, dueDate time.Time, startDate time.Time, endDate time.Time) {
|
func updateRelativeReminderDates(task *Task) {
|
||||||
for _, reminder := range reminders {
|
for _, reminder := range task.Reminders {
|
||||||
relativeDuration := time.Duration(reminder.RelativePeriod) * time.Second
|
relativeDuration := time.Duration(reminder.RelativePeriod) * time.Second
|
||||||
switch reminder.RelativeTo {
|
switch reminder.RelativeTo {
|
||||||
case ReminderRelationDueDate:
|
case ReminderRelationDueDate:
|
||||||
if !dueDate.IsZero() {
|
if !task.DueDate.IsZero() {
|
||||||
reminder.Reminder = dueDate.Add(relativeDuration)
|
reminder.Reminder = task.DueDate.Add(relativeDuration)
|
||||||
}
|
}
|
||||||
case ReminderRelationStartDate:
|
case ReminderRelationStartDate:
|
||||||
if !startDate.IsZero() {
|
if !task.StartDate.IsZero() {
|
||||||
reminder.Reminder = startDate.Add(relativeDuration)
|
reminder.Reminder = task.StartDate.Add(relativeDuration)
|
||||||
}
|
}
|
||||||
case ReminderRelationEndDate:
|
case ReminderRelationEndDate:
|
||||||
if !endDate.IsZero() {
|
if !task.EndDate.IsZero() {
|
||||||
reminder.Reminder = endDate.Add(relativeDuration)
|
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
|
// 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.
|
// not make a performance difference we'll just do that.
|
||||||
// The parameter is a slice which holds the new reminders.
|
// 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.
|
_, err = s.
|
||||||
Where("task_id = ?", t.ID).
|
Where("task_id = ?", t.ID).
|
||||||
|
@ -1553,12 +1548,12 @@ func (t *Task) updateReminders(s *xorm.Session, reminders []*TaskReminder, dueDa
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRelativeReminderDates(reminders, dueDate, startDate, endDate)
|
updateRelativeReminderDates(task)
|
||||||
|
|
||||||
// Resolve duplicates and sort them
|
// Resolve duplicates and sort them
|
||||||
reminderMap := make(map[int64]TaskReminder, len(reminders))
|
reminderMap := make(map[int64]*TaskReminder, len(task.Reminders))
|
||||||
for _, reminder := range reminders {
|
for _, reminder := range task.Reminders {
|
||||||
reminderMap[reminder.Reminder.UTC().Unix()] = *reminder
|
reminderMap[reminder.Reminder.UTC().Unix()] = reminder
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Reminders = make([]*TaskReminder, 0, len(reminderMap))
|
t.Reminders = make([]*TaskReminder, 0, len(reminderMap))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user