Add option for voice rooms, which for now sets the default selected

option in the creation modal
This commit is contained in:
Tymek
2026-02-14 18:14:39 +01:00
parent 34bccf6bf9
commit 31e4a02d27
4 changed files with 22 additions and 8 deletions

View File

@@ -28,7 +28,8 @@ type CreateRoomModalProps = {
state: CreateRoomModalState; state: CreateRoomModalState;
}; };
function CreateRoomModal({ state }: CreateRoomModalProps) { function CreateRoomModal({ state }: CreateRoomModalProps) {
const { spaceId } = state; const { spaceId, voice } = state;
console.log({ voice });
const closeDialog = useCloseCreateRoomModal(); const closeDialog = useCloseCreateRoomModal();
const allJoinedRooms = useAllJoinedRoomsSet(); const allJoinedRooms = useAllJoinedRoomsSet();
@@ -74,7 +75,7 @@ function CreateRoomModal({ state }: CreateRoomModalProps) {
direction="Column" direction="Column"
gap="500" gap="500"
> >
<CreateRoomForm space={space} onCreate={closeDialog} /> <CreateRoomForm space={space} onCreate={closeDialog} defaultVoice={voice} />
</Box> </Box>
</Scroll> </Scroll>
</Box> </Box>

View File

@@ -36,6 +36,7 @@ import { useMediaAuthentication } from '../../hooks/useMediaAuthentication';
import { useOpenCreateRoomModal } from '../../state/hooks/createRoomModal'; import { useOpenCreateRoomModal } from '../../state/hooks/createRoomModal';
import { useOpenCreateSpaceModal } from '../../state/hooks/createSpaceModal'; import { useOpenCreateSpaceModal } from '../../state/hooks/createSpaceModal';
import { AddExistingModal } from '../add-existing'; import { AddExistingModal } from '../add-existing';
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
function SpaceProfileLoading() { function SpaceProfileLoading() {
return ( return (
@@ -249,8 +250,8 @@ function AddRoomButton({ item }: { item: HierarchyItem }) {
setCords(evt.currentTarget.getBoundingClientRect()); setCords(evt.currentTarget.getBoundingClientRect());
}; };
const handleCreateRoom = () => { const handleCreateRoom = (voice?: CreateRoomVoice) => {
openCreateRoomModal(item.roomId); openCreateRoomModal(item.roomId, voice);
setCords(undefined); setCords(undefined);
}; };
@@ -281,10 +282,19 @@ function AddRoomButton({ item }: { item: HierarchyItem }) {
radii="300" radii="300"
variant="Primary" variant="Primary"
fill="None" fill="None"
onClick={handleCreateRoom} onClick={() => handleCreateRoom(CreateRoomVoice.TextRoom)}
> >
<Text size="T300">New Room</Text> <Text size="T300">New Room</Text>
</MenuItem> </MenuItem>
<MenuItem
size="300"
radii="300"
variant="Primary"
fill="None"
onClick={() => handleCreateRoom(CreateRoomVoice.VoiceRoom)}
>
<Text size="T300">New Voice Room</Text>
</MenuItem>
<MenuItem size="300" radii="300" fill="None" onClick={handleAddExisting}> <MenuItem size="300" radii="300" fill="None" onClick={handleAddExisting}>
<Text size="T300">Existing Room</Text> <Text size="T300">Existing Room</Text>
</MenuItem> </MenuItem>

View File

@@ -1,7 +1,9 @@
import { atom } from 'jotai'; import { atom } from 'jotai';
import { CreateRoomVoice } from '../components/create-room/CreateRoomVoiceSelector';
export type CreateRoomModalState = { export type CreateRoomModalState = {
spaceId?: string; spaceId?: string;
voice?: CreateRoomVoice;
}; };
export const createRoomModalAtom = atom<CreateRoomModalState | undefined>(undefined); export const createRoomModalAtom = atom<CreateRoomModalState | undefined>(undefined);

View File

@@ -1,6 +1,7 @@
import { useCallback } from 'react'; import { useCallback } from 'react';
import { useAtomValue, useSetAtom } from 'jotai'; import { useAtomValue, useSetAtom } from 'jotai';
import { createRoomModalAtom, CreateRoomModalState } from '../createRoomModal'; import { createRoomModalAtom, CreateRoomModalState } from '../createRoomModal';
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
export const useCreateRoomModalState = (): CreateRoomModalState | undefined => { export const useCreateRoomModalState = (): CreateRoomModalState | undefined => {
const data = useAtomValue(createRoomModalAtom); const data = useAtomValue(createRoomModalAtom);
@@ -19,13 +20,13 @@ export const useCloseCreateRoomModal = (): CloseCallback => {
return close; return close;
}; };
type OpenCallback = (space?: string) => void; type OpenCallback = (space?: string, voice?: CreateRoomVoice) => void;
export const useOpenCreateRoomModal = (): OpenCallback => { export const useOpenCreateRoomModal = (): OpenCallback => {
const setSettings = useSetAtom(createRoomModalAtom); const setSettings = useSetAtom(createRoomModalAtom);
const open: OpenCallback = useCallback( const open: OpenCallback = useCallback(
(spaceId) => { (spaceId, voice) => {
setSettings({ spaceId }); setSettings({ spaceId, voice });
}, },
[setSettings] [setSettings]
); );