import { useEffect, useRef } from 'react' import { Observable, Subject } from 'rxjs' export function useSubject() { const subjectRef = useRef>() if (!subjectRef.current) { subjectRef.current = new Subject() } useEffect(() => { return () => { subjectRef.current?.complete() subjectRef.current = undefined } }, []) return subjectRef.current! } export function useObservable(observable: Observable, fn: (value: T) => void) { useEffect(() => { const sub = observable.subscribe(fn) return () => sub.unsubscribe() }, [observable]) }