|
@@ -14,6 +14,7 @@ import Locale from "../locales";
|
|
|
export type Message = ChatCompletionResponseMessage & {
|
|
|
date: string;
|
|
|
streaming?: boolean;
|
|
|
+ isError?: boolean;
|
|
|
};
|
|
|
|
|
|
export enum SubmitKey {
|
|
@@ -351,9 +352,15 @@ export const useChatStore = create<ChatStore>()(
|
|
|
set(() => ({}));
|
|
|
}
|
|
|
},
|
|
|
- onError(error) {
|
|
|
- botMessage.content += "\n\n" + Locale.Store.Error;
|
|
|
+ onError(error, statusCode) {
|
|
|
+ if (statusCode === 401) {
|
|
|
+ botMessage.content = Locale.Error.Unauthorized;
|
|
|
+ } else {
|
|
|
+ botMessage.content += "\n\n" + Locale.Store.Error;
|
|
|
+ }
|
|
|
botMessage.streaming = false;
|
|
|
+ userMessage.isError = true;
|
|
|
+ botMessage.isError = true;
|
|
|
set(() => ({}));
|
|
|
ControllerPool.remove(sessionIndex, messageIndex);
|
|
|
},
|
|
@@ -383,7 +390,8 @@ export const useChatStore = create<ChatStore>()(
|
|
|
getMessagesWithMemory() {
|
|
|
const session = get().currentSession();
|
|
|
const config = get().config;
|
|
|
- const n = session.messages.length;
|
|
|
+ const messages = session.messages.filter((msg) => !msg.isError);
|
|
|
+ const n = messages.length;
|
|
|
|
|
|
const context = session.context.slice();
|
|
|
|
|
@@ -393,7 +401,7 @@ export const useChatStore = create<ChatStore>()(
|
|
|
}
|
|
|
|
|
|
const recentMessages = context.concat(
|
|
|
- session.messages.slice(Math.max(0, n - config.historyMessageCount)),
|
|
|
+ messages.slice(Math.max(0, n - config.historyMessageCount)),
|
|
|
);
|
|
|
|
|
|
return recentMessages;
|