import type * as AtomIO from "atom.io" import type { Canonical } from "atom.io/foundations/canonical" import { findInStore } from "atom.io/internal" import { StoreContext, useO } from "atom.io/react" import * as RTC from "atom.io/realtime-client" import * as React from "react" import { useRealtimeService } from "./use-realtime-service.ts" export function usePullSelectorFamilyMember( familyToken: AtomIO.SelectorFamilyToken, key: NoInfer, ): AtomIO.ViewOf { const store = React.useContext(StoreContext) const token = findInStore(store, familyToken, key) useRealtimeService(`pull:${token.key}`, (socket) => RTC.pullSelectorFamilyMember(store, socket, familyToken, key), ) return useO(token) }