From 4128c82f5faf2c25e390fab10979c1d95a85f0b8 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Apr 2026 19:58:14 +0200 Subject: [PATCH] Add project dialogue management functions in App.tsx --- src/app/App.tsx | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/app/App.tsx b/src/app/App.tsx index 8042f15d..3f9dcce7 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -4065,6 +4065,68 @@ export function App({ store, initialStatusMessage }: AppProps) { } }; + const handleAddProjectDialogue = () => { + const nextDialogue = createProjectDialogue(); + + updateProjectDialogues( + "Add project dialogue", + "Added project dialogue.", + (dialogues) => { + dialogues.dialogues[nextDialogue.id] = nextDialogue; + } + ); + setSelectedDialogueId(nextDialogue.id); + }; + + const handleDeleteProjectDialogue = (dialogueId: string) => { + updateProjectDialogues( + "Delete project dialogue", + "Deleted project dialogue.", + (dialogues) => { + delete dialogues.dialogues[dialogueId]; + } + ); + + if (selectedDialogueId === dialogueId) { + setSelectedDialogueId(null); + } + }; + + const updateProjectDialogue = ( + dialogueId: string, + label: string, + successMessage: string, + mutate: (dialogue: ProjectDialogue) => void + ) => { + updateProjectDialogues(label, successMessage, (dialogues) => { + const dialogue = dialogues.dialogues[dialogueId]; + + if (dialogue === undefined) { + throw new Error("Selected dialogue no longer exists."); + } + + mutate(dialogue); + }); + }; + + const updateProjectDialogueLine = ( + dialogueId: string, + lineId: string, + label: string, + successMessage: string, + mutate: (line: ProjectDialogueLine) => void + ) => { + updateProjectDialogue(dialogueId, label, successMessage, (dialogue) => { + const line = dialogue.lines.find((candidate) => candidate.id === lineId); + + if (line === undefined) { + throw new Error("Selected dialogue line no longer exists."); + } + + mutate(line); + }); + }; + const updateWorldTimeOfDaySettings = ( label: string, successMessage: string,