1
- import { memo } from 'react' ;
1
+ import { memo , MutableRefObject , useImperativeHandle } from 'react' ;
2
2
import { createStoreUpdater } from 'zustand-utils' ;
3
3
4
+ import { ProChatInstance , useProChat } from '../hooks/useProChat' ;
4
5
import { ChatProps , ChatState , useStoreApi } from '../store' ;
5
6
6
- export type StoreUpdaterProps = Partial <
7
- Pick < ChatState , 'chats' | 'config' | 'init' | 'onChatsChange' | 'helloMessage' | 'request' >
8
- > &
9
- Pick < ChatProps , 'userMeta' | 'assistantMeta' > ;
7
+ export type ProChatChatReference = MutableRefObject < ProChatInstance | undefined > ;
8
+
9
+ export interface StoreUpdaterProps
10
+ extends Partial <
11
+ Pick < ChatState , 'chats' | 'config' | 'init' | 'onChatsChange' | 'helloMessage' | 'request' >
12
+ > ,
13
+ Pick < ChatProps , 'userMeta' | 'assistantMeta' > {
14
+ chatRef ?: ProChatChatReference ;
15
+ }
10
16
11
17
const StoreUpdater = memo < StoreUpdaterProps > (
12
- ( { init, onChatsChange, request, userMeta, assistantMeta, helloMessage, chats, config } ) => {
18
+ ( {
19
+ init,
20
+ onChatsChange,
21
+ chatRef,
22
+ request,
23
+ userMeta,
24
+ assistantMeta,
25
+ helloMessage,
26
+ chats,
27
+ config,
28
+ } ) => {
13
29
const storeApi = useStoreApi ( ) ;
14
30
const useStoreUpdater = createStoreUpdater ( storeApi ) ;
15
31
@@ -25,6 +41,10 @@ const StoreUpdater = memo<StoreUpdaterProps>(
25
41
useStoreUpdater ( 'onChatsChange' , onChatsChange ) ;
26
42
27
43
useStoreUpdater ( 'request' , request ) ;
44
+
45
+ const instance = useProChat ( ) ;
46
+ useImperativeHandle ( chatRef , ( ) => instance ) ;
47
+
28
48
return null ;
29
49
} ,
30
50
) ;
0 commit comments