balibabu commited on
Commit
5281167
·
1 Parent(s): 6b741bf

fix: After sending the message for the first time, the returned content is not streamed out #2067 #1832 (#2191)

Browse files

### What problem does this PR solve?

fix: After sending the message for the first time, the returned content
is not streamed out #2067 #1832

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)

web/src/hooks/logic-hooks.ts CHANGED
@@ -264,9 +264,11 @@ export const useSendMessageWithSse = (
264
  }
265
  console.info('done?');
266
  setDone(true);
 
267
  return { data: await res, response };
268
  } catch (e) {
269
  setDone(true);
 
270
  console.warn(e);
271
  }
272
  },
 
264
  }
265
  console.info('done?');
266
  setDone(true);
267
+ setAnswer({} as IAnswer);
268
  return { data: await res, response };
269
  } catch (e) {
270
  setDone(true);
271
+ setAnswer({} as IAnswer);
272
  console.warn(e);
273
  }
274
  },
web/src/pages/chat/hooks.ts CHANGED
@@ -472,130 +472,6 @@ export const useHandleMessageInputChange = () => {
472
  };
473
  };
474
 
475
- export const useSendMessage = (
476
- conversation: IClientConversation,
477
- addNewestConversation: (message: Message, answer?: string) => void,
478
- removeLatestMessage: () => void,
479
- addNewestAnswer: (answer: IAnswer) => void,
480
- removeMessagesAfterCurrentMessage: (messageId: string) => void,
481
- ) => {
482
- const { setConversation } = useSetConversation();
483
- const { conversationId } = useGetChatSearchParams();
484
- const { handleInputChange, value, setValue } = useHandleMessageInputChange();
485
-
486
- const { handleClickConversation } = useClickConversationCard();
487
- const { send, answer, done, setDone } = useSendMessageWithSse();
488
-
489
- const sendMessage = useCallback(
490
- async ({
491
- message,
492
- currentConversationId,
493
- messages,
494
- }: {
495
- message: Message;
496
- currentConversationId?: string;
497
- messages?: Message[];
498
- }) => {
499
- const res = await send({
500
- conversation_id: currentConversationId ?? conversationId,
501
- messages: [...(messages ?? conversation?.message ?? []), message],
502
- });
503
-
504
- if (res && (res?.response.status !== 200 || res?.data?.retcode !== 0)) {
505
- // cancel loading
506
- setValue(message.content);
507
- console.info('removeLatestMessage111');
508
- removeLatestMessage();
509
- } else {
510
- if (currentConversationId) {
511
- console.info('111');
512
- // new conversation
513
- handleClickConversation(currentConversationId);
514
- } else {
515
- console.info('222');
516
- // fetchConversation(conversationId);
517
- }
518
- }
519
- },
520
- [
521
- conversation?.message,
522
- conversationId,
523
- handleClickConversation,
524
- removeLatestMessage,
525
- setValue,
526
- send,
527
- ],
528
- );
529
-
530
- const handleSendMessage = useCallback(
531
- async (message: Message) => {
532
- if (conversationId !== '') {
533
- sendMessage({ message });
534
- } else {
535
- const data = await setConversation(message.content);
536
- if (data.retcode === 0) {
537
- const id = data.data.id;
538
- sendMessage({ message, currentConversationId: id });
539
- }
540
- }
541
- },
542
- [conversationId, setConversation, sendMessage],
543
- );
544
-
545
- const { regenerateMessage } = useRegenerateMessage({
546
- removeMessagesAfterCurrentMessage,
547
- sendMessage,
548
- messages: conversation.message,
549
- });
550
-
551
- useEffect(() => {
552
- // #1289
553
- if (answer.answer && answer?.conversationId === conversationId) {
554
- addNewestAnswer(answer);
555
- }
556
- }, [answer, addNewestAnswer, conversationId]);
557
-
558
- useEffect(() => {
559
- // #1289 switch to another conversion window when the last conversion answer doesn't finish.
560
- if (conversationId) {
561
- setDone(true);
562
- }
563
- }, [setDone, conversationId]);
564
-
565
- const handlePressEnter = useCallback(
566
- (documentIds: string[]) => {
567
- if (trim(value) === '') return;
568
- const id = uuid();
569
-
570
- addNewestConversation({
571
- content: value,
572
- doc_ids: documentIds,
573
- id,
574
- role: MessageType.User,
575
- });
576
- if (done) {
577
- setValue('');
578
- handleSendMessage({
579
- id,
580
- content: value.trim(),
581
- role: MessageType.User,
582
- doc_ids: documentIds,
583
- });
584
- }
585
- },
586
- [addNewestConversation, handleSendMessage, done, setValue, value],
587
- );
588
-
589
- return {
590
- handlePressEnter,
591
- handleInputChange,
592
- value,
593
- setValue,
594
- regenerateMessage,
595
- loading: !done,
596
- };
597
- };
598
-
599
  export const useSendNextMessage = () => {
600
  const { setConversation } = useSetConversation();
601
  const { conversationId } = useGetChatSearchParams();
@@ -662,7 +538,11 @@ export const useSendNextMessage = () => {
662
  const data = await setConversation(message.content);
663
  if (data.retcode === 0) {
664
  const id = data.data.id;
665
- sendMessage({ message, currentConversationId: id });
 
 
 
 
666
  }
667
  }
668
  },
@@ -677,10 +557,14 @@ export const useSendNextMessage = () => {
677
 
678
  useEffect(() => {
679
  // #1289
680
- if (answer.answer && answer?.conversationId === conversationId) {
 
 
 
 
681
  addNewestAnswer(answer);
682
  }
683
- }, [answer, addNewestAnswer, conversationId]);
684
 
685
  useEffect(() => {
686
  // #1289 switch to another conversion window when the last conversion answer doesn't finish.
 
472
  };
473
  };
474
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
475
  export const useSendNextMessage = () => {
476
  const { setConversation } = useSetConversation();
477
  const { conversationId } = useGetChatSearchParams();
 
538
  const data = await setConversation(message.content);
539
  if (data.retcode === 0) {
540
  const id = data.data.id;
541
+ sendMessage({
542
+ message,
543
+ currentConversationId: id,
544
+ messages: data.data.message,
545
+ });
546
  }
547
  }
548
  },
 
557
 
558
  useEffect(() => {
559
  // #1289
560
+ if (
561
+ answer.answer &&
562
+ !done &&
563
+ (answer?.conversationId === conversationId || conversationId === '')
564
+ ) {
565
  addNewestAnswer(answer);
566
  }
567
+ }, [answer, addNewestAnswer, conversationId, done]);
568
 
569
  useEffect(() => {
570
  // #1289 switch to another conversion window when the last conversion answer doesn't finish.