@fishjam-cloud/react-client 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FishjamProvider.d.ts +1 -2
- package/dist/FishjamProvider.d.ts.map +1 -1
- package/dist/FishjamProvider.js +0 -1
- package/dist/devices/DeviceManager.d.ts +2 -2
- package/dist/devices/DeviceManager.d.ts.map +1 -1
- package/dist/devices/mediaInitializer.d.ts +1 -1
- package/dist/devices/mediaInitializer.d.ts.map +1 -1
- package/dist/hooks/devices/useCamera.d.ts +9 -15
- package/dist/hooks/devices/useCamera.d.ts.map +1 -1
- package/dist/hooks/devices/useCamera.js +28 -1
- package/dist/hooks/devices/useInitializeDevices.d.ts +5 -9
- package/dist/hooks/devices/useInitializeDevices.d.ts.map +1 -1
- package/dist/hooks/devices/useInitializeDevices.js +6 -1
- package/dist/hooks/devices/useMicrophone.d.ts +10 -16
- package/dist/hooks/devices/useMicrophone.d.ts.map +1 -1
- package/dist/hooks/devices/useMicrophone.js +28 -1
- package/dist/hooks/internal/useFishjamClientState.d.ts +5 -4
- package/dist/hooks/internal/useFishjamClientState.d.ts.map +1 -1
- package/dist/hooks/internal/useFishjamClientState.js +2 -2
- package/dist/hooks/internal/useFishjamContext.d.ts +1 -1
- package/dist/hooks/internal/useFishjamContext.d.ts.map +1 -1
- package/dist/hooks/internal/useScreenshareManager.d.ts +38 -2
- package/dist/hooks/internal/useScreenshareManager.d.ts.map +1 -1
- package/dist/hooks/internal/useTrackManager.d.ts.map +1 -1
- package/dist/hooks/internal/useTrackManager.js +31 -25
- package/dist/hooks/useConnection.d.ts +6 -13
- package/dist/hooks/useConnection.d.ts.map +1 -1
- package/dist/hooks/useConnection.js +14 -3
- package/dist/hooks/usePeers.d.ts +6 -17
- package/dist/hooks/usePeers.d.ts.map +1 -1
- package/dist/hooks/usePeers.js +15 -1
- package/dist/hooks/useScreenShare.d.ts +5 -12
- package/dist/hooks/useScreenShare.d.ts.map +1 -1
- package/dist/hooks/useScreenShare.js +34 -1
- package/dist/hooks/useUpdatePeerMetadata.d.ts +3 -0
- package/dist/hooks/useUpdatePeerMetadata.d.ts.map +1 -1
- package/dist/hooks/useUpdatePeerMetadata.js +6 -1
- package/dist/hooks/useVAD.d.ts +15 -2
- package/dist/hooks/useVAD.d.ts.map +1 -1
- package/dist/hooks/useVAD.js +12 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/types/internal.d.ts +5 -13
- package/dist/types/internal.d.ts.map +1 -1
- package/dist/types/public.d.ts +17 -1
- package/dist/types/public.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/track.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -13,7 +13,7 @@ export interface FishjamProviderProps extends PropsWithChildren {
|
|
|
13
13
|
/**
|
|
14
14
|
* Set preferred constraints.
|
|
15
15
|
* @param {MediaStreamConstraints} constraints - The media stream constraints as defined by the Web API.
|
|
16
|
-
* @
|
|
16
|
+
* @see {@link https://udn.realityripple.com/docs/Web/API/MediaStreamConstraints MediaStreamConstraints}
|
|
17
17
|
*/
|
|
18
18
|
constraints?: Pick<MediaStreamConstraints, "audio" | "video">;
|
|
19
19
|
/**
|
|
@@ -37,7 +37,6 @@ export interface FishjamProviderProps extends PropsWithChildren {
|
|
|
37
37
|
/**
|
|
38
38
|
* Provides the Fishjam Context
|
|
39
39
|
* @category Components
|
|
40
|
-
* @param
|
|
41
40
|
*/
|
|
42
41
|
export declare function FishjamProvider(props: FishjamProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
43
42
|
//# sourceMappingURL=FishjamProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FishjamProvider.d.ts","sourceRoot":"","sources":["../src/FishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAAU,MAAM,OAAO,CAAC;AAUvD,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG/F;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACtC;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACxD;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"FishjamProvider.d.ts","sourceRoot":"","sources":["../src/FishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAAU,MAAM,OAAO,CAAC;AAUvD,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG/F;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACtC;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACxD;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA8D1D"}
|
package/dist/FishjamProvider.js
CHANGED
|
@@ -12,7 +12,6 @@ import { mergeWithDefaultBandwitdthLimits } from "./utils/bandwidth";
|
|
|
12
12
|
/**
|
|
13
13
|
* Provides the Fishjam Context
|
|
14
14
|
* @category Components
|
|
15
|
-
* @param
|
|
16
15
|
*/
|
|
17
16
|
export function FishjamProvider(props) {
|
|
18
17
|
const fishjamClientRef = useRef(new FishjamClient({ reconnect: props.reconnect }));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type TypedEmitter from "typed-emitter";
|
|
2
|
-
import type {
|
|
3
|
-
import type { DeviceType, PersistLastDeviceHandlers, TrackMiddleware } from "../types/public";
|
|
2
|
+
import type { DeviceManagerStatus, DeviceState, Media, MediaManager } from "../types/internal";
|
|
3
|
+
import type { DeviceError, DeviceType, PersistLastDeviceHandlers, TrackMiddleware } from "../types/public";
|
|
4
4
|
export type DeviceManagerEvents = {
|
|
5
5
|
managerStarted: (event: DeviceState & {
|
|
6
6
|
constraints: MediaTrackConstraints | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaInitializer.d.ts","sourceRoot":"","sources":["../../src/devices/mediaInitializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mediaInitializer.d.ts","sourceRoot":"","sources":["../../src/devices/mediaInitializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5C,KAAK,gBAAgB,GAAG,UAAU,CAAC,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;AAEhF,KAAK,eAAe,GAAG,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAsB1D,eAAO,MAAM,iBAAiB,gBACf,sBAAsB,iBACrB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,KAC3C,OAAO,CAAC,CAAC,WAAW,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAuB9D,CAAC;AAIF,eAAO,MAAM,kBAAkB,WACrB,WAAW,gBACL,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WACnC,eAAe,EAAE,eACb,gBAAgB,mBACZ,eAAe,KAC/B,OAAO,CAAC,CAAC,WAAW,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAsB9D,CAAC"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import type { DeviceError } from "../../types/internal";
|
|
2
|
-
import type { DeviceItem, TrackMiddleware } from "../../types/public";
|
|
3
1
|
/**
|
|
2
|
+
* This hook can toggle camera on/off, change camera, provides current camera and other.
|
|
4
3
|
* @category Devices
|
|
5
4
|
*/
|
|
6
|
-
export
|
|
5
|
+
export declare function useCamera(): {
|
|
7
6
|
/**
|
|
8
7
|
* Toggles current camera on/off
|
|
9
8
|
*/
|
|
10
|
-
toggleCamera: () => void
|
|
9
|
+
toggleCamera: () => Promise<void>;
|
|
11
10
|
/**
|
|
12
11
|
* Selects the camera device
|
|
13
12
|
*/
|
|
14
|
-
selectCamera: (deviceId
|
|
13
|
+
selectCamera: (deviceId?: string) => Promise<void>;
|
|
15
14
|
/**
|
|
16
15
|
* Indicates which camera is now turned on and streaming
|
|
17
16
|
*/
|
|
18
|
-
activeCamera: DeviceItem | null;
|
|
17
|
+
activeCamera: import("../..").DeviceItem | null;
|
|
19
18
|
/**
|
|
20
19
|
* Indicates whether the microphone is streaming video
|
|
21
20
|
*/
|
|
@@ -27,23 +26,18 @@ export type UseCameraResult = {
|
|
|
27
26
|
/**
|
|
28
27
|
* The currently set camera middleware function
|
|
29
28
|
*/
|
|
30
|
-
currentCameraMiddleware: TrackMiddleware;
|
|
29
|
+
currentCameraMiddleware: import("../..").TrackMiddleware;
|
|
31
30
|
/**
|
|
32
31
|
* Sets the camera middleware
|
|
33
32
|
*/
|
|
34
|
-
setCameraTrackMiddleware: (middleware: TrackMiddleware | null) => Promise<void>;
|
|
33
|
+
setCameraTrackMiddleware: (middleware: import("../..").TrackMiddleware | null) => Promise<void>;
|
|
35
34
|
/**
|
|
36
35
|
* List of available camera devices
|
|
37
36
|
*/
|
|
38
|
-
cameraDevices: DeviceItem[];
|
|
37
|
+
cameraDevices: import("../..").DeviceItem[];
|
|
39
38
|
/**
|
|
40
39
|
* Possible error thrown while setting up the camera
|
|
41
40
|
*/
|
|
42
|
-
cameraDeviceError: DeviceError | null;
|
|
41
|
+
cameraDeviceError: import("../..").DeviceError | null;
|
|
43
42
|
};
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* @category Devices
|
|
47
|
-
*/
|
|
48
|
-
export declare function useCamera(): UseCameraResult;
|
|
49
43
|
//# sourceMappingURL=useCamera.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useCamera.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useCamera.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS;IAKrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;EAGN"}
|
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
import { useDeviceApi } from "../internal/device/useDeviceApi";
|
|
2
2
|
import { useFishjamContext } from "../internal/useFishjamContext";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* This hook can toggle camera on/off, change camera, provides current camera and other.
|
|
5
5
|
* @category Devices
|
|
6
6
|
*/
|
|
7
7
|
export function useCamera() {
|
|
8
8
|
const { videoTrackManager, videoDeviceManagerRef } = useFishjamContext();
|
|
9
9
|
const deviceApi = useDeviceApi({ deviceManager: videoDeviceManagerRef.current });
|
|
10
10
|
return {
|
|
11
|
+
/**
|
|
12
|
+
* Toggles current camera on/off
|
|
13
|
+
*/
|
|
11
14
|
toggleCamera: videoTrackManager.toggleDevice,
|
|
15
|
+
/**
|
|
16
|
+
* Selects the camera device
|
|
17
|
+
*/
|
|
12
18
|
selectCamera: videoTrackManager.selectDevice,
|
|
19
|
+
/**
|
|
20
|
+
* Indicates which camera is now turned on and streaming
|
|
21
|
+
*/
|
|
13
22
|
activeCamera: deviceApi.activeDevice,
|
|
23
|
+
/**
|
|
24
|
+
* Indicates whether the microphone is streaming video
|
|
25
|
+
*/
|
|
14
26
|
isCameraOn: !!deviceApi.mediaStream,
|
|
27
|
+
/**
|
|
28
|
+
* The MediaStream object containing the current stream
|
|
29
|
+
*/
|
|
15
30
|
cameraStream: deviceApi.mediaStream,
|
|
31
|
+
/**
|
|
32
|
+
* The currently set camera middleware function
|
|
33
|
+
*/
|
|
16
34
|
currentCameraMiddleware: deviceApi.currentMiddleware,
|
|
35
|
+
/**
|
|
36
|
+
* Sets the camera middleware
|
|
37
|
+
*/
|
|
17
38
|
setCameraTrackMiddleware: videoTrackManager.setTrackMiddleware,
|
|
39
|
+
/**
|
|
40
|
+
* List of available camera devices
|
|
41
|
+
*/
|
|
18
42
|
cameraDevices: deviceApi.devices,
|
|
43
|
+
/**
|
|
44
|
+
* Possible error thrown while setting up the camera
|
|
45
|
+
*/
|
|
19
46
|
cameraDeviceError: deviceApi.deviceError,
|
|
20
47
|
};
|
|
21
48
|
}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @category Devices
|
|
3
|
-
*/
|
|
4
1
|
export type UseInitializeDevicesParams = {
|
|
5
2
|
enableVideo?: boolean;
|
|
6
3
|
enableAudio?: boolean;
|
|
7
4
|
};
|
|
8
5
|
/**
|
|
6
|
+
* Hook allows you to initialize access to the devices before joining the room.
|
|
9
7
|
* @category Devices
|
|
10
8
|
*/
|
|
11
|
-
export
|
|
9
|
+
export declare const useInitializeDevices: () => {
|
|
10
|
+
/**
|
|
11
|
+
* Initialize access to the devices before joining the room
|
|
12
|
+
*/
|
|
12
13
|
initializeDevices: (params?: UseInitializeDevicesParams) => Promise<void>;
|
|
13
14
|
};
|
|
14
|
-
/**
|
|
15
|
-
* Hook allows you to initialize access to the devices before joining the room.
|
|
16
|
-
* @category Devices
|
|
17
|
-
*/
|
|
18
|
-
export declare const useInitializeDevices: () => UseInitializeDevicesResult;
|
|
19
15
|
//# sourceMappingURL=useInitializeDevices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitializeDevices.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useInitializeDevices.ts"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"useInitializeDevices.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useInitializeDevices.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;IAwD7B;;OAEG;iCAvD8B,0BAA0B,KAAK,OAAO,CAAC,IAAI,CAAC;CA0DhF,CAAC"}
|
|
@@ -37,5 +37,10 @@ export const useInitializeDevices = () => {
|
|
|
37
37
|
videoManager.initialize(stream, stream?.getVideoTracks()?.[0] ?? null, videoDevices, !!constraints.video, deviceErrors.video);
|
|
38
38
|
audioManager.initialize(stream, stream?.getAudioTracks()?.[0] ?? null, audioDevices, !!constraints.audio, deviceErrors.audio);
|
|
39
39
|
}, [videoDeviceManagerRef, audioDeviceManagerRef, hasDevicesBeenInitializedRef]);
|
|
40
|
-
return {
|
|
40
|
+
return {
|
|
41
|
+
/**
|
|
42
|
+
* Initialize access to the devices before joining the room
|
|
43
|
+
*/
|
|
44
|
+
initializeDevices,
|
|
45
|
+
};
|
|
41
46
|
};
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import type { DeviceError } from "../../types/internal";
|
|
2
|
-
import type { DeviceItem, TrackMiddleware } from "../../types/public";
|
|
3
1
|
/**
|
|
2
|
+
* Manage microphone
|
|
4
3
|
* @category Devices
|
|
5
4
|
*/
|
|
6
|
-
export
|
|
5
|
+
export declare function useMicrophone(): {
|
|
7
6
|
/** Toggles current microphone on/off */
|
|
8
|
-
toggleMicrophone: () => void
|
|
7
|
+
toggleMicrophone: () => Promise<void>;
|
|
9
8
|
/** Mutes/unmutes the microphone */
|
|
10
|
-
toggleMicrophoneMute: () => void
|
|
9
|
+
toggleMicrophoneMute: () => Promise<void>;
|
|
11
10
|
/** Selects the microphone device */
|
|
12
|
-
selectMicrophone: (deviceId
|
|
11
|
+
selectMicrophone: (deviceId?: string) => Promise<void>;
|
|
13
12
|
/**
|
|
14
13
|
* Indicates which microphone is now turned on and streaming audio
|
|
15
14
|
*/
|
|
16
|
-
activeMicrophone: DeviceItem | null;
|
|
15
|
+
activeMicrophone: import("../..").DeviceItem | null;
|
|
17
16
|
/**
|
|
18
17
|
* Indicates whether the microphone is streaming audio
|
|
19
18
|
*/
|
|
@@ -29,23 +28,18 @@ export type UseMicrophoneResult = {
|
|
|
29
28
|
/**
|
|
30
29
|
* The currently set microphone middleware function
|
|
31
30
|
*/
|
|
32
|
-
currentMicrophoneMiddleware: TrackMiddleware;
|
|
31
|
+
currentMicrophoneMiddleware: import("../..").TrackMiddleware;
|
|
33
32
|
/**
|
|
34
33
|
* Sets the microphone middleware
|
|
35
34
|
*/
|
|
36
|
-
setMicrophoneTrackMiddleware: (middleware: TrackMiddleware | null) => Promise<void>;
|
|
35
|
+
setMicrophoneTrackMiddleware: (middleware: import("../..").TrackMiddleware | null) => Promise<void>;
|
|
37
36
|
/**
|
|
38
37
|
* List of available microphone devices
|
|
39
38
|
*/
|
|
40
|
-
microphoneDevices: DeviceItem[];
|
|
39
|
+
microphoneDevices: import("../..").DeviceItem[];
|
|
41
40
|
/**
|
|
42
41
|
* Possible error thrown while setting up the microphone
|
|
43
42
|
*/
|
|
44
|
-
microphoneDeviceError: DeviceError | null;
|
|
43
|
+
microphoneDeviceError: import("../..").DeviceError | null;
|
|
45
44
|
};
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* @category Devices
|
|
49
|
-
*/
|
|
50
|
-
export declare function useMicrophone(): UseMicrophoneResult;
|
|
51
45
|
//# sourceMappingURL=useMicrophone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useMicrophone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useMicrophone.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,aAAa;IAKzB,wCAAwC;;IAExC,mCAAmC;;IAEnC,oCAAoC;;IAEpC;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;EAGN"}
|
|
@@ -1,23 +1,50 @@
|
|
|
1
1
|
import { useDeviceApi } from "../internal/device/useDeviceApi";
|
|
2
2
|
import { useFishjamContext } from "../internal/useFishjamContext";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Manage microphone
|
|
5
5
|
* @category Devices
|
|
6
6
|
*/
|
|
7
7
|
export function useMicrophone() {
|
|
8
8
|
const { audioTrackManager, audioDeviceManagerRef } = useFishjamContext();
|
|
9
9
|
const deviceApi = useDeviceApi({ deviceManager: audioDeviceManagerRef.current });
|
|
10
10
|
return {
|
|
11
|
+
/** Toggles current microphone on/off */
|
|
11
12
|
toggleMicrophone: audioTrackManager.toggleDevice,
|
|
13
|
+
/** Mutes/unmutes the microphone */
|
|
12
14
|
toggleMicrophoneMute: audioTrackManager.toggleMute,
|
|
15
|
+
/** Selects the microphone device */
|
|
13
16
|
selectMicrophone: audioTrackManager.selectDevice,
|
|
17
|
+
/**
|
|
18
|
+
* Indicates which microphone is now turned on and streaming audio
|
|
19
|
+
*/
|
|
14
20
|
activeMicrophone: deviceApi.activeDevice,
|
|
21
|
+
/**
|
|
22
|
+
* Indicates whether the microphone is streaming audio
|
|
23
|
+
*/
|
|
15
24
|
isMicrophoneOn: !!deviceApi.mediaStream,
|
|
25
|
+
/**
|
|
26
|
+
* Indicates whether the microphone is muted
|
|
27
|
+
*/
|
|
16
28
|
isMicrophoneMuted: audioTrackManager.paused,
|
|
29
|
+
/**
|
|
30
|
+
* The MediaStream object containing the current audio stream
|
|
31
|
+
*/
|
|
17
32
|
microphoneStream: deviceApi.mediaStream,
|
|
33
|
+
/**
|
|
34
|
+
* The currently set microphone middleware function
|
|
35
|
+
*/
|
|
18
36
|
currentMicrophoneMiddleware: deviceApi.currentMiddleware,
|
|
37
|
+
/**
|
|
38
|
+
* Sets the microphone middleware
|
|
39
|
+
*/
|
|
19
40
|
setMicrophoneTrackMiddleware: audioTrackManager.setTrackMiddleware,
|
|
41
|
+
/**
|
|
42
|
+
* List of available microphone devices
|
|
43
|
+
*/
|
|
20
44
|
microphoneDevices: deviceApi.devices,
|
|
45
|
+
/**
|
|
46
|
+
* Possible error thrown while setting up the microphone
|
|
47
|
+
*/
|
|
21
48
|
microphoneDeviceError: deviceApi.deviceError,
|
|
22
49
|
};
|
|
23
50
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { Component, FishjamClient, GenericMetadata
|
|
2
|
-
import type {
|
|
1
|
+
import type { Component, FishjamClient, GenericMetadata } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import type { BrandedPeer } from "../../types/internal";
|
|
3
|
+
import type { PeerId } from "../../types/public";
|
|
3
4
|
export interface FishjamClientState<P = GenericMetadata, S = GenericMetadata> {
|
|
4
|
-
peers: Record<PeerId,
|
|
5
|
+
peers: Record<PeerId, BrandedPeer<P, S>>;
|
|
5
6
|
components: Record<string, Component>;
|
|
6
|
-
localPeer:
|
|
7
|
+
localPeer: BrandedPeer<P, S> | null;
|
|
7
8
|
isReconnecting: boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare function useFishjamClientState<P, S>(fishjamClient: FishjamClient<P, S>): FishjamClientState<P, S>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFishjamClientState.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamClientState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAiB,
|
|
1
|
+
{"version":3,"file":"useFishjamClientState.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamClientState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAiB,MAAM,0BAA0B,CAAC;AAGzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0CjD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC,GAAG,eAAe;IAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;CACzB;AAMD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAwCxG"}
|
|
@@ -63,9 +63,9 @@ export function useFishjamClientState(fishjamClient) {
|
|
|
63
63
|
const localPeer = client.getLocalPeer();
|
|
64
64
|
const isReconnecting = client.isReconnecting();
|
|
65
65
|
lastSnapshotRef.current = {
|
|
66
|
-
peers,
|
|
66
|
+
peers: peers,
|
|
67
67
|
components,
|
|
68
|
-
localPeer,
|
|
68
|
+
localPeer: localPeer,
|
|
69
69
|
isReconnecting,
|
|
70
70
|
};
|
|
71
71
|
mutationRef.current = false;
|
|
@@ -3,8 +3,8 @@ import { type MutableRefObject } from "react";
|
|
|
3
3
|
import type { DeviceManager } from "../../devices/DeviceManager";
|
|
4
4
|
import type { TrackManager } from "../../types/internal";
|
|
5
5
|
import type { BandwidthLimits, PeerStatus } from "../../types/public";
|
|
6
|
-
import type { UseScreenshareResult } from "../useScreenShare";
|
|
7
6
|
import type { FishjamClientState } from "./useFishjamClientState";
|
|
7
|
+
import type { UseScreenshareResult } from "./useScreenshareManager";
|
|
8
8
|
export type FishjamContextType = {
|
|
9
9
|
fishjamClientRef: MutableRefObject<FishjamClient>;
|
|
10
10
|
videoDeviceManagerRef: MutableRefObject<DeviceManager>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFishjamContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAiB,KAAK,gBAAgB,EAAc,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useFishjamContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAiB,KAAK,gBAAgB,EAAc,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClD,qBAAqB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvD,qBAAqB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvD,4BAA4B,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxD,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,EAAE,YAAY,CAAC;IAChC,iBAAiB,EAAE,YAAY,CAAC;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,cAAc,oDAAiD,CAAC;AAE7E,wBAAgB,iBAAiB,IAGb,kBAAkB,CACrC"}
|
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
import type { FishjamClient } from "@fishjam-cloud/ts-client";
|
|
2
|
-
import type { PeerStatus } from "../../types/public";
|
|
3
|
-
|
|
2
|
+
import type { PeerStatus, TracksMiddleware } from "../../types/public";
|
|
3
|
+
export type UseScreenshareResult = {
|
|
4
|
+
/**
|
|
5
|
+
* Invokes the screen sharing prompt in the user's browser and starts streaming upon approval.
|
|
6
|
+
*/
|
|
7
|
+
startStreaming: (props?: {
|
|
8
|
+
audioConstraints?: boolean | MediaTrackConstraints;
|
|
9
|
+
videoConstraints?: boolean | MediaTrackConstraints;
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Stops the stream and cancels browser screen sharing.
|
|
13
|
+
*/
|
|
14
|
+
stopStreaming: () => Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* The MediaStream object containing both tracks.
|
|
17
|
+
*/
|
|
18
|
+
stream: MediaStream | null;
|
|
19
|
+
/**
|
|
20
|
+
* The separate video MediaStreamTrack.
|
|
21
|
+
*/
|
|
22
|
+
videoTrack: MediaStreamTrack | null;
|
|
23
|
+
/**
|
|
24
|
+
* The separate audio MediaStreamTrack.
|
|
25
|
+
*/
|
|
26
|
+
audioTrack: MediaStreamTrack | null;
|
|
27
|
+
/**
|
|
28
|
+
* The middleware currently assigned to process the tracks.
|
|
29
|
+
* A screenshare may include both audio and video tracks, and this middleware is capable of processing
|
|
30
|
+
* each track type.
|
|
31
|
+
*/
|
|
32
|
+
currentTracksMiddleware: TracksMiddleware | null;
|
|
33
|
+
/**
|
|
34
|
+
* Sets the middleware responsible for processing the tracks.
|
|
35
|
+
* @param middleware The middleware to set, which can be a TracksMiddleware instance or null to remove the middleware.
|
|
36
|
+
* @returns A Promise that resolves once the middleware is successfully set.
|
|
37
|
+
*/
|
|
38
|
+
setTracksMiddleware: (middleware: TracksMiddleware | null) => Promise<void>;
|
|
39
|
+
};
|
|
4
40
|
interface ScreenShareManagerProps {
|
|
5
41
|
fishjamClient: FishjamClient;
|
|
6
42
|
getCurrentPeerStatus: () => PeerStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreenshareManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useScreenshareManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"useScreenshareManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useScreenshareManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE;QACvB,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;QACnD,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;KACpD,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E,CAAC;AAEF,UAAU,uBAAuB;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,MAAM,UAAU,CAAC;CACxC;AAED,eAAO,MAAM,qBAAqB,6CAG/B,uBAAuB,KAAG,oBAmI5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTrackManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useTrackManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,0BAA0B,CAAC;AAG3F,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAGrG,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,oBAAoB,EAAE,MAAM,UAAU,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAWD,eAAO,MAAM,eAAe,qFAMzB,kBAAkB,KAAG,
|
|
1
|
+
{"version":3,"file":"useTrackManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useTrackManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,0BAA0B,CAAC;AAG3F,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAGrG,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,oBAAoB,EAAE,MAAM,UAAU,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAWD,eAAO,MAAM,eAAe,qFAMzB,kBAAkB,KAAG,YA8KvB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Variant } from "@fishjam-cloud/ts-client";
|
|
2
|
-
import { useCallback, useEffect,
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
3
|
import { getConfigAndBandwidthFromProps, getRemoteOrLocalTrack } from "../../utils/track";
|
|
4
4
|
const TRACK_TYPE_TO_DEVICE = {
|
|
5
5
|
video: "camera",
|
|
@@ -7,21 +7,23 @@ const TRACK_TYPE_TO_DEVICE = {
|
|
|
7
7
|
};
|
|
8
8
|
const getDeviceType = (mediaManager) => TRACK_TYPE_TO_DEVICE[mediaManager.getDeviceType()];
|
|
9
9
|
export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus, bandwidthLimits, streamConfig, }) => {
|
|
10
|
-
const
|
|
10
|
+
const currentTrackIdRef = useRef(null);
|
|
11
11
|
const [paused, setPaused] = useState(false);
|
|
12
|
-
const currentTrack = useMemo(() => getRemoteOrLocalTrack(tsClient, currentTrackId), [tsClient, currentTrackId]);
|
|
13
12
|
async function setTrackMiddleware(middleware) {
|
|
14
13
|
mediaManager.setTrackMiddleware(middleware);
|
|
15
14
|
await refreshStreamedTrack();
|
|
16
15
|
}
|
|
17
16
|
async function selectDevice(deviceId) {
|
|
18
17
|
await mediaManager?.start(deviceId);
|
|
18
|
+
const currentTrackId = currentTrackIdRef.current;
|
|
19
19
|
if (!currentTrackId)
|
|
20
20
|
return;
|
|
21
21
|
const newTrack = mediaManager.getMedia()?.track ?? null;
|
|
22
22
|
await tsClient.replaceTrack(currentTrackId, newTrack);
|
|
23
23
|
}
|
|
24
|
+
const getCurrentTrackId = useCallback(() => getRemoteOrLocalTrack(tsClient, currentTrackIdRef.current)?.trackId, [tsClient]);
|
|
24
25
|
const startStreaming = useCallback(async (props = { simulcast: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH] }) => {
|
|
26
|
+
const currentTrackId = currentTrackIdRef.current;
|
|
25
27
|
if (currentTrackId)
|
|
26
28
|
throw Error("Track already added");
|
|
27
29
|
const media = mediaManager.getMedia();
|
|
@@ -31,7 +33,7 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
31
33
|
if (track)
|
|
32
34
|
return track.trackId;
|
|
33
35
|
// see `getRemoteOrLocalTrackContext()` explanation
|
|
34
|
-
|
|
36
|
+
currentTrackIdRef.current = media.track.id;
|
|
35
37
|
const deviceType = getDeviceType(mediaManager);
|
|
36
38
|
const trackMetadata = { type: deviceType, paused: false };
|
|
37
39
|
const displayName = tsClient.getLocalPeer()?.metadata?.peer?.displayName;
|
|
@@ -40,56 +42,61 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
40
42
|
}
|
|
41
43
|
const [maxBandwidth, simulcastConfig] = getConfigAndBandwidthFromProps(props.simulcast, bandwidthLimits);
|
|
42
44
|
const remoteTrackId = await tsClient.addTrack(media.track, trackMetadata, simulcastConfig, maxBandwidth);
|
|
43
|
-
|
|
45
|
+
currentTrackIdRef.current = remoteTrackId;
|
|
44
46
|
setPaused(false);
|
|
45
47
|
return remoteTrackId;
|
|
46
|
-
}, [
|
|
48
|
+
}, [mediaManager, tsClient, bandwidthLimits]);
|
|
47
49
|
const refreshStreamedTrack = useCallback(async () => {
|
|
48
|
-
|
|
50
|
+
const trackId = getCurrentTrackId();
|
|
51
|
+
if (!trackId)
|
|
49
52
|
return;
|
|
50
53
|
const newTrack = mediaManager.getMedia()?.track ?? null;
|
|
51
54
|
if (!newTrack)
|
|
52
55
|
throw Error("New track is empty");
|
|
53
|
-
return tsClient.replaceTrack(
|
|
54
|
-
}, [
|
|
56
|
+
return tsClient.replaceTrack(trackId, newTrack);
|
|
57
|
+
}, [getCurrentTrackId, mediaManager, tsClient]);
|
|
55
58
|
const pauseStreaming = useCallback(async () => {
|
|
56
|
-
|
|
59
|
+
const trackId = getCurrentTrackId();
|
|
60
|
+
if (!trackId)
|
|
57
61
|
return;
|
|
58
62
|
setPaused(true);
|
|
59
|
-
await tsClient.replaceTrack(
|
|
63
|
+
await tsClient.replaceTrack(trackId, null);
|
|
60
64
|
const deviceType = getDeviceType(mediaManager);
|
|
61
65
|
const trackMetadata = { type: deviceType, paused: true };
|
|
62
|
-
return tsClient.updateTrackMetadata(
|
|
63
|
-
}, [
|
|
66
|
+
return tsClient.updateTrackMetadata(trackId, trackMetadata);
|
|
67
|
+
}, [mediaManager, getCurrentTrackId, tsClient]);
|
|
64
68
|
const resumeStreaming = useCallback(async () => {
|
|
65
|
-
|
|
69
|
+
const trackId = getCurrentTrackId();
|
|
70
|
+
if (!trackId)
|
|
66
71
|
return;
|
|
67
72
|
const media = mediaManager.getMedia();
|
|
68
73
|
const deviceType = getDeviceType(mediaManager);
|
|
69
74
|
if (!media)
|
|
70
75
|
throw Error("Device is unavailable");
|
|
71
76
|
setPaused(false);
|
|
72
|
-
await tsClient.replaceTrack(
|
|
77
|
+
await tsClient.replaceTrack(trackId, media.track);
|
|
73
78
|
const trackMetadata = { type: deviceType, paused: false };
|
|
74
|
-
return tsClient.updateTrackMetadata(
|
|
75
|
-
}, [
|
|
79
|
+
return tsClient.updateTrackMetadata(trackId, trackMetadata);
|
|
80
|
+
}, [mediaManager, tsClient, getCurrentTrackId]);
|
|
76
81
|
const stream = useCallback(async () => {
|
|
77
82
|
if (getCurrentPeerStatus() !== "connected")
|
|
78
83
|
return;
|
|
79
|
-
|
|
84
|
+
const trackId = getRemoteOrLocalTrack(tsClient, currentTrackIdRef.current)?.trackId;
|
|
85
|
+
if (trackId) {
|
|
80
86
|
await resumeStreaming();
|
|
81
87
|
}
|
|
82
88
|
else {
|
|
83
89
|
await startStreaming();
|
|
84
90
|
}
|
|
85
|
-
}, [
|
|
91
|
+
}, [tsClient, getCurrentPeerStatus, resumeStreaming, startStreaming]);
|
|
86
92
|
const toggle = useCallback(async (mode) => {
|
|
87
93
|
const mediaStream = mediaManager.getMedia()?.stream;
|
|
88
94
|
const track = mediaManager.getMedia()?.track ?? null;
|
|
89
95
|
const enabled = Boolean(track?.enabled);
|
|
96
|
+
const trackId = getRemoteOrLocalTrack(tsClient, currentTrackIdRef.current)?.trackId;
|
|
90
97
|
if (mediaStream && enabled) {
|
|
91
98
|
mediaManager.disable();
|
|
92
|
-
if (
|
|
99
|
+
if (trackId) {
|
|
93
100
|
await pauseStreaming();
|
|
94
101
|
}
|
|
95
102
|
if (mode === "hard") {
|
|
@@ -104,7 +111,7 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
104
111
|
await mediaManager.start();
|
|
105
112
|
await stream();
|
|
106
113
|
}
|
|
107
|
-
}, [
|
|
114
|
+
}, [tsClient, mediaManager, pauseStreaming, stream]);
|
|
108
115
|
/**
|
|
109
116
|
* @see {@link TrackManager#toggleMute} for more details.
|
|
110
117
|
*/
|
|
@@ -121,7 +128,7 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
121
128
|
};
|
|
122
129
|
const onLeftRoom = () => {
|
|
123
130
|
setPaused(true);
|
|
124
|
-
|
|
131
|
+
currentTrackIdRef.current = null;
|
|
125
132
|
};
|
|
126
133
|
tsClient.on("joined", onJoinedRoom);
|
|
127
134
|
tsClient.on("disconnected", onLeftRoom);
|
|
@@ -129,11 +136,10 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
129
136
|
tsClient.off("joined", onJoinedRoom);
|
|
130
137
|
tsClient.off("disconnected", onLeftRoom);
|
|
131
138
|
};
|
|
132
|
-
}, [mediaManager, startStreaming, tsClient, streamConfig
|
|
139
|
+
}, [mediaManager, startStreaming, tsClient, streamConfig]);
|
|
133
140
|
return {
|
|
134
|
-
currentTrack,
|
|
135
|
-
setTrackMiddleware,
|
|
136
141
|
paused,
|
|
142
|
+
setTrackMiddleware,
|
|
137
143
|
selectDevice,
|
|
138
144
|
toggleMute,
|
|
139
145
|
toggleDevice,
|
|
@@ -15,15 +15,15 @@ export interface JoinRoomConfig<PeerMetadata extends GenericMetadata = GenericMe
|
|
|
15
15
|
peerMetadata?: PeerMetadata;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
+
* Hook allows to join or leave a room and check the current connection status.
|
|
18
19
|
* @category Connection
|
|
20
|
+
* @group Hooks
|
|
19
21
|
*/
|
|
20
|
-
export
|
|
22
|
+
export declare function useConnection(): {
|
|
21
23
|
/**
|
|
22
24
|
* Join room and start streaming camera and microphone
|
|
23
|
-
*
|
|
24
|
-
* @param {JoinRoomConfig}
|
|
25
25
|
*/
|
|
26
|
-
joinRoom: <PeerMetadata extends GenericMetadata = GenericMetadata>(
|
|
26
|
+
joinRoom: <PeerMetadata extends GenericMetadata = GenericMetadata>({ url, peerToken, peerMetadata, }: JoinRoomConfig<PeerMetadata>) => Promise<void>;
|
|
27
27
|
/**
|
|
28
28
|
* Leave room and stop streaming
|
|
29
29
|
*/
|
|
@@ -34,13 +34,6 @@ export interface UseConnectionResult {
|
|
|
34
34
|
peerStatus: PeerStatus;
|
|
35
35
|
/**
|
|
36
36
|
* Current reconnection status
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Hook allows to join or leave a room and check the current connection status.
|
|
42
|
-
* @category Connection
|
|
43
|
-
* @returns {UseConnectionResult}
|
|
44
|
-
*/
|
|
45
|
-
export declare function useConnection(): UseConnectionResult;
|
|
37
|
+
*/ reconnectionStatus: ReconnectionStatus;
|
|
38
|
+
};
|
|
46
39
|
//# sourceMappingURL=useConnection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,WAAW,cAAc,CAAC,YAAY,SAAS,eAAe,GAAG,eAAe;IACpF;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED
|
|
1
|
+
{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,WAAW,cAAc,CAAC,YAAY,SAAS,eAAe,GAAG,eAAe;IACpF;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,aAAa;IAsBzB;;OAEG;eAjBF,YAAY,SAAS,eAAe,uDAIlC,cAAc,CAAC,YAAY,CAAC;IAe/B;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;EAEN"}
|
|
@@ -4,21 +4,32 @@ import { useReconnection } from "./internal/useReconnection";
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook allows to join or leave a room and check the current connection status.
|
|
6
6
|
* @category Connection
|
|
7
|
-
* @
|
|
7
|
+
* @group Hooks
|
|
8
8
|
*/
|
|
9
9
|
export function useConnection() {
|
|
10
10
|
const context = useFishjamContext();
|
|
11
11
|
const client = context.fishjamClientRef.current;
|
|
12
12
|
const reconnectionStatus = useReconnection();
|
|
13
|
-
const joinRoom = useCallback(({ url, peerToken, peerMetadata }) => client.connect({ url, token: peerToken, peerMetadata: peerMetadata ?? {} }), [client]);
|
|
13
|
+
const joinRoom = useCallback(({ url, peerToken, peerMetadata, }) => client.connect({ url, token: peerToken, peerMetadata: peerMetadata ?? {} }), [client]);
|
|
14
14
|
const leaveRoom = useCallback(() => {
|
|
15
15
|
client.disconnect();
|
|
16
16
|
}, [client]);
|
|
17
17
|
const peerStatus = context.peerStatus;
|
|
18
18
|
return {
|
|
19
|
+
/**
|
|
20
|
+
* Join room and start streaming camera and microphone
|
|
21
|
+
*/
|
|
19
22
|
joinRoom,
|
|
23
|
+
/**
|
|
24
|
+
* Leave room and stop streaming
|
|
25
|
+
*/
|
|
20
26
|
leaveRoom,
|
|
27
|
+
/**
|
|
28
|
+
* Current peer connection status
|
|
29
|
+
*/
|
|
21
30
|
peerStatus,
|
|
22
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Current reconnection status
|
|
33
|
+
*/ reconnectionStatus,
|
|
23
34
|
};
|
|
24
35
|
}
|
package/dist/hooks/usePeers.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { Metadata } from "@fishjam-cloud/ts-client";
|
|
2
|
-
import type { PeerId } from "../types/
|
|
3
|
-
import type { Track } from "../types/public";
|
|
2
|
+
import type { PeerId, Track } from "../types/public";
|
|
4
3
|
/**
|
|
5
4
|
*
|
|
6
|
-
* @category Connection
|
|
7
5
|
* @typeParam PeerMetadata Type of metadata set by peer while connecting to a room.
|
|
8
6
|
* @typeParam ServerMetadata Type of metadata set by the server while creating a peer.
|
|
9
7
|
*/
|
|
@@ -17,21 +15,21 @@ export type PeerWithTracks<PeerMetadata, ServerMetadata> = {
|
|
|
17
15
|
screenShareAudioTrack?: Track;
|
|
18
16
|
};
|
|
19
17
|
/**
|
|
18
|
+
* Hook allows to access id, tracks and metadata of the local and remote peers.
|
|
20
19
|
*
|
|
21
20
|
* @category Connection
|
|
21
|
+
* @group Hooks
|
|
22
22
|
* @typeParam PeerMetadata Type of metadata set by peer while connecting to a room.
|
|
23
23
|
* @typeParam ServerMetadata Type of metadata set by the server while creating a peer.
|
|
24
24
|
*/
|
|
25
|
-
export
|
|
25
|
+
export declare function usePeers<PeerMetadata = Record<string, unknown>, ServerMetadata = Record<string, unknown>>(): {
|
|
26
26
|
/**
|
|
27
27
|
* The local peer with distinguished tracks (camera, microphone, screen share).
|
|
28
28
|
* Will be null if the local peer is not found.
|
|
29
|
-
*/
|
|
30
|
-
localPeer: PeerWithTracks<PeerMetadata, ServerMetadata> | null;
|
|
29
|
+
*/ localPeer: PeerWithTracks<PeerMetadata, ServerMetadata> | null;
|
|
31
30
|
/**
|
|
32
31
|
* Array of remote peers with distinguished tracks (camera, microphone, screen share).
|
|
33
|
-
*/
|
|
34
|
-
remotePeers: PeerWithTracks<PeerMetadata, ServerMetadata>[];
|
|
32
|
+
*/ remotePeers: PeerWithTracks<PeerMetadata, ServerMetadata>[];
|
|
35
33
|
/**
|
|
36
34
|
* @deprecated Use remotePeers instead
|
|
37
35
|
* Legacy array containing remote peers.
|
|
@@ -39,13 +37,4 @@ export type UsePeersResult<PeerMetadata, ServerMetadata> = {
|
|
|
39
37
|
*/
|
|
40
38
|
peers: PeerWithTracks<PeerMetadata, ServerMetadata>[];
|
|
41
39
|
};
|
|
42
|
-
/**
|
|
43
|
-
* Hook allows to access id, tracks and metadata of the local and remote peers.
|
|
44
|
-
*
|
|
45
|
-
* @category Connection
|
|
46
|
-
* @group Hooks
|
|
47
|
-
* @typeParam PeerMetadata Type of metadata set by peer while connecting to a room.
|
|
48
|
-
* @typeParam ServerMetadata Type of metadata set by the server while creating a peer.
|
|
49
|
-
*/
|
|
50
|
-
export declare function usePeers<PeerMetadata = Record<string, unknown>, ServerMetadata = Record<string, unknown>>(): UsePeersResult<PeerMetadata, ServerMetadata>;
|
|
51
40
|
//# sourceMappingURL=usePeers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,QAAQ,EAAqC,MAAM,0BAA0B,CAAC;AAGjH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAW,MAAM,iBAAiB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,YAAY,EAAE,cAAc,IAAI;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,qBAAqB,CAAC,EAAE,KAAK,CAAC;IAC9B,qBAAqB,CAAC,EAAE,KAAK,CAAC;CAC/B,CAAC;AAgCF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAcrG;;;OAGG;IACH;;OAEG;IACH;;;;OAIG;;EAGN"}
|
package/dist/hooks/usePeers.js
CHANGED
|
@@ -39,5 +39,19 @@ export function usePeers() {
|
|
|
39
39
|
? getPeerWithDistinguishedTracks(clientState.localPeer)
|
|
40
40
|
: null;
|
|
41
41
|
const remotePeers = Object.values(clientState.peers).map((peer) => getPeerWithDistinguishedTracks(peer));
|
|
42
|
-
return {
|
|
42
|
+
return {
|
|
43
|
+
/**
|
|
44
|
+
* The local peer with distinguished tracks (camera, microphone, screen share).
|
|
45
|
+
* Will be null if the local peer is not found.
|
|
46
|
+
*/ localPeer,
|
|
47
|
+
/**
|
|
48
|
+
* Array of remote peers with distinguished tracks (camera, microphone, screen share).
|
|
49
|
+
*/ remotePeers,
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated Use remotePeers instead
|
|
52
|
+
* Legacy array containing remote peers.
|
|
53
|
+
* This property will be removed in future versions.
|
|
54
|
+
*/
|
|
55
|
+
peers: remotePeers,
|
|
56
|
+
};
|
|
43
57
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { TracksMiddleware } from "../types/public";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* Hook to enable screen sharing within a room and manage the existing stream.
|
|
4
3
|
* @category Devices
|
|
5
|
-
* @group
|
|
4
|
+
* @group Hooks
|
|
6
5
|
*/
|
|
7
|
-
export
|
|
6
|
+
export declare const useScreenShare: () => {
|
|
8
7
|
/**
|
|
9
8
|
* Invokes the screen sharing prompt in the user's browser and starts streaming upon approval.
|
|
10
9
|
*/
|
|
@@ -33,18 +32,12 @@ export type UseScreenshareResult = {
|
|
|
33
32
|
* A screenshare may include both audio and video tracks, and this middleware is capable of processing
|
|
34
33
|
* each track type.
|
|
35
34
|
*/
|
|
36
|
-
currentTracksMiddleware: TracksMiddleware | null;
|
|
35
|
+
currentTracksMiddleware: import("..").TracksMiddleware | null;
|
|
37
36
|
/**
|
|
38
37
|
* Sets the middleware responsible for processing the tracks.
|
|
39
38
|
* @param middleware The middleware to set, which can be a TracksMiddleware instance or null to remove the middleware.
|
|
40
39
|
* @returns A Promise that resolves once the middleware is successfully set.
|
|
41
40
|
*/
|
|
42
|
-
setTracksMiddleware: (middleware: TracksMiddleware | null) => Promise<void>;
|
|
41
|
+
setTracksMiddleware: (middleware: import("..").TracksMiddleware | null) => Promise<void>;
|
|
43
42
|
};
|
|
44
|
-
/**
|
|
45
|
-
* Hook to enable screen sharing within a room and manage the existing stream.
|
|
46
|
-
* @category Devices
|
|
47
|
-
* @group Hooks
|
|
48
|
-
*/
|
|
49
|
-
export declare const useScreenShare: () => UseScreenshareResult;
|
|
50
43
|
//# sourceMappingURL=useScreenShare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,cAAc;IAIvB;;OAEG;;wBAC2C,CAAC;wBAEP,CAAA;;IADxC;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;CAGN,CAAC"}
|
|
@@ -6,5 +6,38 @@ import { useFishjamContext } from "./internal/useFishjamContext";
|
|
|
6
6
|
*/
|
|
7
7
|
export const useScreenShare = () => {
|
|
8
8
|
const { screenShareManager } = useFishjamContext();
|
|
9
|
-
return
|
|
9
|
+
return {
|
|
10
|
+
/**
|
|
11
|
+
* Invokes the screen sharing prompt in the user's browser and starts streaming upon approval.
|
|
12
|
+
*/
|
|
13
|
+
startStreaming: screenShareManager.startStreaming,
|
|
14
|
+
/**
|
|
15
|
+
* Stops the stream and cancels browser screen sharing.
|
|
16
|
+
*/
|
|
17
|
+
stopStreaming: screenShareManager.stopStreaming,
|
|
18
|
+
/**
|
|
19
|
+
* The MediaStream object containing both tracks.
|
|
20
|
+
*/
|
|
21
|
+
stream: screenShareManager.stream,
|
|
22
|
+
/**
|
|
23
|
+
* The separate video MediaStreamTrack.
|
|
24
|
+
*/
|
|
25
|
+
videoTrack: screenShareManager.videoTrack,
|
|
26
|
+
/**
|
|
27
|
+
* The separate audio MediaStreamTrack.
|
|
28
|
+
*/
|
|
29
|
+
audioTrack: screenShareManager.audioTrack,
|
|
30
|
+
/**
|
|
31
|
+
* The middleware currently assigned to process the tracks.
|
|
32
|
+
* A screenshare may include both audio and video tracks, and this middleware is capable of processing
|
|
33
|
+
* each track type.
|
|
34
|
+
*/
|
|
35
|
+
currentTracksMiddleware: screenShareManager.currentTracksMiddleware,
|
|
36
|
+
/**
|
|
37
|
+
* Sets the middleware responsible for processing the tracks.
|
|
38
|
+
* @param middleware The middleware to set, which can be a TracksMiddleware instance or null to remove the middleware.
|
|
39
|
+
* @returns A Promise that resolves once the middleware is successfully set.
|
|
40
|
+
*/
|
|
41
|
+
setTracksMiddleware: screenShareManager.setTracksMiddleware,
|
|
42
|
+
};
|
|
10
43
|
};
|
|
@@ -6,6 +6,9 @@ import type { GenericMetadata } from "@fishjam-cloud/ts-client";
|
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
8
|
export declare const useUpdatePeerMetadata: <PeerMetadata extends GenericMetadata = GenericMetadata>() => {
|
|
9
|
+
/**
|
|
10
|
+
* Updates metadata visible to other peers
|
|
11
|
+
*/
|
|
9
12
|
updatePeerMetadata: (peerMetadata: PeerMetadata) => void;
|
|
10
13
|
};
|
|
11
14
|
//# sourceMappingURL=useUpdatePeerMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUpdatePeerMetadata.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,SAAS,eAAe;
|
|
1
|
+
{"version":3,"file":"useUpdatePeerMetadata.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,SAAS,eAAe;IAWtE;;OAEG;uCATY,YAAY;CAY9B,CAAC"}
|
|
@@ -11,5 +11,10 @@ export const useUpdatePeerMetadata = () => {
|
|
|
11
11
|
const updatePeerMetadata = useCallback((peerMetadata) => {
|
|
12
12
|
fishjamClientRef.current.updatePeerMetadata(peerMetadata);
|
|
13
13
|
}, [fishjamClientRef]);
|
|
14
|
-
return {
|
|
14
|
+
return {
|
|
15
|
+
/**
|
|
16
|
+
* Updates metadata visible to other peers
|
|
17
|
+
*/
|
|
18
|
+
updatePeerMetadata,
|
|
19
|
+
};
|
|
15
20
|
};
|
package/dist/hooks/useVAD.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
import type { PeerId } from "../types/
|
|
1
|
+
import type { PeerId } from "../types/public";
|
|
2
2
|
/**
|
|
3
|
+
* Voice activity detection. Use this hook to check if voice is detected in audio track for given peer(s).
|
|
4
|
+
*
|
|
5
|
+
* Example usage:
|
|
6
|
+
* ```tsx
|
|
7
|
+
* function WhoIsTalkingComponent({ peerIds }: { peerIds: PeerId[] }) {
|
|
8
|
+
* const peersInfo = useVAD({peerIds});
|
|
9
|
+
* const activePeers = (Object.keys(peersInfo) as PeerId[]).filter((peerId) => peersInfo[peerId]);
|
|
10
|
+
*
|
|
11
|
+
* return `Now talking: ${activePeers.join(", ")}`;
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
3
14
|
* @param peerIds List of ids of peers to subscribe to for voice activity detection notifications.
|
|
4
15
|
* @category Connection
|
|
5
16
|
* @group Hooks
|
|
6
17
|
* @returns Each key is a peerId and the boolean value indicates if voice activity is currently detected for that peer.
|
|
7
18
|
*/
|
|
8
|
-
export declare const useVAD: (peerIds:
|
|
19
|
+
export declare const useVAD: ({ peerIds }: {
|
|
20
|
+
peerIds: ReadonlyArray<PeerId>;
|
|
21
|
+
}) => Record<PeerId, boolean>;
|
|
9
22
|
//# sourceMappingURL=useVAD.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVAD.d.ts","sourceRoot":"","sources":["../../src/hooks/useVAD.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"useVAD.d.ts","sourceRoot":"","sources":["../../src/hooks/useVAD.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,iBAAiB,CAAC;AAIvD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,MAAM,gBAAiB;IAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAgE9F,CAAC"}
|
package/dist/hooks/useVAD.js
CHANGED
|
@@ -2,12 +2,23 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
2
2
|
import { useFishjamClientState } from "./internal/useFishjamClientState";
|
|
3
3
|
import { useFishjamContext } from "./internal/useFishjamContext";
|
|
4
4
|
/**
|
|
5
|
+
* Voice activity detection. Use this hook to check if voice is detected in audio track for given peer(s).
|
|
6
|
+
*
|
|
7
|
+
* Example usage:
|
|
8
|
+
* ```tsx
|
|
9
|
+
* function WhoIsTalkingComponent({ peerIds }: { peerIds: PeerId[] }) {
|
|
10
|
+
* const peersInfo = useVAD({peerIds});
|
|
11
|
+
* const activePeers = (Object.keys(peersInfo) as PeerId[]).filter((peerId) => peersInfo[peerId]);
|
|
12
|
+
*
|
|
13
|
+
* return `Now talking: ${activePeers.join(", ")}`;
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
5
16
|
* @param peerIds List of ids of peers to subscribe to for voice activity detection notifications.
|
|
6
17
|
* @category Connection
|
|
7
18
|
* @group Hooks
|
|
8
19
|
* @returns Each key is a peerId and the boolean value indicates if voice activity is currently detected for that peer.
|
|
9
20
|
*/
|
|
10
|
-
export const useVAD = (peerIds) => {
|
|
21
|
+
export const useVAD = ({ peerIds }) => {
|
|
11
22
|
const { fishjamClientRef } = useFishjamContext();
|
|
12
23
|
const { peers } = useFishjamClientState(fishjamClientRef.current);
|
|
13
24
|
const micTracksWithSelectedPeerIds = useMemo(() => Object.values(peers)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { FishjamProvider, type FishjamProviderProps } from "./FishjamProvider";
|
|
2
|
-
export { useCamera
|
|
3
|
-
export { useInitializeDevices,
|
|
4
|
-
export { useMicrophone
|
|
5
|
-
export { type JoinRoomConfig, useConnection
|
|
6
|
-
export { type PeerWithTracks, usePeers
|
|
7
|
-
export { useScreenShare
|
|
2
|
+
export { useCamera } from "./hooks/devices/useCamera";
|
|
3
|
+
export { useInitializeDevices, UseInitializeDevicesParams } from "./hooks/devices/useInitializeDevices";
|
|
4
|
+
export { useMicrophone } from "./hooks/devices/useMicrophone";
|
|
5
|
+
export { type JoinRoomConfig, useConnection } from "./hooks/useConnection";
|
|
6
|
+
export { type PeerWithTracks, usePeers } from "./hooks/usePeers";
|
|
7
|
+
export { useScreenShare } from "./hooks/useScreenShare";
|
|
8
8
|
export { useUpdatePeerMetadata } from "./hooks/useUpdatePeerMetadata";
|
|
9
9
|
export { useVAD } from "./hooks/useVAD";
|
|
10
|
-
export type { DeviceItem, PeerStatus, PersistLastDeviceHandlers, StreamConfig, Track, TrackMiddleware, TracksMiddleware, } from "./types/public";
|
|
11
|
-
export type { AuthErrorReason, Metadata, ReconnectConfig, ReconnectionStatus, SimulcastBandwidthLimit, SimulcastConfig, TrackBandwidthLimit, } from "@fishjam-cloud/ts-client";
|
|
10
|
+
export type { BandwidthLimits, Brand, DeviceError, DeviceItem, PeerId, PeerStatus, PersistLastDeviceHandlers, SimulcastBandwidthLimits, StreamConfig, Track, TrackId, TrackMiddleware, TracksMiddleware, } from "./types/public";
|
|
11
|
+
export type { AuthErrorReason, JoinErrorReason, Metadata, ReconnectConfig, ReconnectionStatus, SimulcastBandwidthLimit, SimulcastConfig, TrackBandwidthLimit, } from "@fishjam-cloud/ts-client";
|
|
12
12
|
export { Variant } from "@fishjam-cloud/ts-client";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,KAAK,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EACV,eAAe,EACf,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,yBAAyB,EACzB,wBAAwB,EACxB,YAAY,EACZ,KAAK,EACL,OAAO,EACP,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,eAAe,EACf,eAAe,EACf,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/types/internal.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export type PeerId = string;
|
|
1
|
+
import type { Peer } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import type { DeviceError, DeviceType, PeerId, TrackMiddleware, TracksMiddleware } from "./public";
|
|
4
3
|
export type DevicesStatus = "OK" | "Error" | "Not requested" | "Requesting";
|
|
5
4
|
export type MediaStatus = "OK" | "Error" | "Not requested" | "Requesting";
|
|
6
5
|
export type DeviceManagerStatus = "uninitialized" | "initializing" | "initialized" | "error";
|
|
@@ -23,15 +22,6 @@ export type DeviceState = {
|
|
|
23
22
|
error: DeviceError | null;
|
|
24
23
|
currentMiddleware: TrackMiddleware | null;
|
|
25
24
|
};
|
|
26
|
-
export type DeviceError = {
|
|
27
|
-
name: "OverconstrainedError";
|
|
28
|
-
} | {
|
|
29
|
-
name: "NotAllowedError";
|
|
30
|
-
} | {
|
|
31
|
-
name: "NotFoundError";
|
|
32
|
-
} | {
|
|
33
|
-
name: "UNHANDLED_ERROR";
|
|
34
|
-
};
|
|
35
25
|
export type CurrentDevices = {
|
|
36
26
|
videoinput: MediaDeviceInfo | null;
|
|
37
27
|
audioinput: MediaDeviceInfo | null;
|
|
@@ -66,7 +56,6 @@ export interface TrackManager {
|
|
|
66
56
|
selectDevice: (deviceId?: string) => Promise<void>;
|
|
67
57
|
paused: boolean;
|
|
68
58
|
setTrackMiddleware: (middleware: TrackMiddleware | null) => Promise<void>;
|
|
69
|
-
currentTrack: Track | null;
|
|
70
59
|
/**
|
|
71
60
|
* Either enables or disables the stream.
|
|
72
61
|
*
|
|
@@ -85,4 +74,7 @@ export interface TrackManager {
|
|
|
85
74
|
*/
|
|
86
75
|
toggleDevice: () => Promise<void>;
|
|
87
76
|
}
|
|
77
|
+
export type BrandedPeer<P, S> = Omit<Peer<P, S>, "id"> & {
|
|
78
|
+
id: PeerId;
|
|
79
|
+
};
|
|
88
80
|
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/types/public.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SimulcastConfig, TrackMetadata, Variant } from "@fishjam-cloud/ts-client";
|
|
2
|
-
import type {
|
|
2
|
+
import type { DeviceManagerStatus } from "./internal";
|
|
3
|
+
export type TrackId = Brand<string, "TrackId">;
|
|
4
|
+
export type PeerId = Brand<string, "PeerId">;
|
|
3
5
|
export type Track = {
|
|
4
6
|
stream: MediaStream | null;
|
|
5
7
|
encoding: Variant | null;
|
|
@@ -57,4 +59,18 @@ export type BandwidthLimits = {
|
|
|
57
59
|
simulcast: SimulcastBandwidthLimits;
|
|
58
60
|
};
|
|
59
61
|
export type DeviceType = "audio" | "video";
|
|
62
|
+
export type DeviceError = {
|
|
63
|
+
name: "OverconstrainedError";
|
|
64
|
+
} | {
|
|
65
|
+
name: "NotAllowedError";
|
|
66
|
+
} | {
|
|
67
|
+
name: "NotFoundError";
|
|
68
|
+
} | {
|
|
69
|
+
name: "UNHANDLED_ERROR";
|
|
70
|
+
};
|
|
71
|
+
declare const brand: unique symbol;
|
|
72
|
+
export type Brand<T, TBrand extends string> = T & {
|
|
73
|
+
[brand]: TBrand;
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
60
76
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/types/public.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/types/public.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DeviceError } from "../types/
|
|
1
|
+
import type { DeviceError } from "../types/public";
|
|
2
2
|
export declare const PERMISSION_DENIED: DeviceError;
|
|
3
3
|
export declare const OVERCONSTRAINED_ERROR: DeviceError;
|
|
4
4
|
export declare const NOT_FOUND_ERROR: DeviceError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,EAAE,WAAyC,CAAC;AAC1E,eAAO,MAAM,qBAAqB,EAAE,WAA8C,CAAC;AACnF,eAAO,MAAM,eAAe,EAAE,WAAuC,CAAC;AACtE,eAAO,MAAM,eAAe,EAAE,WAAyC,CAAC;AAIxE,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,WAAW,GAAG,IAelE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/utils/track.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAA+B,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/utils/track.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAA+B,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAW,MAAM,iBAAiB,CAAC;AAmCvE,eAAO,MAAM,qBAAqB,aAAc,aAAa,wBAAwB,MAAM,GAAG,IAAI,iBAIjG,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,EAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAQ9B;AAOD,eAAO,MAAM,8BAA8B,cAC9B,OAAO,EAAE,GAAG,KAAK,GAAG,SAAS,mBACvB,eAAe,oFAcjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fishjam-cloud/react-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "React client library for Fishjam",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Fishjam Team",
|
|
@@ -38,19 +38,19 @@
|
|
|
38
38
|
"prepack": "yarn workspace @fishjam-cloud/ts-client build && yarn build"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@playwright/test": "^1.
|
|
41
|
+
"@playwright/test": "^1.50.0",
|
|
42
42
|
"@types/events": "^3.0.3",
|
|
43
43
|
"@types/lodash.isequal": "^4.5.8",
|
|
44
|
-
"@types/node": "^22.
|
|
45
|
-
"@types/react": "^19.0.
|
|
44
|
+
"@types/node": "^22.12.0",
|
|
45
|
+
"@types/react": "^19.0.8",
|
|
46
46
|
"react": "^19.0.0",
|
|
47
47
|
"typed-emitter": "^2.1.0",
|
|
48
|
-
"typedoc": "^0.27.
|
|
49
|
-
"typedoc-plugin-mdn-links": "^4.0.
|
|
50
|
-
"typescript": "^5.7.
|
|
48
|
+
"typedoc": "^0.27.6",
|
|
49
|
+
"typedoc-plugin-mdn-links": "^4.0.10",
|
|
50
|
+
"typescript": "^5.7.3"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@fishjam-cloud/ts-client": "0.
|
|
53
|
+
"@fishjam-cloud/ts-client": "0.13.0",
|
|
54
54
|
"events": "3.3.0",
|
|
55
55
|
"lodash.isequal": "4.5.0"
|
|
56
56
|
},
|