44 RcbStopStreamMessageEvent ,
55 RcbStopSimulateStreamMessageEvent ,
66 Message ,
7+ useOnRcbEvent ,
8+ RcbEvent ,
79} from 'react-chatbotify' ;
810import { handlePrompt } from '../utils/promptHandler' ;
911import { Provider } from '../types/Provider' ;
@@ -15,12 +17,10 @@ const STREAM_DEBOUNCE_MS = 500;
1517/**
1618 * Handles message events.
1719 *
18- * @param getBotId id of the chatbot
1920 * @param refs object containing relevant refs
2021 * @param actions object containing relevant actions
2122 */
2223const useMessageHandler = (
23- getBotId : ( ) => string | null ,
2424 refs : {
2525 providerRef : React . MutableRefObject < Provider | null > ;
2626 messagesRef : React . MutableRefObject < Message [ ] > ;
@@ -45,17 +45,11 @@ const useMessageHandler = (
4545 }
4646) => {
4747 const { messagesRef, outputTypeRef, onUserMessageRef, onKeyDownRef, errorMessageRef } = refs ;
48- const {
49- injectMessage,
50- simulateStreamMessage,
51- toggleTextAreaDisabled,
52- toggleIsBotTyping,
53- goToPath,
54- focusTextArea
55- } = actions ;
48+ const { injectMessage, simulateStreamMessage, toggleTextAreaDisabled, toggleIsBotTyping, goToPath, focusTextArea } =
49+ actions ;
5650
5751 // controller to abort streaming responses if required
58- const abortControllerRef = useRef < AbortController | null > ( null ) ;
52+ const abortControllerRef = useRef < AbortController | null > ( null ) ;
5953
6054 /**
6155 * Handles message events to determine whether to prompt LLM.
@@ -64,7 +58,7 @@ const useMessageHandler = (
6458 */
6559 const handler = useCallback (
6660 ( event : RcbPostInjectMessageEvent | RcbStopStreamMessageEvent | RcbStopSimulateStreamMessageEvent ) => {
67- if ( getBotId ( ) !== event . detail . botId || ! refs . providerRef . current ) {
61+ if ( ! refs . providerRef . current ) {
6862 return ;
6963 }
7064 const msg = event . data . message ! ;
@@ -90,10 +84,10 @@ const useMessageHandler = (
9084 const historySize = refs . historySizeRef . current ;
9185 const past = messagesRef . current ;
9286 const messagesToSend = historySize ? [ ...past . slice ( - ( historySize - 1 ) ) , msg ] : [ msg ] ;
93-
87+
9488 // create & stash a new controller
95- const ctrl = new AbortController ( ) ;
96- abortControllerRef . current = ctrl ;
89+ const ctrl = new AbortController ( ) ;
90+ abortControllerRef . current = ctrl ;
9791
9892 handlePrompt ( messagesToSend , refs , actions , { signal : ctrl . signal } ) . catch ( ( err ) => {
9993 toggleIsBotTyping ( false ) ;
@@ -102,28 +96,21 @@ const useMessageHandler = (
10296 focusTextArea ( ) ;
10397 } ) ;
10498 console . error ( 'LLM prompt failed' , err ) ;
105- if ( outputTypeRef . current === " full" ) {
99+ if ( outputTypeRef . current === ' full' ) {
106100 injectMessage ( errorMessageRef . current ) ;
107101 } else {
108102 simulateStreamMessage ( errorMessageRef . current ) ;
109103 }
110104 } ) ;
111105 } , STREAM_DEBOUNCE_MS ) ;
112106 } ,
113- [ getBotId , refs , actions ]
107+ [ refs , actions ]
114108 ) ;
115109
116110 // adds required events for message streaming
117- useEffect ( ( ) => {
118- window . addEventListener ( 'rcb-post-inject-message' , handler ) ;
119- window . addEventListener ( 'rcb-stop-simulate-stream-message' , handler ) ;
120- window . addEventListener ( 'rcb-stop-stream-message' , handler ) ;
121- return ( ) => {
122- window . removeEventListener ( 'rcb-post-inject-message' , handler ) ;
123- window . removeEventListener ( 'rcb-stop-simulate-stream-message' , handler ) ;
124- window . removeEventListener ( 'rcb-stop-stream-message' , handler ) ;
125- } ;
126- } , [ handler ] ) ;
111+ useOnRcbEvent ( RcbEvent . POST_INJECT_MESSAGE , handler ) ;
112+ useOnRcbEvent ( RcbEvent . STOP_SIMULATE_STREAM_MESSAGE , handler ) ;
113+ useOnRcbEvent ( RcbEvent . STOP_STREAM_MESSAGE , handler ) ;
127114
128115 // handles keydown event for stop condition
129116 useEffect ( ( ) => {
@@ -133,8 +120,8 @@ const useMessageHandler = (
133120 if ( path ) {
134121 abortControllerRef . current ?. abort ( ) ;
135122 abortControllerRef . current = null ;
136- goToPath ( path )
137- } ;
123+ goToPath ( path ) ;
124+ }
138125 }
139126 } ;
140127 window . addEventListener ( 'keydown' , onKey ) ;
0 commit comments