import { Observable } from "rxjs"; import { useState, useEffect } from "react"; export function useObservable(factory: () => Observable, initValue?: T, deps?: unknown[]): T { const [obsValue, setObsValue] = useState(initValue); useEffect(() => { const sub = factory().subscribe(val => setObsValue(val)); return () => sub.unsubscribe(); }, deps ?? []); return obsValue; }