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

30 lines
906 B
TypeScript

export const STALE_CANVAS_REVISION_CODE = "STALE_CANVAS_REVISION";
export function parseCanvasRevisionDate(value: unknown) {
const raw = String(value || "").trim();
if (!raw) return null;
const parsed = new Date(raw);
return Number.isNaN(parsed.getTime()) ? null : parsed;
}
export function isStaleCanvasSaveBaseRevision(params: {
baseCanvasRevision?: unknown;
baseCanvasUpdatedAt?: unknown;
currentUpdatedAt: Date;
}) {
const baseDate = parseCanvasRevisionDate(
params.baseCanvasUpdatedAt || params.baseCanvasRevision
);
if (!baseDate) return false;
return baseDate.getTime() < params.currentUpdatedAt.getTime();
}
export function buildStaleCanvasSaveConflictPayload(currentUpdatedAt: Date) {
return {
success: false,
error: "画布已更新,请刷新后再保存",
code: STALE_CANVAS_REVISION_CODE,
canvasUpdatedAt: currentUpdatedAt.toISOString(),
};
}