import { useCallback, useEffect, useMemo, useSyncExternalStore } from 'react' import { useMailbox } from '../context/mailbox.js' type Props = { isLoading: boolean onSubmitMessage: (content: string) => boolean } export function useMailboxBridge({ isLoading, onSubmitMessage }: Props): void { const mailbox = useMailbox() const subscribe = useMemo(() => mailbox.subscribe.bind(mailbox), [mailbox]) const getSnapshot = useCallback(() => mailbox.revision, [mailbox]) const revision = useSyncExternalStore(subscribe, getSnapshot) useEffect(() => { if (isLoading) return const msg = mailbox.poll() if (msg) onSubmitMessage(msg.content) }, [isLoading, revision, mailbox, onSubmitMessage]) }