Skip to content

Commit fa5595b

Browse files
update @livekit/components-react
1 parent 6946719 commit fa5595b

File tree

6 files changed

+52
-51
lines changed

6 files changed

+52
-51
lines changed

components/app/app.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,18 @@ import { RoomAudioRenderer, StartAudio } from '@livekit/components-react';
44
import type { AppConfig } from '@/app-config';
55
import { ViewController } from '@/components/app/view-controller';
66
import { Toaster } from '@/components/livekit/toaster';
7+
import { useAgentErrors } from '@/hooks/useAgentErrors';
78
import { ConnectionProvider } from '@/hooks/useConnection';
9+
import { useDebugMode } from '@/hooks/useDebug';
10+
11+
const IN_DEVELOPMENT = process.env.NODE_ENV !== 'production';
12+
13+
function AppSetup() {
14+
useDebugMode({ enabled: IN_DEVELOPMENT });
15+
useAgentErrors();
16+
17+
return null;
18+
}
819

920
interface AppProps {
1021
appConfig: AppConfig;
@@ -13,6 +24,7 @@ interface AppProps {
1324
export function App({ appConfig }: AppProps) {
1425
return (
1526
<ConnectionProvider appConfig={appConfig}>
27+
<AppSetup />
1628
<main className="grid h-svh grid-cols-1 place-content-center">
1729
<ViewController appConfig={appConfig} />
1830
</main>

components/app/view-controller.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@ import { AnimatePresence, type AnimationDefinition, motion } from 'motion/react'
55
import type { AppConfig } from '@/app-config';
66
import { SessionView } from '@/components/app/session-view';
77
import { WelcomeView } from '@/components/app/welcome-view';
8-
import { useAgentErrors } from '@/hooks/useAgentErrors';
98
import { useConnection } from '@/hooks/useConnection';
10-
import { useDebugMode } from '@/hooks/useDebug';
11-
12-
const IN_DEVELOPMENT = process.env.NODE_ENV !== 'production';
139

1410
const MotionWelcomeView = motion.create(WelcomeView);
1511
const MotionSessionView = motion.create(SessionView);
@@ -39,9 +35,6 @@ interface ViewControllerProps {
3935
export function ViewController({ appConfig }: ViewControllerProps) {
4036
const { isConnectionActive, connect, onDisconnectTransitionComplete } = useConnection();
4137

42-
useDebugMode({ enabled: IN_DEVELOPMENT });
43-
useAgentErrors();
44-
4538
const handleAnimationComplete = useCallback(
4639
(definition: AnimationDefinition) => {
4740
// manually end the session when the exit animation completes

hooks/useAgentErrors.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useConnection } from './useConnection';
55

66
export function useAgentErrors() {
77
const agent = useAgent();
8-
const { isConnectionActive, disconnect } = useConnection();
8+
const { isConnectionActive, startDisconnectTransition } = useConnection();
99

1010
useEffect(() => {
1111
if (isConnectionActive && agent.state === 'failed') {
@@ -38,7 +38,7 @@ export function useAgentErrors() {
3838
),
3939
});
4040

41-
disconnect();
41+
startDisconnectTransition();
4242
}
43-
}, [agent, isConnectionActive, disconnect]);
43+
}, [agent, isConnectionActive, startDisconnectTransition]);
4444
}

hooks/useConnection.tsx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,32 +66,28 @@ export function ConnectionProvider({ appConfig, children }: ConnectionProviderPr
6666
return TokenSource.endpoint('/api/connection-details');
6767
}, [appConfig]);
6868

69-
const sessionOptions = useMemo(
70-
() => (appConfig.agentName ? { agentName: appConfig.agentName } : undefined),
71-
[appConfig]
69+
const session = useSession(
70+
tokenSource,
71+
appConfig.agentName ? { agentName: appConfig.agentName } : undefined
7272
);
7373

74-
const session = useSession(tokenSource, sessionOptions);
74+
const { start: startSession, end: endSession } = session;
7575

76-
const value = useMemo(
77-
() => ({
76+
const value = useMemo(() => {
77+
return {
7878
isConnectionActive,
7979
connect: () => {
8080
setIsConnectionActive(true);
81-
session.start();
81+
startSession();
8282
},
8383
startDisconnectTransition: () => {
8484
setIsConnectionActive(false);
8585
},
8686
onDisconnectTransitionComplete: () => {
87-
session.end();
87+
endSession();
8888
},
89-
}),
90-
// session object is not a stable reference
91-
// TODO: add session object to dependencies
92-
/* eslint-disable-next-line react-hooks/exhaustive-deps */
93-
[isConnectionActive]
94-
);
89+
};
90+
}, [startSession, endSession, isConnectionActive]);
9591

9692
return (
9793
<SessionProvider session={session}>

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"format:check": "prettier --check ."
1212
},
1313
"dependencies": {
14-
"@livekit/components-react": "0.0.0-20251021151641",
14+
"@livekit/components-react": "^2.9.15",
1515
"@livekit/protocol": "^1.40.0",
1616
"@phosphor-icons/react": "^2.1.8",
1717
"@radix-ui/react-select": "^2.2.5",
@@ -21,7 +21,7 @@
2121
"class-variance-authority": "^0.7.1",
2222
"clsx": "^2.1.1",
2323
"jose": "^6.0.12",
24-
"livekit-client": "^2.15.8",
24+
"livekit-client": "^2.15.15",
2525
"livekit-server-sdk": "^2.13.2",
2626
"mime": "^4.0.7",
2727
"motion": "^12.16.0",

pnpm-lock.yaml

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)