Download src/hooks/useMailboxBridge.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 716 Bytes
-
https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/hooks/useMailboxBridge.ts
- Command line
-
hf download hf://chenbhao/codev@afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/hooks/useMailboxBridge.ts
-
curl -L -o useMailboxBridge.ts https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/hooks/useMailboxBridge.ts
716 Bytes
| 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]) | |
| } | |