diff --git a/src/App.tsx b/src/App.tsx index 09cf517..b2ea14b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -359,6 +359,10 @@ Return only the translated document.`; ]; } +function getAiPromptTemplateLabel(template: AiPromptTemplate) { + return template.title.trim() || "Untitled Prompt"; +} + const graphemeSegmenter = typeof Intl !== "undefined" && "Segmenter" in Intl ? new Intl.Segmenter(undefined, { granularity: "grapheme" }) @@ -483,15 +487,12 @@ export default function App() { const [ollamaModel, setOllamaModel] = useState(() => { return localStorage.getItem("textdb.ollamaModel") || ""; }); - const [aiPrompts, setAiPrompts] = useState(() => loadAiPrompts()); - const [expandedPromptKey, setExpandedPromptKey] = useState( - "markdownConversion" + const [aiPromptTemplates, setAiPromptTemplates] = useState( + () => loadAiPromptTemplates() + ); + const [expandedPromptId, setExpandedPromptId] = useState( + () => loadAiPromptTemplates()[0]?.id ?? null ); - const [translateLanguage, setTranslateLanguage] = useState(() => { - return localStorage.getItem(TRANSLATE_LANGUAGE_STORAGE_KEY) || DEFAULT_TRANSLATE_LANGUAGE; - }); - const [changeStylePresets, setChangeStylePresets] = useState(() => loadChangeStylePresets()); - const [newStylePreset, setNewStylePreset] = useState(""); const [ollamaModels, setOllamaModels] = useState([]); const [ollamaLoading, setOllamaLoading] = useState(false); const [ollamaError, setOllamaError] = useState(null); @@ -554,20 +555,12 @@ export default function App() { localStorage.setItem("textdb.ollamaModel", ollamaModel); }, [ollamaModel]); - useEffect(() => { - localStorage.setItem(AI_PROMPTS_STORAGE_KEY, JSON.stringify(aiPrompts)); - }, [aiPrompts]); - - useEffect(() => { - localStorage.setItem(TRANSLATE_LANGUAGE_STORAGE_KEY, translateLanguage); - }, [translateLanguage]); - useEffect(() => { localStorage.setItem( - CHANGE_STYLE_PRESETS_STORAGE_KEY, - JSON.stringify(changeStylePresets) + AI_PROMPT_TEMPLATES_STORAGE_KEY, + JSON.stringify(aiPromptTemplates) ); - }, [changeStylePresets]); + }, [aiPromptTemplates]); useEffect(() => { localStorage.setItem(