ai-chatbot/lib/canvas/canvas-save-request.ts

41 lines
1.3 KiB
TypeScript

import type { CanvasState, CanvasWorkspaceType } from "@/types/canvas";
export type CanvasSaveRevisionOptions = {
baseCanvasRevision?: string | null;
baseCanvasUpdatedAt?: string | null;
};
function normalizeRevisionValue(value: unknown) {
return String(value || "").trim() || undefined;
}
export function mergeCanvasSaveRevisionOptions(params: {
options?: CanvasSaveRevisionOptions;
fallbackOptions?: CanvasSaveRevisionOptions;
}): CanvasSaveRevisionOptions {
return {
baseCanvasRevision:
normalizeRevisionValue(params.options?.baseCanvasRevision) ??
normalizeRevisionValue(params.fallbackOptions?.baseCanvasRevision),
baseCanvasUpdatedAt:
normalizeRevisionValue(params.options?.baseCanvasUpdatedAt) ??
normalizeRevisionValue(params.fallbackOptions?.baseCanvasUpdatedAt),
};
}
export function buildCanvasSaveRequestBody(params: {
canvasData: CanvasState;
workspaceType?: CanvasWorkspaceType;
options?: CanvasSaveRevisionOptions;
fallbackOptions?: CanvasSaveRevisionOptions;
}) {
const revisionOptions = mergeCanvasSaveRevisionOptions({
options: params.options,
fallbackOptions: params.fallbackOptions,
});
return params.workspaceType
? { canvasData: params.canvasData, workspaceType: params.workspaceType, ...revisionOptions }
: { canvasData: params.canvasData, ...revisionOptions };
}