chore: apply coderabbit requested changes
This commit is contained in:
@@ -347,14 +347,14 @@ export class FileStorage implements IStorage {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const [parentId, subId] = parts;
|
const [parentId, subIdRaw] = parts;
|
||||||
const subtaskNumericId = parseInt(subId, 10);
|
const subId = subIdRaw.trim();
|
||||||
|
if (!/^\d+$/.test(subId)) {
|
||||||
if (isNaN(subtaskNumericId)) {
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Invalid subtask ID: ${subId}. Subtask ID must be numeric.`
|
`Invalid subtask ID: ${subId}. Subtask ID must be a positive integer.`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
const subtaskNumericId = Number(subId);
|
||||||
|
|
||||||
// Find the parent task
|
// Find the parent task
|
||||||
const parentTaskIndex = tasks.findIndex(
|
const parentTaskIndex = tasks.findIndex(
|
||||||
@@ -388,11 +388,13 @@ export class FileStorage implements IStorage {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const now = new Date().toISOString();
|
||||||
|
|
||||||
// Update the subtask status
|
// Update the subtask status
|
||||||
parentTask.subtasks[subtaskIndex] = {
|
parentTask.subtasks[subtaskIndex] = {
|
||||||
...parentTask.subtasks[subtaskIndex],
|
...parentTask.subtasks[subtaskIndex],
|
||||||
status: newStatus,
|
status: newStatus,
|
||||||
updatedAt: new Date().toISOString()
|
updatedAt: now
|
||||||
};
|
};
|
||||||
|
|
||||||
// Auto-adjust parent status based on subtask statuses
|
// Auto-adjust parent status based on subtask statuses
|
||||||
@@ -400,9 +402,13 @@ export class FileStorage implements IStorage {
|
|||||||
let parentNewStatus = parentTask.status;
|
let parentNewStatus = parentTask.status;
|
||||||
if (subs.length > 0) {
|
if (subs.length > 0) {
|
||||||
const norm = (s: any) => s.status || 'pending';
|
const norm = (s: any) => s.status || 'pending';
|
||||||
const allDone = subs.every((s) => norm(s) === 'done');
|
const isDoneLike = (s: any) => {
|
||||||
|
const st = norm(s);
|
||||||
|
return st === 'done' || st === 'completed';
|
||||||
|
};
|
||||||
|
const allDone = subs.every(isDoneLike);
|
||||||
const anyInProgress = subs.some((s) => norm(s) === 'in-progress');
|
const anyInProgress = subs.some((s) => norm(s) === 'in-progress');
|
||||||
const anyDone = subs.some((s) => norm(s) === 'done');
|
const anyDone = subs.some(isDoneLike);
|
||||||
if (allDone) parentNewStatus = 'done';
|
if (allDone) parentNewStatus = 'done';
|
||||||
else if (anyInProgress || anyDone) parentNewStatus = 'in-progress';
|
else if (anyInProgress || anyDone) parentNewStatus = 'in-progress';
|
||||||
}
|
}
|
||||||
@@ -413,7 +419,7 @@ export class FileStorage implements IStorage {
|
|||||||
...(parentNewStatus !== parentTask.status
|
...(parentNewStatus !== parentTask.status
|
||||||
? { status: parentNewStatus }
|
? { status: parentNewStatus }
|
||||||
: {}),
|
: {}),
|
||||||
updatedAt: new Date().toISOString()
|
updatedAt: now
|
||||||
};
|
};
|
||||||
|
|
||||||
await this.saveTasks(tasks, tag);
|
await this.saveTasks(tasks, tag);
|
||||||
|
|||||||
Reference in New Issue
Block a user