import type * as AtomIO from "atom.io" import type { Canonical } from "atom.io/foundations/canonical" import type { Transceiver } from "atom.io/internal" 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 usePullMutableAtomFamilyMember< T extends Transceiver, K extends Canonical, >(familyToken: AtomIO.MutableAtomFamilyToken, key: NoInfer): T { const store = React.useContext(StoreContext) const token = findInStore(store, familyToken, key) useRealtimeService(`pull:${token.key}`, (socket) => { return RTC.pullMutableAtomFamilyMember(store, socket, familyToken, key) }) return useO(token) }