import { useState } from "react"; import { errorMessage } from "../api/client.js"; import { useDuplicateWorkflow, useOwners } from "../api/hooks.js"; import { useNotifications } from "../notifications.jsx"; export function DuplicateWorkflowDialog({ source, warnUnsaved, onClose, onDuplicated }) { const { notify } = useNotifications(); const { data: owners = [] } = useOwners(); const duplicate = useDuplicateWorkflow(); const [destOwner, setDestOwner] = useState(source.owner); function onSubmit(e) { e.preventDefault(); if (destOwner === source.owner && duplicate.isPending) return; duplicate.mutate( { owner: source.owner, file: source.file, destOwner, }, { onSuccess: (data) => { notify.success(`Duplicated to ${data.owner}/${data.file}`); onDuplicated?.(data); }, }, ); } return (

Duplicate {source.key}?

A new UUID filename is assigned automatically. The copy starts disabled. HTTP paths are rewritten when staying under the same owner so triggers do not collide.

{warnUnsaved ? (

The copy uses the last saved YAML, not unsaved edits.

) : null}
{duplicate.isError ? (

{errorMessage(duplicate.error)}

) : null}
); }