diff --git a/src/frontend/src/features/home/components/CreateMeetingMenu.tsx b/src/frontend/src/features/home/components/CreateMeetingMenu.tsx new file mode 100644 index 00000000..194f8924 --- /dev/null +++ b/src/frontend/src/features/home/components/CreateMeetingMenu.tsx @@ -0,0 +1,62 @@ +import { useTranslation } from 'react-i18next' +import { MenuItem, Menu as RACMenu } from 'react-aria-components' +import { Button, Menu } from '@/primitives' +import { navigateTo } from '@/navigation/navigateTo' +import { generateRoomId, useCreateRoom } from '@/features/rooms' +import { RiAddLine, RiLink } from '@remixicon/react' +import { LaterMeetingDialog } from '@/features/home/components/LaterMeetingDialog' +import { useState } from 'react' + +import { menuRecipe } from '@/primitives/menuRecipe' +import { ApiRoom } from '@/features/rooms/api/ApiRoom' +import { loadUserChoices } from '@livekit/components-core' + +export const CreateMeetingMenu = () => { + const { username } = loadUserChoices() + + const { t } = useTranslation('home') + const { mutateAsync: createRoom } = useCreateRoom() + const [laterRoom, setLaterRoom] = useState(null) + + return ( + <> + + + + { + const slug = generateRoomId() + createRoom({ slug, username }).then((data) => + navigateTo('room', data.slug, { + state: { create: true, initialRoomData: data }, + }) + ) + }} + data-attr="create-option-instant" + > + + {t('createMenu.instantOption')} + + { + const slug = generateRoomId() + createRoom({ slug, username }).then(setLaterRoom) + }} + data-attr="create-option-later" + > + + {t('createMenu.laterOption')} + + + + setLaterRoom(null)} + /> + + ) +} diff --git a/src/frontend/src/features/home/routes/Home.tsx b/src/frontend/src/features/home/routes/Home.tsx index aad6cfb4..64b1be50 100644 --- a/src/frontend/src/features/home/routes/Home.tsx +++ b/src/frontend/src/features/home/routes/Home.tsx @@ -1,26 +1,20 @@ import { useTranslation } from 'react-i18next' -import { DialogTrigger, MenuItem, Menu as RACMenu } from 'react-aria-components' -import { Button, Menu } from '@/primitives' +import { DialogTrigger } from 'react-aria-components' +import { Button } from '@/primitives' import { styled } from '@/styled-system/jsx' -import { navigateTo } from '@/navigation/navigateTo' import { Screen } from '@/layout/Screen' -import { generateRoomId, useCreateRoom } from '@/features/rooms' import { UserAware } from '@/features/auth/components/UserAware' import { useUser } from '@/features/auth/api/useUser' import { JoinMeetingDialog } from '../components/JoinMeetingDialog' -import { RiAddLine, RiLink } from '@remixicon/react' -import { LaterMeetingDialog } from '@/features/home/components/LaterMeetingDialog' -import { IntroSlider } from '@/features/home/components/IntroSlider' -import { MoreLink } from '@/features/home/components/MoreLink' +import { IntroSlider } from '../components/IntroSlider' +import { MoreLink } from '../components/MoreLink' +import { CreateMeetingMenu } from '../components/CreateMeetingMenu' import { ReactNode, useEffect, useState } from 'react' import { css } from '@/styled-system/css' -import { menuRecipe } from '@/primitives/menuRecipe.ts' import { useConfig } from '@/api/useConfig' import { LoginButton } from '@/components/LoginButton' -import { ApiRoom } from '@/features/rooms/api/ApiRoom' import { LoadingScreen } from '@/components/LoadingScreen' -import { loadUserChoices } from '@livekit/components-core' const Columns = ({ children }: { children?: ReactNode }) => { return ( @@ -147,56 +141,6 @@ const IntroText = styled('div', { }, }) -const CreateMeetingMenu = () => { - const { username } = loadUserChoices() - - const { t } = useTranslation('home') - const { mutateAsync: createRoom } = useCreateRoom() - const [laterRoom, setLaterRoom] = useState(null) - - return ( - <> - - - - { - const slug = generateRoomId() - createRoom({ slug, username }).then((data) => - navigateTo('room', data.slug, { - state: { create: true, initialRoomData: data }, - }) - ) - }} - data-attr="create-option-instant" - > - - {t('createMenu.instantOption')} - - { - const slug = generateRoomId() - createRoom({ slug, username }).then(setLaterRoom) - }} - data-attr="create-option-later" - > - - {t('createMenu.laterOption')} - - - - setLaterRoom(null)} - /> - - ) -} - const Home = () => { const { t } = useTranslation('home') const { isLoggedIn } = useUser()