Skip to content

Commit 42c331b

Browse files
committed
Common: Fix race condition during completion of recurrent task
Issue #13
1 parent b794919 commit 42c331b

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## 1.6.1
44

5+
- Mobile, Web: Fix task duplication during completion of recurrent task.
56
- Mobile: Upgraded datepicker plugin.
67
- Mobile, Web: Upgraded jsTodoTxt to version 0.10.0.
78
- Web: Fixed styles for chrome browser.

src/app/task-list/task-list.component.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,21 @@ export class TaskListComponent implements OnInit, OnDestroy {
256256
this.postponeTask(task)
257257
return
258258
}
259+
let recurDone: Promise<void>
259260
if (task.due && task.rec && !task.completed) {
261+
// Create a copy if task is recurrent
262+
// and wait for append operation to complete
260263
const newTask = task.recur()
261-
this.todoFile.appendTask(newTask)
264+
recurDone = this.todoFile.appendTask(newTask)
265+
} else {
266+
// Otherwise resolve immediately
267+
recurDone = Promise.resolve()
262268
}
263-
task.toggleComplete()
264-
this.refreshTaskList()
265-
this.todoFile.replaceTask(task.id, task)
269+
recurDone.then(() => {
270+
task.toggleComplete()
271+
this.refreshTaskList()
272+
this.todoFile.replaceTask(task.id, task)
273+
})
266274
}
267275

268276
postponeTask(task: Task) {

0 commit comments

Comments
 (0)