import { useCallback, useMemo } from 'react'; import { createBlocksTyped } from '@/lib/blocks/create-blocks-typed/create-blocks-typed'; import { WarningFilledSvg } from '@ballerine/ui'; import { systemCreatedIconCell } from '@/lib/blocks/utils/constants'; export const useKybRegistryInfoBlock = ({ pluginsOutput, workflow }) => { const getCell = useCallback(() => { if (Object.keys(pluginsOutput?.businessInformation?.data?.[0] ?? {}).length) { return { id: 'nested-details', type: 'details', hideSeparator: true, value: { data: Object.entries(pluginsOutput?.businessInformation?.data?.[0])?.map( ([title, value]) => ({ title, value, }), ), }, workflowId: workflow?.id, documents: workflow?.context?.documents?.map( ({ details: _details, ...document }) => document, ), isDocumentsV2: !!workflow?.workflowDefinition?.config?.isDocumentsV2, }; } const message = pluginsOutput?.businessInformation?.message ?? pluginsOutput?.businessInformation?.data?.message; if (message) { return { type: 'paragraph', value: ( :not(:first-child)]:stroke-background'} width={'20'} height={'20'} /> {message} ), } satisfies Extract< Parameters['addCell']>[0], { type: 'paragraph'; } >; } if (pluginsOutput?.businessInformation?.isRequestTimedOut) { return { type: 'paragraph', value: ( :not(:first-child)]:stroke-background'} width={'20'} height={'20'} /> The request timed out either because the company was not found in the registry, or the information is currently unavailable. ), } satisfies Extract< Parameters['addCell']>[0], { type: 'paragraph'; } >; } }, [pluginsOutput, workflow]); return useMemo(() => { const cell = getCell(); if (!cell) { return []; } return createBlocksTyped() .addBlock() .addCell({ type: 'block', value: createBlocksTyped() .addBlock() .addCell({ type: 'container', value: createBlocksTyped() .addBlock() .addCell(systemCreatedIconCell) .addCell({ type: 'container', value: createBlocksTyped() .addBlock() .addCell({ id: 'nested-details-heading', type: 'heading', value: 'Registry Information', props: { className: 'mt-0' }, }) .addCell({ id: 'nested-details-subheading', type: 'subheading', value: 'Registry-Provided Data', }) .buildFlat(), }) .buildFlat(), props: { className: 'flex space-x-1 items-center mt-4', }, }) .addCell(cell) .buildFlat(), }) .build(); }, [getCell]); };