nova-betterchat/src/App.tsx

73 lines
1.7 KiB
TypeScript
Raw Normal View History

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;