2023-03-03 23:17:11 +01:00
|
|
|
import React, { useEffect } from 'react';
|
|
|
|
import useStore from '@store/store';
|
|
|
|
|
|
|
|
import Chat from './components/Chat';
|
|
|
|
import Menu from './components/Menu';
|
|
|
|
import ConfigMenu from './components/ConfigMenu';
|
|
|
|
|
|
|
|
import useSaveToLocalStorage from '@hooks/useSaveToLocalStorage';
|
|
|
|
import useUpdateCharts from '@hooks/useUpdateChats';
|
|
|
|
|
2023-03-04 01:02:49 +01:00
|
|
|
import { ChatInterface, MessageInterface } from '@type/chat';
|
|
|
|
import { defaultSystemMessage } from '@constants/chat';
|
2023-03-03 23:17:11 +01:00
|
|
|
|
2023-03-03 06:25:10 +01:00
|
|
|
function App() {
|
2023-03-03 23:17:11 +01:00
|
|
|
useSaveToLocalStorage();
|
|
|
|
useUpdateCharts();
|
|
|
|
|
|
|
|
const [setChats, setMessages, setCurrentChatIndex] = useStore((state) => [
|
|
|
|
state.setChats,
|
|
|
|
state.setMessages,
|
|
|
|
state.setCurrentChatIndex,
|
|
|
|
]);
|
|
|
|
|
2023-03-04 01:02:49 +01:00
|
|
|
const initialiseNewChat = () => {
|
|
|
|
const message: MessageInterface = {
|
|
|
|
role: 'system',
|
|
|
|
content: defaultSystemMessage,
|
|
|
|
};
|
|
|
|
setChats([
|
|
|
|
{
|
|
|
|
title: 'New Chat',
|
|
|
|
messages: [message],
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
setMessages([message]);
|
|
|
|
setCurrentChatIndex(0);
|
|
|
|
};
|
|
|
|
|
2023-03-03 23:17:11 +01:00
|
|
|
useEffect(() => {
|
|
|
|
// localStorage.removeItem('chats');
|
|
|
|
const storedChats = localStorage.getItem('chats');
|
|
|
|
if (storedChats) {
|
|
|
|
try {
|
|
|
|
const chats: ChatInterface[] = JSON.parse(storedChats);
|
2023-03-04 01:02:49 +01:00
|
|
|
if (chats.length > 0) {
|
|
|
|
setChats(chats);
|
|
|
|
setMessages(chats[0].messages);
|
|
|
|
setCurrentChatIndex(0);
|
|
|
|
} else {
|
|
|
|
initialiseNewChat();
|
|
|
|
}
|
2023-03-03 23:17:11 +01:00
|
|
|
} catch (e: unknown) {
|
|
|
|
setChats([]);
|
|
|
|
setMessages([]);
|
|
|
|
setCurrentChatIndex(-1);
|
|
|
|
console.log(e);
|
|
|
|
}
|
|
|
|
} else {
|
2023-03-04 01:02:49 +01:00
|
|
|
initialiseNewChat();
|
2023-03-03 23:17:11 +01:00
|
|
|
}
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className='overflow-hidden w-full h-full relative'>
|
|
|
|
<Menu />
|
|
|
|
<Chat />
|
|
|
|
<ConfigMenu />
|
|
|
|
</div>
|
|
|
|
);
|
2023-03-03 06:25:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export default App;
|