Skip to content

Commit 9e24ef4

Browse files
authored
Expose useIsRecording hook with optional room param (#934)
1 parent 6bbc83b commit 9e24ef4

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

Diff for: .changeset/sixty-years-whisper.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@livekit/components-react": patch
3+
---
4+
5+
Expose useIsRecording hook with optional room param

Diff for: packages/react/etc/components-react.api.md

+3
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,9 @@ export interface UseIsMutedOptions {
822822
participant?: Participant;
823823
}
824824

825+
// @public
826+
export function useIsRecording(room?: Room): boolean;
827+
825828
// @public
826829
export function useIsSpeaking(participant?: Participant): boolean;
827830

Diff for: packages/react/src/hooks/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,4 @@ export * from './useTrackVolume';
5252
export * from './useParticipantTracks';
5353
export * from './useTrackTranscription';
5454
export * from './useParticipantAttributes';
55+
export * from './useIsRecording';

Diff for: packages/react/src/hooks/useIsRecording.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { recordingStatusObservable } from '@livekit/components-core';
22
import * as React from 'react';
3-
import { useRoomContext } from '../context';
3+
import { useEnsureRoom } from '../context';
44
import { useObservableState } from './internal';
55
import { useConnectionState } from './useConnectionStatus';
6+
import type { Room } from 'livekit-client';
67

78
/**
89
* The `useIsRecording` hook returns a `boolean` that indicates if the room is currently being recorded.
@@ -12,11 +13,11 @@ import { useConnectionState } from './useConnectionStatus';
1213
* ```
1314
* @public
1415
*/
15-
export function useIsRecording() {
16-
const room = useRoomContext();
17-
const connectionState = useConnectionState(room);
18-
const observable = React.useMemo(() => recordingStatusObservable(room), [room, connectionState]);
19-
const isRecording = useObservableState(observable, room.isRecording);
16+
export function useIsRecording(room?: Room) {
17+
const r = useEnsureRoom(room);
18+
const connectionState = useConnectionState(r);
19+
const observable = React.useMemo(() => recordingStatusObservable(r), [r, connectionState]);
20+
const isRecording = useObservableState(observable, r.isRecording);
2021

2122
return isRecording;
2223
}

0 commit comments

Comments
 (0)