44 */
55
66import { EuiFlyoutBody , EuiFlyoutFooter , EuiPage , EuiPageBody , EuiSpacer } from '@elastic/eui' ;
7- import React , { useEffect , useState } from 'react' ;
7+ import React , { useCallback , useState } from 'react' ;
88import cs from 'classnames' ;
99import { useChatContext } from '../../contexts/chat_context' ;
1010import { useChatState } from '../../hooks/use_chat_state' ;
11- import { useGetSession } from '../../hooks/use_sessions' ;
1211import { ChatPageContent } from './chat_page_content' ;
1312import { ChatInputControls } from './controls/chat_input_controls' ;
13+ import { useObservable } from 'react-use' ;
14+ import { useCore } from '../../contexts/core_context' ;
1415
1516interface ChatPageProps {
1617 className ?: string ;
1718}
1819
1920export const ChatPage : React . FC < ChatPageProps > = ( props ) => {
21+ const core = useCore ( ) ;
2022 const chatContext = useChatContext ( ) ;
2123 const { chatState, chatStateDispatch } = useChatState ( ) ;
2224 const [ showGreetings , setShowGreetings ] = useState ( false ) ;
23- const {
24- data : session ,
25- loading : messagesLoading ,
26- error : messagesLoadingError ,
27- refresh,
28- } = useGetSession ( ) ;
25+ const sessionLoadStatus = useObservable ( core . services . sessionLoad . status$ ) ;
26+ const messagesLoading = sessionLoadStatus === 'loading' ;
2927
30- useEffect ( ( ) => {
28+ const refresh = useCallback ( async ( ) => {
29+ if ( ! chatContext . sessionId ) {
30+ return ;
31+ }
32+ const session = await core . services . sessionLoad . load ( chatContext . sessionId ) ;
3133 if ( session ) {
3234 chatStateDispatch ( { type : 'receive' , payload : session . messages } ) ;
3335 }
34- } , [ session ] ) ;
36+ } , [ chatContext . sessionId , chatStateDispatch ] ) ;
3537
3638 return (
3739 < >
@@ -42,7 +44,9 @@ export const ChatPage: React.FC<ChatPageProps> = (props) => {
4244 showGreetings = { showGreetings }
4345 setShowGreetings = { setShowGreetings }
4446 messagesLoading = { messagesLoading }
45- messagesLoadingError = { messagesLoadingError }
47+ messagesLoadingError = {
48+ typeof sessionLoadStatus !== 'string' ? sessionLoadStatus ?. error : undefined
49+ }
4650 onRefresh = { refresh }
4751 />
4852 </ EuiPageBody >
0 commit comments