Skip to content
Clone
69f12aa
42 lines 1.0 KB
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;
}