import type { BlockReadProps, BlockRenderContext, BlockSpec, } from "@agent-native/core/blocks"; import { inlineDatabaseBlockConfig } from "@shared/inline-database-block"; import type { InlineDatabaseData } from "@shared/inline-database-block"; import { IconDatabase } from "@tabler/icons-react"; import { lazy, Suspense } from "react"; import { useDocument } from "@/hooks/use-documents"; const InlineDatabaseView = lazy(async () => { const module = await import("@/components/editor/database/DatabaseView"); return { default: module.DatabaseView }; }); type ContentBlockRenderContext = BlockRenderContext & { documentId?: string | null; canEdit?: boolean; }; export function InlineDatabaseRead({ data, ctx, }: BlockReadProps) { const documentQuery = useDocument(data.databaseDocumentId || null); const document = documentQuery.data; if (!data.databaseId || !data.databaseDocumentId) { return ; } if ( documentQuery.isError || (document && (!document.database || document.database.id !== data.databaseId)) ) { return ; } const contentCtx = ctx as ContentBlockRenderContext; const hostDocumentId = contentCtx.documentId ?? data.databaseDocumentId; return ( ); } function InlineDatabaseUnavailable() { return (
Database unavailable
); } export const inlineDatabaseBlock: BlockSpec = { ...inlineDatabaseBlockConfig, Read: InlineDatabaseRead, editSurface: "none", icon: IconDatabase, };