45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 'use client'
 | |
| 
 | |
| import { useState, useEffect } from 'react'
 | |
| import ChatArea from '../components/ChatArea'
 | |
| import Sidebar from '../components/Sidebar'
 | |
| import useSocket from '../hooks/useSocket'
 | |
| import useLocalStorage from '../hooks/useLocalStorage'
 | |
| 
 | |
| export default function Home() {
 | |
|   const [currentChatId, setCurrentChatId] = useState<string | null>(null)
 | |
|   const [chats, setChats] = useLocalStorage('chats', {})
 | |
|   const socket = useSocket()
 | |
| 
 | |
|   useEffect(() => {
 | |
|     if (Object.keys(chats).length === 0) {
 | |
|       createNewChat()
 | |
|     } else {
 | |
|       setCurrentChatId(Object.keys(chats)[0])
 | |
|     }
 | |
|   }, [])
 | |
| 
 | |
|   const createNewChat = () => {
 | |
|     const chatId = Date.now().toString()
 | |
|     setChats(prevChats => ({
 | |
|       ...prevChats,
 | |
|       [chatId]: { messages: [], thinkingSections: [] }
 | |
|     }))
 | |
|     setCurrentChatId(chatId)
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <div className="flex h-screen">
 | |
|       <ChatArea
 | |
|         currentChatId={currentChatId}
 | |
|         setCurrentChatId={setCurrentChatId}
 | |
|         chats={chats}
 | |
|         setChats={setChats}
 | |
|         createNewChat={createNewChat}
 | |
|         socket={socket}
 | |
|       />
 | |
|       <Sidebar socket={socket} />
 | |
|     </div>
 | |
|   )
 | |
| }
 |