From 7df435d18dfc3a820a3397379b249a54897ef840 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Fri, 13 Mar 2026 23:08:13 +0100 Subject: [PATCH] Refactor AI prompt handling in App.tsx --- src/App.tsx | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b2ea14b..5e5ca77 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -830,24 +830,43 @@ export default function App() { conversionJob?.controller.abort(); }, [conversionJob]); - const handleUpdateAiPrompt = useCallback((key: AiPromptKey, value: string) => { - setAiPrompts((current) => ({ - ...current, - [key]: value - })); + const handleUpdateAiPromptTemplate = useCallback(( + templateId: string, + field: "title" | "prompt", + value: string + ) => { + setAiPromptTemplates((current) => + current.map((template) => + template.id === templateId + ? { + ...template, + [field]: value + } + : template + ) + ); }, []); - const handleAddStylePreset = useCallback(() => { - const normalized = newStylePreset.trim(); - if (!normalized) return; - setChangeStylePresets((current) => { - if (current.some((preset) => preset.toLowerCase() === normalized.toLowerCase())) { - return current; - } - return [...current, normalized]; + const handleAddAiPromptTemplate = useCallback(() => { + const template: AiPromptTemplate = { + id: crypto.randomUUID(), + title: "New Prompt", + prompt: "" + }; + setAiPromptTemplates((current) => [...current, template]); + setExpandedPromptId(template.id); + }, []); + + const handleDeleteAiPromptTemplate = useCallback((templateId: string) => { + setAiPromptTemplates((current) => { + const next = current.filter((template) => template.id !== templateId); + setExpandedPromptId((expandedId) => { + if (expandedId !== templateId) return expandedId; + return next[0]?.id ?? null; + }); + return next; }); - setNewStylePreset(""); - }, [newStylePreset]); + }, []); const statusKey = useMemo(() => { if (isViewingHistory) return "history";