add react-hot-toast and surface OpenAI API errors to users (#328)

This commit is contained in:
Jason Banich
2023-04-01 22:05:07 -07:00
committed by GitHub
parent 23ad285a4b
commit b7b6bbaaca
6 changed files with 78 additions and 5 deletions
+2
View File
@@ -2,12 +2,14 @@ import '@/styles/globals.css';
import { appWithTranslation } from 'next-i18next';
import type { AppProps } from 'next/app';
import { Inter } from 'next/font/google';
import { Toaster } from 'react-hot-toast';
const inter = Inter({ subsets: ['latin'] });
function App({ Component, pageProps }: AppProps<{}>) {
return (
<main className={inter.className}>
<Toaster />
<Component {...pageProps} />
</main>
);
+6 -2
View File
@@ -1,6 +1,6 @@
import { ChatBody, Message } from '@/types/chat';
import { DEFAULT_SYSTEM_PROMPT } from '@/utils/app/const';
import { OpenAIStream } from '@/utils/server';
import { OpenAIError, OpenAIStream } from '@/utils/server';
import tiktokenModel from '@dqbd/tiktoken/encoders/cl100k_base.json';
import { init, Tiktoken } from '@dqbd/tiktoken/lite/init';
// @ts-expect-error
@@ -49,7 +49,11 @@ const handler = async (req: Request): Promise<Response> => {
return new Response(stream);
} catch (error) {
console.error(error);
return new Response('Error', { status: 500 });
if (error instanceof OpenAIError) {
return new Response('Error', { status: 500, statusText: error.message });
} else {
return new Response('Error', { status: 500 });
}
}
};
+2
View File
@@ -34,6 +34,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
import Head from 'next/head';
import { useEffect, useRef, useState } from 'react';
import { v4 as uuidv4 } from 'uuid';
import toast from 'react-hot-toast';
interface HomeProps {
serverSideApiKeyIsSet: boolean;
@@ -120,6 +121,7 @@ const Home: React.FC<HomeProps> = ({
if (!response.ok) {
setLoading(false);
setMessageIsStreaming(false);
toast.error(response.statusText);
return;
}