Implement local-first canvas sync and fix drag edge stability

This commit is contained in:
Matthias
2026-04-01 09:40:31 +02:00
parent c1d7a49bc3
commit 32bd188d89
19 changed files with 1095 additions and 283 deletions

View File

@@ -16,6 +16,7 @@ import { getNodeDeleteBlockReason, isOptimisticEdgeId } from "./canvas-helpers";
type UseCanvasDeleteHandlersParams = {
canvasId: Id<"canvases">;
isOffline: boolean;
nodes: RFNode[];
edges: RFEdge[];
deletingNodeIds: MutableRefObject<Set<string>>;
@@ -33,6 +34,7 @@ type UseCanvasDeleteHandlersParams = {
export function useCanvasDeleteHandlers({
canvasId,
isOffline,
nodes,
edges,
deletingNodeIds,
@@ -53,6 +55,14 @@ export function useCanvasDeleteHandlers({
nodes: RFNode[];
edges: RFEdge[];
}) => {
if (isOffline && (matchingNodes.length > 0 || matchingEdges.length > 0)) {
toast.warning(
"Offline aktuell nicht unterstützt",
"Löschen ist in Stufe 1 nur online verfügbar.",
);
return false;
}
if (matchingNodes.length === 0) {
return true;
}
@@ -90,7 +100,7 @@ export function useCanvasDeleteHandlers({
return true;
},
[],
[isOffline],
);
const onNodesDelete = useCallback(