source dump of claude code
at main 21 lines 716 B view raw
1import { useCallback, useEffect, useMemo, useSyncExternalStore } from 'react' 2import { useMailbox } from '../context/mailbox.js' 3 4type Props = { 5 isLoading: boolean 6 onSubmitMessage: (content: string) => boolean 7} 8 9export function useMailboxBridge({ isLoading, onSubmitMessage }: Props): void { 10 const mailbox = useMailbox() 11 12 const subscribe = useMemo(() => mailbox.subscribe.bind(mailbox), [mailbox]) 13 const getSnapshot = useCallback(() => mailbox.revision, [mailbox]) 14 const revision = useSyncExternalStore(subscribe, getSnapshot) 15 16 useEffect(() => { 17 if (isLoading) return 18 const msg = mailbox.poll() 19 if (msg) onSubmitMessage(msg.content) 20 }, [isLoading, revision, mailbox, onSubmitMessage]) 21}