|
1 |
| -import { MessageType } from '@/constants/chat'; |
2 | 1 | import { useTestChunkRetrieval } from '@/hooks/knowledge-hooks';
|
3 | 2 | import { useSendMessageWithSse } from '@/hooks/logic-hooks';
|
| 3 | +import { IAnswer } from '@/interfaces/database/chat'; |
4 | 4 | import api from '@/utils/api';
|
5 |
| -import { useCallback, useEffect, useMemo, useState } from 'react'; |
6 |
| -import { IMessage } from '../chat/interface'; |
| 5 | +import { isEmpty } from 'lodash'; |
| 6 | +import { useCallback, useEffect, useState } from 'react'; |
7 | 7 |
|
8 | 8 | export const useSendQuestion = (kbIds: string[]) => {
|
9 | 9 | const { send, answer, done } = useSendMessageWithSse(api.ask);
|
10 | 10 | const { testChunk, loading } = useTestChunkRetrieval();
|
11 | 11 | const [sendingLoading, setSendingLoading] = useState(false);
|
12 |
| - |
13 |
| - const message: IMessage = useMemo(() => { |
14 |
| - return { |
15 |
| - id: '', |
16 |
| - content: answer.answer, |
17 |
| - role: MessageType.Assistant, |
18 |
| - reference: answer.reference, |
19 |
| - }; |
20 |
| - }, [answer]); |
| 12 | + const [currentAnswer, setCurrentAnswer] = useState({} as IAnswer); |
21 | 13 |
|
22 | 14 | const sendQuestion = useCallback(
|
23 | 15 | (question: string) => {
|
| 16 | + setCurrentAnswer({} as IAnswer); |
24 | 17 | setSendingLoading(true);
|
25 | 18 | send({ kb_ids: kbIds, question });
|
26 | 19 | testChunk({ kb_id: kbIds, highlight: true, question });
|
27 | 20 | },
|
28 | 21 | [send, testChunk, kbIds],
|
29 | 22 | );
|
30 | 23 |
|
| 24 | + useEffect(() => { |
| 25 | + if (!isEmpty(answer)) { |
| 26 | + setCurrentAnswer(answer); |
| 27 | + } |
| 28 | + }, [answer]); |
| 29 | + |
31 | 30 | useEffect(() => {
|
32 | 31 | if (done) {
|
33 | 32 | setSendingLoading(false);
|
34 | 33 | }
|
35 | 34 | }, [done]);
|
36 | 35 |
|
37 |
| - return { sendQuestion, message, loading, sendingLoading }; |
| 36 | + return { sendQuestion, loading, sendingLoading, answer: currentAnswer }; |
38 | 37 | };
|
0 commit comments