projects/deliberation_at_scale/packages/frontend/components/RoomConnection/provider.tsx (18 lines of code) (raw):
'use client';
import { PropsWithChildren, useMemo } from 'react';
import { RoomConnectionContext } from './context';
import { useRoomConnection } from '@whereby.com/browser-sdk';
import { useLocalMedia } from '@/hooks/useLocalMedia';
import { useExternalRoomId } from '@/hooks/useRoom';
import { ENABLE_WHEREBY } from '@/utilities/constants';
/**
* This provider will instantiate the Whereby `useLocalMedia` hook and make its
* output available via the RoomConnection context.
*/
export default function RoomConnectionProvider({ children }: PropsWithChildren) {
const externalRoomId = useExternalRoomId();
// Construct the room URL
const roomUrl = useMemo(() => {
//return `https://${NEXT_PUBLIC_WHEREBY_SUBDOMAIN}/${externalRoomId}`;
return externalRoomId ?? '';
}, [externalRoomId]);
// Retrieve the local media data, which should already be initialized.
const localMedia = useLocalMedia();
// Then, start the room connection
const connection = useRoomConnection(roomUrl, { localMedia, localMediaConstraints: { audio: true, video: true }, logger: console });
return (
<RoomConnectionContext.Provider value={ENABLE_WHEREBY ? connection : null}>
{children}
</RoomConnectionContext.Provider>
);
}