|
@@ -100,7 +100,7 @@ export const useChat = (
|
|
|
const handleUpdateChatList = useCallback((newChatList: ChatItem[]) => {
|
|
|
setChatList(newChatList)
|
|
|
chatListRef.current = newChatList
|
|
|
- }, [setChatList])
|
|
|
+ }, [])
|
|
|
const handleResponsing = useCallback((isResponsing: boolean) => {
|
|
|
setIsResponsing(isResponsing)
|
|
|
isResponsingRef.current = isResponsing
|
|
@@ -110,19 +110,29 @@ export const useChat = (
|
|
|
return replaceStringWithValues(str, promptVariablesConfig?.promptVariables || [], promptVariablesConfig?.inputs || {})
|
|
|
}, [promptVariablesConfig?.inputs, promptVariablesConfig?.promptVariables])
|
|
|
useEffect(() => {
|
|
|
- if (config?.opening_statement && chatListRef.current.filter(item => item.isOpeningStatement).length === 0) {
|
|
|
- handleUpdateChatList([
|
|
|
- {
|
|
|
- id: `${Date.now()}`,
|
|
|
- content: getIntroduction(config.opening_statement),
|
|
|
- isAnswer: true,
|
|
|
- isOpeningStatement: true,
|
|
|
- suggestedQuestions: config.suggested_questions,
|
|
|
- },
|
|
|
- ...chatListRef.current,
|
|
|
- ])
|
|
|
+ if (config?.opening_statement) {
|
|
|
+ handleUpdateChatList(produce(chatListRef.current, (draft) => {
|
|
|
+ const index = draft.findIndex(item => item.isOpeningStatement)
|
|
|
+
|
|
|
+ if (index > -1) {
|
|
|
+ draft[index] = {
|
|
|
+ ...draft[index],
|
|
|
+ content: getIntroduction(config.opening_statement),
|
|
|
+ suggestedQuestions: config.suggested_questions,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ draft.unshift({
|
|
|
+ id: `${Date.now()}`,
|
|
|
+ content: getIntroduction(config.opening_statement),
|
|
|
+ isAnswer: true,
|
|
|
+ isOpeningStatement: true,
|
|
|
+ suggestedQuestions: config.suggested_questions,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }))
|
|
|
}
|
|
|
- }, [])
|
|
|
+ }, [config?.opening_statement, getIntroduction, config?.suggested_questions, handleUpdateChatList])
|
|
|
|
|
|
const handleStop = useCallback(() => {
|
|
|
hasStopResponded.current = true
|