ensure wizard resets when reopening

This commit is contained in:
Josh Hawkins 2025-10-27 12:52:19 -05:00
parent 042ae73b81
commit b4bf669306
2 changed files with 25 additions and 6 deletions

View File

@ -7,7 +7,7 @@ import {
DialogHeader, DialogHeader,
DialogTitle, DialogTitle,
} from "../ui/dialog"; } from "../ui/dialog";
import { useReducer } from "react"; import { useReducer, useEffect } from "react";
import Step1NameAndType, { import Step1NameAndType, {
Step1FormData, Step1FormData,
} from "@/components/trigger/wizard/Step1NameAndType"; } from "@/components/trigger/wizard/Step1NameAndType";
@ -117,6 +117,19 @@ export default function TriggerWizardDialog({
const [wizardState, dispatch] = useReducer(wizardReducer, initialState); const [wizardState, dispatch] = useReducer(wizardReducer, initialState);
useEffect(() => {
if (!open) {
dispatch({ type: "RESET" });
}
}, [open]);
// Reset wizard state when opening for a different trigger or when creating new
useEffect(() => {
if (open) {
dispatch({ type: "RESET" });
}
}, [open, trigger]);
const handleStep1Next = (data: Step1FormData) => { const handleStep1Next = (data: Step1FormData) => {
dispatch({ type: "SET_STEP_1", payload: data }); dispatch({ type: "SET_STEP_1", payload: data });
}; };
@ -146,7 +159,7 @@ export default function TriggerWizardDialog({
combinedData.friendly_name || "", combinedData.friendly_name || "",
); );
} }
handleClose(); // Remove handleClose() - let the parent component handle closing after save completes
}; };
const handleBack = () => { const handleBack = () => {
@ -162,7 +175,7 @@ export default function TriggerWizardDialog({
<Dialog <Dialog
open={open} open={open}
onOpenChange={(open) => { onOpenChange={(open) => {
if (!open) { if (!open && !isLoading) {
handleClose(); handleClose();
} }
}} }}

View File

@ -229,6 +229,7 @@ export default function TriggerView({
.finally(() => { .finally(() => {
setIsLoading(false); setIsLoading(false);
setShowCreate(false); setShowCreate(false);
setSelectedTrigger(null);
}); });
}, },
[t, updateConfig, selectedCamera, setUnsavedChanges], [t, updateConfig, selectedCamera, setUnsavedChanges],
@ -314,7 +315,6 @@ export default function TriggerView({
// Regular update without rename // Regular update without rename
saveToConfig(trigger, true); saveToConfig(trigger, true);
} }
setSelectedTrigger(null);
}, },
[t, saveToConfig, selectedCamera, selectedTrigger, setUnsavedChanges], [t, saveToConfig, selectedCamera, selectedTrigger, setUnsavedChanges],
); );
@ -597,7 +597,7 @@ export default function TriggerView({
<Button <Button
size="sm" size="sm"
variant="outline" variant="outline"
className="h-8 w-8 p-0" className="h-8 px-2"
onClick={() => { onClick={() => {
setSelectedTrigger(trigger); setSelectedTrigger(trigger);
setShowCreate(true); setShowCreate(true);
@ -605,6 +605,9 @@ export default function TriggerView({
disabled={isLoading} disabled={isLoading}
> >
<LuPencil className="size-3.5" /> <LuPencil className="size-3.5" />
<span className="ml-1.5 hidden sm:inline-block">
{t("triggers.table.edit")}
</span>
</Button> </Button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>
@ -616,7 +619,7 @@ export default function TriggerView({
<Button <Button
size="sm" size="sm"
variant="destructive" variant="destructive"
className="h-8 w-8 p-0 text-white" className="h-8 px-2"
onClick={() => { onClick={() => {
setSelectedTrigger(trigger); setSelectedTrigger(trigger);
setShowDelete(true); setShowDelete(true);
@ -624,6 +627,9 @@ export default function TriggerView({
disabled={isLoading} disabled={isLoading}
> >
<LuTrash className="size-3.5" /> <LuTrash className="size-3.5" />
<span className="ml-1.5 hidden sm:inline-block">
{t("triggers.table.deleteTrigger")}
</span>
</Button> </Button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>