@towns-protocol/react-sdk
Version:
React Hooks for Towns Protocol SDK
23 lines (20 loc) • 817 B
text/typescript
'use client'
import type { Observable, SyncAgent } from '@towns-protocol/sdk'
import { type ObservableConfig, useObservable } from './useObservable'
import { useSyncAgent } from './useSyncAgent'
type SyncSelector = SyncAgent['observables']
/**
* Hook to get an observable from the sync agent.
*
* An alternative of our premade hooks, allowing the creation of custom abstractions.
* @param selector - A selector function to get a observable from the sync agent.
* @param config - Configuration options for the observable.
* @returns The data from the selected observable.
*/
export function useTowns<T>(
selector: (sync: SyncSelector) => Observable<T>,
config?: ObservableConfig.FromData<T>,
) {
const syncAgent = useSyncAgent()
return useObservable(selector(syncAgent.observables), config)
}