error handling (#27)

This commit is contained in:
Mckay Wrigley
2023-03-20 07:17:58 -06:00
committed by GitHub
parent a0751994b1
commit dd439bb4a8
4 changed files with 125 additions and 49 deletions
+37 -11
View File
@@ -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}