30 lines
996 B
TypeScript
30 lines
996 B
TypeScript
"use client";
|
|
|
|
import { useCallback } from "react";
|
|
import { useCreateFlow } from "../context/CreateFlowContext";
|
|
import type { CustomMethodCardFieldBlock } from "../../../../lib/create/customMethodCardFieldBlocks";
|
|
|
|
/**
|
|
* Stable writer for `customMethodCardFieldBlocksById[id]` used from facet card
|
|
* modals. Uses {@link replaceState} so merges read the latest draft (no stale
|
|
* closure over `customMethodCardFieldBlocksById`).
|
|
*/
|
|
export function useCustomMethodCardFieldBlocksChange(cardId: string | null) {
|
|
const { replaceState, markCreateFlowInteraction } = useCreateFlow();
|
|
|
|
return useCallback(
|
|
(nextBlocks: CustomMethodCardFieldBlock[]) => {
|
|
if (!cardId) return;
|
|
markCreateFlowInteraction();
|
|
replaceState((prev) => ({
|
|
...prev,
|
|
customMethodCardFieldBlocksById: {
|
|
...(prev.customMethodCardFieldBlocksById ?? {}),
|
|
[cardId]: nextBlocks,
|
|
},
|
|
}));
|
|
},
|
|
[cardId, markCreateFlowInteraction, replaceState],
|
|
);
|
|
}
|