From 79237840e2461b6a740bb1237a7e86ef2292e774 Mon Sep 17 00:00:00 2001 From: Anas Mazouni Date: Sat, 11 Nov 2023 21:46:07 +0100 Subject: [PATCH] feat: wip state machine --- client/.gitignore | 1 + client/bun.lockb | Bin 180272 -> 181906 bytes client/package.json | 2 + client/src/App.tsx | 17 +- client/src/components/molecules/chat.tsx | 42 ++-- client/src/components/molecules/footer.tsx | 24 +- client/src/components/molecules/header.tsx | 4 +- .../src/components/molecules/name-dialog.tsx | 77 ------ .../components/molecules/settings-dialog.tsx | 97 ++++++++ client/src/components/pages/home.tsx | 4 +- client/src/components/pages/not-found.tsx | 17 ++ client/src/components/pages/welcome.tsx | 5 + client/src/components/template/layout.tsx | 16 +- client/src/components/ui/badge.tsx | 36 +++ client/src/hooks/useUserMedia.ts | 11 +- client/src/lib/store.ts | 27 -- client/src/lib/store/chat.slice.ts | 15 ++ client/src/lib/store/index.ts | 27 ++ client/src/lib/store/settings.slice.ts | 12 + client/src/lib/store/users.slice.ts | 53 ++++ client/src/providers/omegle-provider.tsx | 234 +++++++++--------- client/src/types/index.ts | 6 +- server/index.ts | 70 ++++-- 23 files changed, 520 insertions(+), 277 deletions(-) delete mode 100644 client/src/components/molecules/name-dialog.tsx create mode 100644 client/src/components/molecules/settings-dialog.tsx create mode 100644 client/src/components/pages/not-found.tsx create mode 100644 client/src/components/pages/welcome.tsx create mode 100644 client/src/components/ui/badge.tsx delete mode 100644 client/src/lib/store.ts create mode 100644 client/src/lib/store/chat.slice.ts create mode 100644 client/src/lib/store/index.ts create mode 100644 client/src/lib/store/settings.slice.ts create mode 100644 client/src/lib/store/users.slice.ts diff --git a/client/.gitignore b/client/.gitignore index a547bf3..f8155a1 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -22,3 +22,4 @@ dist-ssr *.njsproj *.sln *.sw? +*.env \ No newline at end of file diff --git a/client/bun.lockb b/client/bun.lockb index 3196712ef148256c0871aa8c6631753cfacc6ab4..cc01d2aab20ad83953ac797456ac2e9c2074c2ee 100755 GIT binary patch delta 34892 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 EAF=@|E&u=k delta 33883 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 { return ( - <> - - - - + + + }> + } /> + } /> + } /> + + + ) } diff --git a/client/src/components/molecules/chat.tsx b/client/src/components/molecules/chat.tsx index 080a709..83dba3a 100644 --- a/client/src/components/molecules/chat.tsx +++ b/client/src/components/molecules/chat.tsx @@ -1,15 +1,17 @@ import { Button } from '@/components/ui/button' import { Form, FormControl, FormDescription, FormField, FormItem, FormMessage } from '@/components/ui/form' -import { useChatStore } from '@/lib/store' +import { useStore } from '@/lib/store' import { cn } from '@/lib/utils' import { useOmegle } from '@/providers/omegle-provider' import { zodResolver } from '@hookform/resolvers/zod' +import { Send } from 'lucide-react' import { useEffect, useRef } from 'react' import { useForm } from 'react-hook-form' import { z } from 'zod' +import { Badge } from '../ui/badge' import { Textarea } from '../ui/textarea' import { useToast } from '../ui/use-toast' -import NameDialog from './name-dialog' +import SettingsDialog from './settings-dialog' const formSchema = z.object({ message: z.string().min(1) @@ -17,9 +19,10 @@ const formSchema = z.object({ const Chat = () => { const ref = useRef(null) - const { messages, name } = useChatStore() - const { sendMessage, strangerId } = useOmegle() + const { messages, me } = useStore() + const { sendMessage, stranger } = useOmegle() const { toast } = useToast() + const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { @@ -33,7 +36,7 @@ const Chat = () => { }, [messages]) const onSubmit = (data: z.infer) => { - if (!strangerId) { + if (!stranger?.id) { toast({ title: 'Error', description: 'You are not connected to a chat.', @@ -46,23 +49,19 @@ const Chat = () => { } return ( -
-
- - You're connected as {name} - - -
-

Chat log:

+
+

+ Chat log: {me?.state}{' '} +

{messages.map((message, i) => (
- {message.sender}:{' '} + {message.sender}: {message.message}
@@ -75,9 +74,10 @@ const Chat = () => { control={form.control} name="message" render={({ field }) => ( - +