UNPKG

voicebot-react-native-expo

Version:

This is a voicebot-react-native package of Kipps AI voice bot for React Native Expo

31 lines (27 loc) 1.21 kB
import * as React from 'react'; import type { TrackReference } from '@livekit/components-core'; import { participantTracksObservable } from '@livekit/components-core'; import { useObservableState } from './internal'; import type { Track } from 'livekit-client'; import { useMaybeParticipantContext, useRoomContext } from '../context'; /** * `useParticipantTracks` is a custom React that allows you to get tracks of a specific participant only, by specifiying the participant's identity. * If the participant identity is not passed the hook will try to get the participant from a participant context. * @public */ export function useParticipantTracks( sources: Track.Source[], participantIdentity?: string, ): TrackReference[] { const room = useRoomContext(); const participantContext = useMaybeParticipantContext(); const p = participantIdentity ? room.getParticipantByIdentity(participantIdentity) : participantContext; const observable = React.useMemo( () => (p ? participantTracksObservable(p, { sources }) : undefined), [p?.sid, p?.identity, JSON.stringify(sources)], ); const trackRefs = useObservableState(observable, [] as TrackReference[]); return trackRefs; }