error handling (#27)
This commit is contained in:
+37
-11
@@ -16,17 +16,32 @@ export default function Home() {
|
||||
const [messageIsStreaming, setMessageIsStreaming] = useState<boolean>(false);
|
||||
const [showSidebar, setShowSidebar] = useState<boolean>(true);
|
||||
const [apiKey, setApiKey] = useState<string>("");
|
||||
const [messageError, setMessageError] = useState<boolean>(false);
|
||||
const [modelError, setModelError] = useState<boolean>(false);
|
||||
|
||||
const handleSend = async (message: Message) => {
|
||||
const handleSend = async (message: Message, isResend: boolean) => {
|
||||
if (selectedConversation) {
|
||||
let updatedConversation: Conversation = {
|
||||
...selectedConversation,
|
||||
messages: [...selectedConversation.messages, message]
|
||||
};
|
||||
let updatedConversation: Conversation;
|
||||
|
||||
if (isResend) {
|
||||
const updatedMessages = [...selectedConversation.messages];
|
||||
updatedMessages.pop();
|
||||
|
||||
updatedConversation = {
|
||||
...selectedConversation,
|
||||
messages: [...updatedMessages, message]
|
||||
};
|
||||
} else {
|
||||
updatedConversation = {
|
||||
...selectedConversation,
|
||||
messages: [...selectedConversation.messages, message]
|
||||
};
|
||||
}
|
||||
|
||||
setSelectedConversation(updatedConversation);
|
||||
setLoading(true);
|
||||
setMessageIsStreaming(true);
|
||||
setMessageError(false);
|
||||
|
||||
const response = await fetch("/api/chat", {
|
||||
method: "POST",
|
||||
@@ -42,6 +57,8 @@ export default function Home() {
|
||||
|
||||
if (!response.ok) {
|
||||
setLoading(false);
|
||||
setMessageIsStreaming(false);
|
||||
setMessageError(true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -50,6 +67,8 @@ export default function Home() {
|
||||
if (!data) {
|
||||
setLoading(false);
|
||||
setMessageIsStreaming(false);
|
||||
setMessageError(true);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -218,8 +237,6 @@ export default function Home() {
|
||||
};
|
||||
|
||||
const fetchModels = async (key: string) => {
|
||||
setLoading(true);
|
||||
|
||||
const response = await fetch("/api/models", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
@@ -229,13 +246,20 @@ export default function Home() {
|
||||
key
|
||||
})
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (data) {
|
||||
setModels(data);
|
||||
if (!response.ok) {
|
||||
setModelError(true);
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(false);
|
||||
const data = await response.json();
|
||||
|
||||
if (!data) {
|
||||
setModelError(true);
|
||||
return;
|
||||
}
|
||||
|
||||
setModels(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
@@ -336,6 +360,8 @@ export default function Home() {
|
||||
<Chat
|
||||
conversation={selectedConversation}
|
||||
messageIsStreaming={messageIsStreaming}
|
||||
modelError={modelError}
|
||||
messageError={messageError}
|
||||
models={models}
|
||||
loading={loading}
|
||||
lightMode={lightMode}
|
||||
|
||||
Reference in New Issue
Block a user