chore: Implement `useWriteStream` ServerContext (#36715)
Co-authored-by: Pierre Lehnen <55164754+pierre-lehnen-rc@users.noreply.github.com>pull/36755/head^2
parent
34db122451
commit
6e009b1fbf
@ -0,0 +1,19 @@ |
||||
import type { StreamNames, StreamKeys, StreamerCallbackArgs } from '@rocket.chat/ddp-client'; |
||||
import { useCallback, useContext } from 'react'; |
||||
|
||||
import { ServerContext } from '../ServerContext'; |
||||
|
||||
type WriteStreamCallback<N extends StreamNames> = <K extends StreamKeys<N>>(eventName: K, ...args: StreamerCallbackArgs<N, K>) => void; |
||||
|
||||
export function useWriteStream<N extends StreamNames>(streamName: N): WriteStreamCallback<N> { |
||||
const { writeStream } = useContext(ServerContext); |
||||
|
||||
if (!writeStream) { |
||||
throw new Error(`cannot use useWriteStream(${streamName}) hook without a wrapping ServerContext`); |
||||
} |
||||
|
||||
return useCallback( |
||||
<K extends StreamKeys<N>>(eventName: K, ...args: StreamerCallbackArgs<N, K>) => writeStream(streamName, eventName, ...args), |
||||
[writeStream, streamName], |
||||
); |
||||
} |
||||
Loading…
Reference in new issue