22
33import React , { useEffect , useRef , useState } from 'react' ;
44import { motion } from 'motion/react' ;
5+ import { useSessionContext , useSessionMessages } from '@livekit/components-react' ;
56import type { AppConfig } from '@/app-config' ;
67import { ChatTranscript } from '@/components/app/chat-transcript' ;
78import { PreConnectMessage } from '@/components/app/preconnect-message' ;
@@ -10,15 +11,12 @@ import {
1011 AgentControlBar ,
1112 type ControlBarControls ,
1213} from '@/components/livekit/agent-control-bar/agent-control-bar' ;
13- import { useChatMessages } from '@/hooks/useChatMessages' ;
14- import { useConnectionTimeout } from '@/hooks/useConnectionTimout' ;
15- import { useDebugMode } from '@/hooks/useDebug' ;
14+ import { useConnection } from '@/hooks/useConnection' ;
1615import { cn } from '@/lib/utils' ;
1716import { ScrollArea } from '../livekit/scroll-area/scroll-area' ;
1817
1918const MotionBottom = motion . create ( 'div' ) ;
2019
21- const IN_DEVELOPMENT = process . env . NODE_ENV !== 'production' ;
2220const BOTTOM_VIEW_MOTION_PROPS = {
2321 variants : {
2422 visible : {
@@ -58,6 +56,7 @@ export function Fade({ top = false, bottom = false, className }: FadeProps) {
5856 />
5957 ) ;
6058}
59+
6160interface SessionViewProps {
6261 appConfig : AppConfig ;
6362}
@@ -66,11 +65,10 @@ export const SessionView = ({
6665 appConfig,
6766 ...props
6867} : React . ComponentProps < 'section' > & SessionViewProps ) => {
69- useConnectionTimeout ( 200_000 ) ;
70- useDebugMode ( { enabled : IN_DEVELOPMENT } ) ;
71-
72- const messages = useChatMessages ( ) ;
68+ const session = useSessionContext ( ) ;
69+ const { messages } = useSessionMessages ( session ) ;
7370 const [ chatOpen , setChatOpen ] = useState ( false ) ;
71+ const { isConnectionActive, startDisconnectTransition } = useConnection ( ) ;
7472 const scrollAreaRef = useRef < HTMLDivElement > ( null ) ;
7573
7674 const controls : ControlBarControls = {
@@ -100,7 +98,7 @@ export const SessionView = ({
10098 ) }
10199 >
102100 < Fade top className = "absolute inset-x-4 top-0 h-40" />
103- < ScrollArea ref = { scrollAreaRef } className = "px-4 pt-40 pb-[150px] md:px-6 md:pb-[180px ]" >
101+ < ScrollArea ref = { scrollAreaRef } className = "px-4 pt-40 pb-[150px] md:px-6 md:pb-[200px ]" >
104102 < ChatTranscript
105103 hidden = { ! chatOpen }
106104 messages = { messages }
@@ -122,7 +120,12 @@ export const SessionView = ({
122120 ) }
123121 < div className = "bg-background relative mx-auto max-w-2xl pb-3 md:pb-12" >
124122 < Fade bottom className = "absolute inset-x-0 top-0 h-4 -translate-y-full" />
125- < AgentControlBar controls = { controls } onChatOpenChange = { setChatOpen } />
123+ < AgentControlBar
124+ controls = { controls }
125+ isConnectionActive = { isConnectionActive }
126+ onDisconnect = { startDisconnectTransition }
127+ onChatOpenChange = { setChatOpen }
128+ />
126129 </ div >
127130 </ MotionBottom >
128131 </ section >
0 commit comments