1 | import { TaskStatus } from './types';
|
2 |
|
3 | export const getTaskError = (task: TaskStatus): string | undefined =>
|
4 | task.subtasks !== undefined ? getTasksError(task.subtasks) : task.error;
|
5 |
|
6 | export const getTasksError = (tasks: ReadonlyArray<TaskStatus>): string | undefined =>
|
7 | tasks.map(getTaskError).filter((value) => value !== undefined)[0];
|
8 |
|
9 | export const isTaskDone = (task: TaskStatus): boolean =>
|
10 | getTaskError(task) !== undefined || task.skipped !== undefined || task.complete === true;
|
11 |
|
12 | export const areTasksDone = (tasks: ReadonlyArray<TaskStatus>): boolean =>
|
13 | getTasksError(tasks) !== undefined || tasks.every((task) => task.skipped !== undefined || task.complete === true);
|
14 |
|
15 | export const skipAllTasks = (tasks: ReadonlyArray<TaskStatus>, reason: string): ReadonlyArray<TaskStatus> =>
|
16 | tasks.map((task) => {
|
17 | if (isTaskDone(task)) {
|
18 | return task;
|
19 | }
|
20 |
|
21 | return {
|
22 | id: task.id,
|
23 | title: task.title,
|
24 | message: task.message,
|
25 | pending: task.pending,
|
26 | complete: task.complete,
|
27 | error: task.error,
|
28 | subtasks: task.subtasks === undefined ? undefined : skipAllTasks(task.subtasks, reason),
|
29 | skipped: reason,
|
30 | collapse: task.collapse,
|
31 | };
|
32 | });
|