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,
DialogTitle,
} from "../ui/dialog";
import { useReducer } from "react";
import { useReducer, useEffect } from "react";
import Step1NameAndType, {
Step1FormData,
} from "@/components/trigger/wizard/Step1NameAndType";
@ -117,6 +117,19 @@ export default function TriggerWizardDialog({
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) => {
dispatch({ type: "SET_STEP_1", payload: data });
};
@ -146,7 +159,7 @@ export default function TriggerWizardDialog({
combinedData.friendly_name || "",
);
}
handleClose();
// Remove handleClose() - let the parent component handle closing after save completes
};
const handleBack = () => {
@ -162,7 +175,7 @@ export default function TriggerWizardDialog({
<Dialog
open={open}
onOpenChange={(open) => {
if (!open) {
if (!open && !isLoading) {
handleClose();
}
}}

View File

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