voicebot-react-native-expo
Version:
This is a voicebot-react-native package of Kipps AI voice bot for React Native Expo
43 lines (38 loc) • 1.07 kB
text/typescript
import type { Room } from 'livekit-client';
import * as React from 'react';
/** @public */
export const RoomContext = React.createContext<Room | undefined>(undefined);
/**
* Ensures that a room is provided via context.
* If no room is provided, an error is thrown.
* @public
*/
export function useRoomContext() {
const ctx = React.useContext(RoomContext);
if (!ctx) {
throw Error('tried to access room context outside of livekit room component');
}
return ctx;
}
/**
* Returns the room context if it exists, otherwise undefined.
* @public
*/
export function useMaybeRoomContext() {
return React.useContext(RoomContext);
}
/**
* Ensures that a room is provided, either via context or explicitly as a parameter.
* If no room is provided, an error is thrown.
* @public
*/
export function useEnsureRoom(room?: Room) {
const context = useMaybeRoomContext();
const r = room ?? context;
if (!r) {
throw new Error(
'No room provided, make sure you are inside a Room context or pass the room explicitly',
);
}
return r;
}