feat: modularize block system (#718)

This commit is contained in:
Jeremy 2025-01-27 14:19:47 +05:30 committed by GitHub
parent 5e8cddc886
commit 38527ff92e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 684 additions and 604 deletions

View file

@ -1,8 +1,8 @@
'use client';
import useSWR from 'swr';
import { UIBlock } from '@/components/block';
import { useCallback, useMemo } from 'react';
import useSWR from 'swr';
export const initialBlockData: UIBlock = {
documentId: 'init',
@ -19,7 +19,6 @@ export const initialBlockData: UIBlock = {
},
};
// Add type for selector function
type Selector<T> = (state: UIBlock) => T;
export function useBlockSelector<Selected>(selector: Selector<Selected>) {
@ -64,5 +63,22 @@ export function useBlock() {
[setLocalBlock],
);
return useMemo(() => ({ block, setBlock }), [block, setBlock]);
const { data: localBlockMetadata, mutate: setLocalBlockMetadata } =
useSWR<any>(
() => (block.documentId ? `block-metadata-${block.documentId}` : null),
null,
{
fallbackData: null,
},
);
return useMemo(
() => ({
block,
setBlock,
metadata: localBlockMetadata,
setMetadata: setLocalBlockMetadata,
}),
[block, setBlock, localBlockMetadata, setLocalBlockMetadata],
);
}