Fix updating the index when moving a task
This commit is contained in:
parent
556ccd68c1
commit
f57b7e989f
1 changed files with 30 additions and 17 deletions
|
@ -693,13 +693,41 @@ func (t *Task) Update() (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the task is being moved between lists, make sure to move the bucket as well
|
// All columns to update in a separate variable to be able to add to them
|
||||||
|
colsToUpdate := []string{
|
||||||
|
"title",
|
||||||
|
"description",
|
||||||
|
"done",
|
||||||
|
"due_date",
|
||||||
|
"repeat_after",
|
||||||
|
"priority",
|
||||||
|
"start_date",
|
||||||
|
"end_date",
|
||||||
|
"hex_color",
|
||||||
|
"done_at",
|
||||||
|
"percent_done",
|
||||||
|
"list_id",
|
||||||
|
"bucket_id",
|
||||||
|
"position",
|
||||||
|
"repeat_from_current_date",
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the task is being moved between lists, make sure to move the bucket + index as well
|
||||||
if t.ListID != 0 && ot.ListID != t.ListID {
|
if t.ListID != 0 && ot.ListID != t.ListID {
|
||||||
b, err := getDefaultBucket(t.ListID)
|
b, err := getDefaultBucket(t.ListID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
t.BucketID = b.ID
|
t.BucketID = b.ID
|
||||||
|
|
||||||
|
latestTask := &Task{}
|
||||||
|
_, err = x.Where("list_id = ?", t.ListID).OrderBy("id desc").Get(latestTask)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Index = latestTask.Index + 1
|
||||||
|
colsToUpdate = append(colsToUpdate, "index")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the labels
|
// Update the labels
|
||||||
|
@ -776,22 +804,7 @@ func (t *Task) Update() (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = x.ID(t.ID).
|
_, err = x.ID(t.ID).
|
||||||
Cols("title",
|
Cols(colsToUpdate...).
|
||||||
"description",
|
|
||||||
"done",
|
|
||||||
"due_date",
|
|
||||||
"repeat_after",
|
|
||||||
"priority",
|
|
||||||
"start_date",
|
|
||||||
"end_date",
|
|
||||||
"hex_color",
|
|
||||||
"done_at",
|
|
||||||
"percent_done",
|
|
||||||
"list_id",
|
|
||||||
"bucket_id",
|
|
||||||
"position",
|
|
||||||
"repeat_from_current_date",
|
|
||||||
).
|
|
||||||
Update(ot)
|
Update(ot)
|
||||||
*t = ot
|
*t = ot
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue