diff --git a/components/Sidebar/Conversations.tsx b/components/Sidebar/Conversations.tsx index f4cb529..ec97bda 100644 --- a/components/Sidebar/Conversations.tsx +++ b/components/Sidebar/Conversations.tsx @@ -3,20 +3,22 @@ import { IconMessage, IconTrash } from "@tabler/icons-react"; import { FC } from "react"; interface Props { + loading: boolean; conversations: Conversation[]; selectedConversation: Conversation; onSelectConversation: (conversation: Conversation) => void; onDeleteConversation: (conversation: Conversation) => void; } -export const Conversations: FC = ({ conversations, selectedConversation, onSelectConversation, onDeleteConversation }) => { +export const Conversations: FC = ({ loading, conversations, selectedConversation, onSelectConversation, onDeleteConversation }) => { return (
{conversations.map((conversation, index) => ( -
onSelectConversation(conversation)} + disabled={loading} > = ({ conversations, selectedConversation, onDeleteConversation(conversation); }} /> -
+ ))}
); diff --git a/components/Sidebar/Sidebar.tsx b/components/Sidebar/Sidebar.tsx index acef3f4..4902986 100644 --- a/components/Sidebar/Sidebar.tsx +++ b/components/Sidebar/Sidebar.tsx @@ -5,6 +5,7 @@ import { Conversations } from "./Conversations"; import { SidebarSettings } from "./SidebarSettings"; interface Props { + loading: boolean; conversations: Conversation[]; lightMode: "light" | "dark"; selectedConversation: Conversation; @@ -14,7 +15,7 @@ interface Props { onDeleteConversation: (conversation: Conversation) => void; } -export const Sidebar: FC = ({ conversations, lightMode, selectedConversation, onNewConversation, onToggleLightMode, onSelectConversation, onDeleteConversation }) => { +export const Sidebar: FC = ({ loading, conversations, lightMode, selectedConversation, onNewConversation, onToggleLightMode, onSelectConversation, onDeleteConversation }) => { return (
@@ -32,6 +33,7 @@ export const Sidebar: FC = ({ conversations, lightMode, selectedConversat
(false); const [model, setModel] = useState(OpenAIModel.GPT_3_5); const [lightMode, setLightMode] = useState<"dark" | "light">("dark"); + const [disabled, setDisabled] = useState(false); const handleSend = async (message: Message) => { if (selectedConversation) { @@ -20,6 +21,7 @@ export default function Home() { setSelectedConversation(updatedConversation); setLoading(true); + setDisabled(true); const response = await fetch("/api/chat", { method: "POST", @@ -106,6 +108,8 @@ export default function Home() { setConversations(updatedConversations); localStorage.setItem("conversationHistory", JSON.stringify(updatedConversations)); + + setDisabled(false); } }; @@ -142,8 +146,15 @@ export default function Home() { setConversations(updatedConversations); localStorage.setItem("conversationHistory", JSON.stringify(updatedConversations)); - if (selectedConversation && selectedConversation.id === conversation.id) { - setSelectedConversation(undefined); + if (updatedConversations.length > 0) { + setSelectedConversation(updatedConversations[0]); + localStorage.setItem("selectedConversation", JSON.stringify(updatedConversations[0])); + } else { + setSelectedConversation({ + id: 1, + name: "", + messages: [] + }); localStorage.removeItem("selectedConversation"); } }; @@ -193,6 +204,7 @@ export default function Home() { {selectedConversation && (
{ }, ...messages ], - max_tokens: 800, + max_tokens: 1000, temperature: 0.0, stream: true })