diff --git a/libs/components/affine-board/src/Board.tsx b/libs/components/affine-board/src/Board.tsx index d6cb1240bd..5150feb919 100644 --- a/libs/components/affine-board/src/Board.tsx +++ b/libs/components/affine-board/src/Board.tsx @@ -64,9 +64,6 @@ const AffineBoard = ({ workspace, rootBlockId }: AffineBoardProps) => { set_app(app); }, async onChangePage(app, shapes, bindings, assets) { - console.log('shapes, bindings: ', shapes, bindings); - // - await Promise.all( Object.entries(shapes).map(async ([id, shape]) => { if (shape === undefined) { @@ -110,7 +107,7 @@ const AffineBoard = ({ workspace, rootBlockId }: AffineBoardProps) => { bindings[bilingKey].toId = block.id; } }); - return services.api.editorBlock.update({ + return await services.api.editorBlock.update({ workspace: shape.workspace, id: block.id, properties: { @@ -122,19 +119,27 @@ const AffineBoard = ({ workspace, rootBlockId }: AffineBoardProps) => { } }) ); - // let pageBindings = services.api.editorBlock.get({workspace: workspace,ids:[rootBlockId]})?[0] - let block = ( + let pageBindingsString = ( await services.api.editorBlock.get({ workspace: workspace, ids: [rootBlockId], }) - )?.[0]; + )?.[0].properties.bindings.value; + let pageBindings = JSON.parse(pageBindingsString ?? '{}'); + Object.keys(bindings).forEach(bindingsKey => { + if (bindings[bindingsKey] === undefined) { + delete pageBindings[bindingsKey]; + } else { + Object.assign(pageBindings, bindings); + } + }); + console.log(pageBindings); services.api.editorBlock.update({ workspace: workspace, - id: block.id, + id: rootBlockId, properties: { bindings: { - value: JSON.stringify(bindings), + value: JSON.stringify(pageBindings), }, }, }); diff --git a/libs/components/affine-board/src/hooks/use-shapes.ts b/libs/components/affine-board/src/hooks/use-shapes.ts index c7f22744ed..5167ed5ccb 100644 --- a/libs/components/affine-board/src/hooks/use-shapes.ts +++ b/libs/components/affine-board/src/hooks/use-shapes.ts @@ -115,19 +115,3 @@ export const useShapes = (workspace: string, rootBlockId: string) => { bindings: JSON.parse(blocks?.bindings ?? '{}'), }; }; - -export const useBindings = (workspace: string, rootBlockId: string) => { - const [bindings, setBindings] = useState(); - useEffect(() => { - services.api.editorBlock - .get({ - workspace: workspace, - ids: [rootBlockId], - }) - .then(blcoks => { - setBindings(blcoks[0].properties.bindings?.value); - }); - return () => {}; - }, [workspace, rootBlockId]); - return bindings ? JSON.parse(bindings) : {}; -};