mirror of
https://github.com/NovaOSS/nova-betterchat.git
synced 2024-11-25 22:43:59 +01:00
prevent submission while generating
This commit is contained in:
parent
063316407d
commit
fb21fb0f62
|
@ -15,23 +15,34 @@ import RefreshIcon from '@icon/RefreshIcon';
|
||||||
import { MessageInterface } from '@type/chat';
|
import { MessageInterface } from '@type/chat';
|
||||||
|
|
||||||
const ChatContent = () => {
|
const ChatContent = () => {
|
||||||
const [messages, inputRole, apiFree, apiKey, setMessages] = useStore(
|
const [
|
||||||
(state) => [
|
messages,
|
||||||
state.messages,
|
inputRole,
|
||||||
state.inputRole,
|
apiFree,
|
||||||
state.apiFree,
|
apiKey,
|
||||||
state.apiKey,
|
setMessages,
|
||||||
state.setMessages,
|
setGenerating,
|
||||||
]
|
generating,
|
||||||
);
|
] = useStore((state) => [
|
||||||
|
state.messages,
|
||||||
|
state.inputRole,
|
||||||
|
state.apiFree,
|
||||||
|
state.apiKey,
|
||||||
|
state.setMessages,
|
||||||
|
state.setGenerating,
|
||||||
|
state.generating,
|
||||||
|
]);
|
||||||
const [error, setError] = useState<string>('');
|
const [error, setError] = useState<string>('');
|
||||||
|
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
|
if (generating) return;
|
||||||
|
|
||||||
const updatedMessages: MessageInterface[] = JSON.parse(
|
const updatedMessages: MessageInterface[] = JSON.parse(
|
||||||
JSON.stringify(messages)
|
JSON.stringify(messages)
|
||||||
);
|
);
|
||||||
updatedMessages.push({ role: 'assistant', content: '' });
|
updatedMessages.push({ role: 'assistant', content: '' });
|
||||||
setMessages(updatedMessages);
|
setMessages(updatedMessages);
|
||||||
|
setGenerating(true);
|
||||||
let stream;
|
let stream;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -77,6 +88,7 @@ const ChatContent = () => {
|
||||||
setError(''), 10000;
|
setError(''), 10000;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
setGenerating(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -5,14 +5,17 @@ export interface ChatSlice {
|
||||||
messages: MessageInterface[];
|
messages: MessageInterface[];
|
||||||
chats?: ChatInterface[];
|
chats?: ChatInterface[];
|
||||||
currentChatIndex: number;
|
currentChatIndex: number;
|
||||||
|
generating: boolean;
|
||||||
setMessages: (messages: MessageInterface[]) => void;
|
setMessages: (messages: MessageInterface[]) => void;
|
||||||
setChats: (chats: ChatInterface[]) => void;
|
setChats: (chats: ChatInterface[]) => void;
|
||||||
setCurrentChatIndex: (currentChatIndex: number) => void;
|
setCurrentChatIndex: (currentChatIndex: number) => void;
|
||||||
|
setGenerating: (generating: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const createChatSlice: StoreSlice<ChatSlice> = (set, get) => ({
|
export const createChatSlice: StoreSlice<ChatSlice> = (set, get) => ({
|
||||||
messages: [],
|
messages: [],
|
||||||
currentChatIndex: -1,
|
currentChatIndex: -1,
|
||||||
|
generating: false,
|
||||||
setMessages: (messages: MessageInterface[]) => {
|
setMessages: (messages: MessageInterface[]) => {
|
||||||
set((prev: ChatSlice) => ({
|
set((prev: ChatSlice) => ({
|
||||||
...prev,
|
...prev,
|
||||||
|
@ -31,4 +34,10 @@ export const createChatSlice: StoreSlice<ChatSlice> = (set, get) => ({
|
||||||
currentChatIndex: currentChatIndex,
|
currentChatIndex: currentChatIndex,
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
setGenerating: (generating: boolean) => {
|
||||||
|
set((prev: ChatSlice) => ({
|
||||||
|
...prev,
|
||||||
|
generating: generating,
|
||||||
|
}));
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue