chore: apply coderabbit requested changes

This commit is contained in:
Ralph Khreish
2025-09-26 00:53:52 +02:00
parent a0815ba50e
commit 9b44d6a680

View File

@@ -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);