From a3c67a3bcc3b5bc9dc2b66ef1b92d0bb50684abb Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Sat, 26 Apr 2025 21:44:35 -0300 Subject: [PATCH] feat: add video page, implement token generation API, and enhance chat components with improved styles and functionality --- .gitignore | 3 +- app/api/bot/create-conversation/route.ts | 20 + app/api/get-token/route.ts | 14 + app/chat/components/chat/chat-header.tsx | 8 +- app/chat/components/chat/chat-input.tsx | 23 +- app/chat/components/chat/chat-window.tsx | 6 +- app/chat/components/chat/message-list.tsx | 10 +- .../components/projector/projector-view.tsx | 23 +- .../components/selector/person-selector.tsx | 8 +- app/chat/components/sound-initializer.tsx | 23 +- app/chat/lib/utils.ts | 6 +- app/chat/page.tsx | 2 +- app/chat/providers/chat-provider.tsx | 84 +- app/chat/providers/sound-provider.tsx | 19 +- app/chat/styles/chat.css | 36 +- app/chat/styles/layout.css | 5 +- app/chat/styles/projector.css | 4 +- app/chat/styles/ui.css | 6 +- app/client-nav.tsx | 8 +- app/layout.tsx | 10 +- app/meet/page.tsx | 255 + app/{ => settings}/sync/page.tsx | 0 app/{video => videos}/page.tsx | 0 next.config.js | 2 +- package.json | 3 + pnpm-lock.yaml | 10551 ++++++++++++++++ tsconfig.tsbuildinfo | 1 + 27 files changed, 10948 insertions(+), 182 deletions(-) create mode 100644 app/api/bot/create-conversation/route.ts create mode 100644 app/api/get-token/route.ts create mode 100644 app/meet/page.tsx rename app/{ => settings}/sync/page.tsx (100%) rename app/{video => videos}/page.tsx (100%) create mode 100644 pnpm-lock.yaml create mode 100644 tsconfig.tsbuildinfo diff --git a/.gitignore b/.gitignore index e534153..9812bf1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ dist-ssr *.sw? output.sh .next -ui \ No newline at end of file +ui +.env diff --git a/app/api/bot/create-conversation/route.ts b/app/api/bot/create-conversation/route.ts new file mode 100644 index 0000000..fa8dfab --- /dev/null +++ b/app/api/bot/create-conversation/route.ts @@ -0,0 +1,20 @@ +import { NextResponse } from 'next/server' + +export async function POST() { + try { + const response = await fetch('https://generalbots.online/directline/PROD-GeneralBots006/conversations', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + }) + + const data = await response.json() + return NextResponse.json(data) + } catch (error) { + return NextResponse.json( + { error: 'Failed to create conversation' }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/app/api/get-token/route.ts b/app/api/get-token/route.ts new file mode 100644 index 0000000..888faf1 --- /dev/null +++ b/app/api/get-token/route.ts @@ -0,0 +1,14 @@ +import { NextResponse } from 'next/server' + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url) + const room = searchParams.get('room') + const identity = searchParams.get('identity') + + const response = await fetch( + `https://generalbots.online/PROD-GeneralBots006/meeting-token?room=${room}&identity=${identity}` + ) + const data = await response.json() + + return NextResponse.json(data) +} \ No newline at end of file diff --git a/app/chat/components/chat/chat-header.tsx b/app/chat/components/chat/chat-header.tsx index cfaf4d0..a73c463 100644 --- a/app/chat/components/chat/chat-header.tsx +++ b/app/chat/components/chat/chat-header.tsx @@ -4,19 +4,15 @@ import '../../styles/chat.css'; export function ChatHeader() { const { instance } = useChat(); - return (
-

- {instance?.name || 'Chat'} -

+

{instance?.name || 'Qwen Chat'}

Online
-
diff --git a/app/chat/components/chat/chat-input.tsx b/app/chat/components/chat/chat-input.tsx index 5fc7ed2..fb82853 100644 --- a/app/chat/components/chat/chat-input.tsx +++ b/app/chat/components/chat/chat-input.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { EmojiPicker } from '../ui/emoji-picker'; + import { useChat } from '../../providers/chat-provider'; import { useSound } from '../../providers/sound-provider'; import '../../styles/chat.css'; @@ -20,9 +20,9 @@ export function ChatInput() { setMessage(''); }; - const handleEmojiSelect = (emoji: string) => { + const handleEmojiSelect = (emoji) => { playSound('click'); - setMessage(prev => prev + emoji); + setMessage((prev) => prev + emoji); }; return ( @@ -30,46 +30,43 @@ export function ChatInput() {
- -