From 736c66f46a03ba13329bf030fadfa85e604e23b1 Mon Sep 17 00:00:00 2001 From: Yidadaa Date: Thu, 18 May 2023 01:24:36 +0800 Subject: [PATCH] feat: stop all stale messages --- app/api/common.ts | 4 ---- app/components/chat.tsx | 12 +++++++++++- app/store/chat.ts | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/api/common.ts b/app/api/common.ts index 647b124ad..1a4bfc40c 100644 --- a/app/api/common.ts +++ b/app/api/common.ts @@ -25,10 +25,6 @@ export async function requestOpenai(req: NextRequest) { console.log("[Org ID]", process.env.OPENAI_ORG_ID); } - if (!authValue || !authValue.startsWith("Bearer sk-")) { - console.error("[OpenAI Request] invalid api key provided", authValue); - } - return fetch(`${baseUrl}/${openaiPath}`, { headers: { "Content-Type": "application/json", diff --git a/app/components/chat.tsx b/app/components/chat.tsx index f2cd8cc49..49244ccb5 100644 --- a/app/components/chat.tsx +++ b/app/components/chat.tsx @@ -53,7 +53,7 @@ import chatStyle from "./chat.module.scss"; import { ListItem, Modal, showModal } from "./ui-lib"; import { useLocation, useNavigate } from "react-router-dom"; -import { LAST_INPUT_KEY, Path } from "../constant"; +import { LAST_INPUT_KEY, Path, REQUEST_TIMEOUT_MS } from "../constant"; import { Avatar } from "./emoji"; import { MaskAvatar, MaskConfig } from "./mask"; import { useMaskStore } from "../store/mask"; @@ -487,6 +487,16 @@ export function Chat() { // stop response const onUserStop = (messageId: number) => { + chatStore.updateCurrentSession((session) => { + const stopTiming = Date.now() - REQUEST_TIMEOUT_MS; + session.messages.forEach((m) => { + // check if should stop all stale messages + if (m.streaming && new Date(m.date).getTime() < stopTiming) { + m.isError = false; + m.streaming = false; + } + }); + }); ChatControllerPool.stop(sessionIndex, messageId); }; diff --git a/app/store/chat.ts b/app/store/chat.ts index 9bb9a8039..dff88c7c1 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -7,7 +7,7 @@ import Locale from "../locales"; import { showToast } from "../components/ui-lib"; import { ModelType } from "./config"; import { createEmptyMask, Mask } from "./mask"; -import { StoreKey } from "../constant"; +import { REQUEST_TIMEOUT_MS, StoreKey } from "../constant"; import { api, RequestMessage } from "../client/api"; import { ChatControllerPool } from "../client/controller"; import { prettyObject } from "../utils/format";