Files
kandev/apps/web/components/settings/workflow-dirty-state.ts
T
2026-09-10 15:01:37 +01:00

29 lines
932 B
TypeScript

import type { Workflow, WorkflowStep } from "@/lib/types/http";
import { areStepDraftsEqual } from "./workflow-step-equality";
function valuesEqual(left: unknown, right: unknown): boolean {
if (Object.is(left, right)) return true;
return JSON.stringify(left) === JSON.stringify(right);
}
export function isWorkflowFieldDirty(
draft: Workflow,
saved: Workflow | undefined,
field: "name" | "description" | "prompt" | "agent_profile_id",
): boolean {
if (!saved) return true;
return !valuesEqual(draft[field] ?? "", saved[field] ?? "");
}
export function isWorkflowStepDirty(draft: WorkflowStep, saved: WorkflowStep | undefined): boolean {
return !saved || !areStepDraftsEqual(draft, saved);
}
export function isWorkflowStepValueDirty(
draft: WorkflowStep,
saved: WorkflowStep | undefined,
select: (step: WorkflowStep) => unknown,
): boolean {
return !saved || !valuesEqual(select(draft), select(saved));
}