Add error handling, enhance syncing, and refactor deletion logic

- Introduce new error messages for syncing and book deletion in `en.json`.
- Update `DeleteBook` to support local-only deletion and synced book management.
- Refine offline/online behavior with `deleteLocalToo` checkbox and update related state handling.
- Extend repository and IPC methods to handle optional IDs for updates.
- Add `SyncQueueContext` for queueing offline changes and improving synchronization workflows.
- Enhance refined text generation logic in `DraftCompanion` and `GhostWriter` components.
- Replace PUT with PATCH for world updates to align with API expectations.
- Streamline `AlertBox` by integrating dynamic translation keys for deletion prompts.
This commit is contained in:
natreex
2026-01-10 15:50:03 -05:00
parent 060693f152
commit 7f34421212
26 changed files with 506 additions and 100 deletions

View File

@@ -147,7 +147,7 @@ export default function ShortStoryGenerator({onClose}: ShortStoryGeneratorProps)
infoMessage(t("shortStoryGenerator.result.abortSuccess"));
}
}
async function handleGeneration(): Promise<void> {
setIsGenerating(true);
setGeneratedText('');
@@ -213,17 +213,14 @@ export default function ShortStoryGenerator({onClose}: ShortStoryGeneratorProps)
totalPrice?: number;
totalCost?: number;
} = JSON.parse(line.slice(6));
if (data.content && data.content !== 'starting') {
accumulatedText += data.content;
setGeneratedText(accumulatedText);
}
if (data.title) {
setGeneratedStoryTitle(data.title);
}
if (data.useYourKey !== undefined && data.totalPrice !== undefined) {
if (data.title && data.useYourKey !== undefined && data.totalPrice !== undefined) {
setGeneratedStoryTitle(data.title);
if (data.useYourKey) {
setTotalPrice((prev: number): number => prev + data.totalPrice!);
} else {
@@ -231,16 +228,15 @@ export default function ShortStoryGenerator({onClose}: ShortStoryGeneratorProps)
}
}
} catch (e: unknown) {
console.error('Error parsing SSE data:', e);
errorMessage(t("shortStoryGenerator.result.parsingError"));
}
}
}
} catch (e: unknown) {
// Si le reader est annulé ou une erreur survient, sortir
break;
}
}
setIsGenerating(false);
setHasGenerated(true);
setAbortController(null);