Fix routine toggle dirty tracking

Remove routine status from the editable detail draft so the active/paused switch remains an immediate save path instead of surfacing unsaved form state.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dotta 2026-03-20 08:02:34 -05:00
parent 5fee484e85
commit fb760a63ab

View file

@ -271,7 +271,6 @@ export function RoutineDetail() {
projectId: "", projectId: "",
assigneeAgentId: "", assigneeAgentId: "",
priority: "medium", priority: "medium",
status: "active",
concurrencyPolicy: "coalesce_if_active", concurrencyPolicy: "coalesce_if_active",
catchUpPolicy: "skip_missed", catchUpPolicy: "skip_missed",
}); });
@ -332,7 +331,6 @@ export function RoutineDetail() {
projectId: routine.projectId, projectId: routine.projectId,
assigneeAgentId: routine.assigneeAgentId, assigneeAgentId: routine.assigneeAgentId,
priority: routine.priority, priority: routine.priority,
status: routine.status,
concurrencyPolicy: routine.concurrencyPolicy, concurrencyPolicy: routine.concurrencyPolicy,
catchUpPolicy: routine.catchUpPolicy, catchUpPolicy: routine.catchUpPolicy,
} }
@ -347,7 +345,6 @@ export function RoutineDetail() {
editDraft.projectId !== routineDefaults.projectId || editDraft.projectId !== routineDefaults.projectId ||
editDraft.assigneeAgentId !== routineDefaults.assigneeAgentId || editDraft.assigneeAgentId !== routineDefaults.assigneeAgentId ||
editDraft.priority !== routineDefaults.priority || editDraft.priority !== routineDefaults.priority ||
editDraft.status !== routineDefaults.status ||
editDraft.concurrencyPolicy !== routineDefaults.concurrencyPolicy || editDraft.concurrencyPolicy !== routineDefaults.concurrencyPolicy ||
editDraft.catchUpPolicy !== routineDefaults.catchUpPolicy editDraft.catchUpPolicy !== routineDefaults.catchUpPolicy
); );
@ -402,10 +399,9 @@ export function RoutineDetail() {
const saveRoutine = useMutation({ const saveRoutine = useMutation({
mutationFn: () => { mutationFn: () => {
const { status: _status, ...payload } = editDraft;
return routinesApi.update(routineId!, { return routinesApi.update(routineId!, {
...payload, ...editDraft,
description: payload.description.trim() || null, description: editDraft.description.trim() || null,
}); });
}, },
onSuccess: async () => { onSuccess: async () => {
@ -449,7 +445,8 @@ export function RoutineDetail() {
mutationFn: (status: string) => routinesApi.update(routineId!, { status }), mutationFn: (status: string) => routinesApi.update(routineId!, { status }),
onSuccess: async (_data, status) => { onSuccess: async (_data, status) => {
pushToast({ pushToast({
title: status === "paused" ? "Automation paused" : "Automation enabled", title: "Routine saved",
body: status === "paused" ? "Automation paused." : "Automation enabled.",
tone: "success", tone: "success",
}); });
await Promise.all([ await Promise.all([