@fishjam-cloud/react-client 0.8.1 → 0.10.1
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/{DeviceManager.d.ts → devices/DeviceManager.d.ts} +2 -3
- package/dist/devices/DeviceManager.d.ts.map +1 -0
- package/dist/{DeviceManager.js → devices/DeviceManager.js} +4 -4
- package/dist/devices/constraints.d.ts.map +1 -0
- package/dist/{mediaInitializer.d.ts → devices/mediaInitializer.d.ts} +1 -1
- package/dist/devices/mediaInitializer.d.ts.map +1 -0
- package/dist/{mediaInitializer.js → devices/mediaInitializer.js} +1 -1
- package/dist/fishjamProvider.d.ts.map +1 -1
- package/dist/fishjamProvider.js +6 -6
- package/dist/hooks/devices/useCamera.d.ts.map +1 -1
- package/dist/hooks/devices/useCamera.js +3 -28
- package/dist/hooks/devices/useInitializeDevices.js +3 -3
- package/dist/hooks/devices/useMicrophone.d.ts +2 -2
- package/dist/hooks/devices/useMicrophone.d.ts.map +1 -1
- package/dist/hooks/devices/useMicrophone.js +3 -30
- package/dist/hooks/internal/device/useDeviceApi.d.ts +10 -0
- package/dist/hooks/internal/device/useDeviceApi.d.ts.map +1 -0
- package/dist/hooks/internal/device/useDeviceApi.js +34 -0
- package/dist/hooks/internal/device/useDeviceManager.d.ts +4 -0
- package/dist/hooks/internal/device/useDeviceManager.d.ts.map +1 -0
- package/dist/hooks/{deviceManagers → internal/device}/useDeviceManager.js +1 -0
- package/dist/hooks/internal/useFishjamClientState.d.ts +10 -0
- package/dist/hooks/internal/useFishjamClientState.d.ts.map +1 -0
- package/dist/hooks/{useFishjamClientState.js → internal/useFishjamClientState.js} +3 -23
- package/dist/hooks/internal/useFishjamClient_DO_NOT_USE.d.ts +7 -0
- package/dist/hooks/internal/useFishjamClient_DO_NOT_USE.d.ts.map +1 -0
- package/dist/hooks/{useFishjamContext.d.ts → internal/useFishjamContext.d.ts} +4 -4
- package/dist/hooks/internal/useFishjamContext.d.ts.map +1 -0
- package/dist/hooks/internal/usePeerStatus.d.ts +7 -0
- package/dist/hooks/internal/usePeerStatus.d.ts.map +1 -0
- package/dist/hooks/internal/useReconnection.d.ts.map +1 -0
- package/dist/hooks/{useTrackManager.d.ts → internal/useTrackManager.d.ts} +4 -4
- package/dist/hooks/internal/useTrackManager.d.ts.map +1 -0
- package/dist/hooks/{useTrackManager.js → internal/useTrackManager.js} +8 -4
- package/dist/hooks/useConnection.d.ts +22 -8
- package/dist/hooks/useConnection.d.ts.map +1 -1
- package/dist/hooks/useConnection.js +10 -13
- package/dist/hooks/usePeers.d.ts +26 -5
- package/dist/hooks/usePeers.d.ts.map +1 -1
- package/dist/hooks/usePeers.js +32 -10
- package/dist/hooks/useScreenShare.d.ts +1 -3
- package/dist/hooks/useScreenShare.d.ts.map +1 -1
- package/dist/hooks/useScreenShare.js +7 -3
- package/dist/hooks/useUpdatePeerMetadata.d.ts +5 -0
- package/dist/hooks/useUpdatePeerMetadata.d.ts.map +1 -0
- package/dist/hooks/useUpdatePeerMetadata.js +9 -0
- package/dist/hooks/useVAD.d.ts +3 -0
- package/dist/hooks/useVAD.d.ts.map +1 -0
- package/dist/hooks/useVAD.js +42 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +1 -0
- package/dist/types/internal.d.ts +6 -16
- package/dist/types/internal.d.ts.map +1 -1
- package/dist/types/public.d.ts +10 -12
- package/dist/types/public.d.ts.map +1 -1
- package/dist/utils/bandwidth.d.ts +2 -0
- package/dist/utils/bandwidth.d.ts.map +1 -1
- package/dist/utils/bandwidth.js +3 -1
- package/dist/utils/localStorage.d.ts +1 -2
- package/dist/utils/localStorage.d.ts.map +1 -1
- package/dist/utils/track.d.ts +4 -8
- package/dist/utils/track.d.ts.map +1 -1
- package/dist/utils/track.js +6 -4
- package/package.json +10 -10
- package/dist/DeviceManager.d.ts.map +0 -1
- package/dist/constraints.d.ts.map +0 -1
- package/dist/hooks/deviceManagers/useDeviceManager.d.ts +0 -4
- package/dist/hooks/deviceManagers/useDeviceManager.d.ts.map +0 -1
- package/dist/hooks/internal.d.ts +0 -2
- package/dist/hooks/internal.d.ts.map +0 -1
- package/dist/hooks/internal.js +0 -1
- package/dist/hooks/public.d.ts +0 -9
- package/dist/hooks/public.d.ts.map +0 -1
- package/dist/hooks/public.js +0 -8
- package/dist/hooks/useFishjamClientState.d.ts +0 -10
- package/dist/hooks/useFishjamClientState.d.ts.map +0 -1
- package/dist/hooks/useFishjamClient_DO_NOT_USE.d.ts +0 -7
- package/dist/hooks/useFishjamClient_DO_NOT_USE.d.ts.map +0 -1
- package/dist/hooks/useFishjamContext.d.ts.map +0 -1
- package/dist/hooks/usePeerStatus.d.ts +0 -8
- package/dist/hooks/usePeerStatus.d.ts.map +0 -1
- package/dist/hooks/useReconnection.d.ts.map +0 -1
- package/dist/hooks/useStatus.d.ts +0 -6
- package/dist/hooks/useStatus.d.ts.map +0 -1
- package/dist/hooks/useStatus.js +0 -8
- package/dist/hooks/useTrackManager.d.ts.map +0 -1
- package/dist/mediaInitializer.d.ts.map +0 -1
- /package/dist/{constraints.d.ts → devices/constraints.d.ts} +0 -0
- /package/dist/{constraints.js → devices/constraints.js} +0 -0
- /package/dist/hooks/{useFishjamClient_DO_NOT_USE.js → internal/useFishjamClient_DO_NOT_USE.js} +0 -0
- /package/dist/hooks/{useFishjamContext.js → internal/useFishjamContext.js} +0 -0
- /package/dist/hooks/{usePeerStatus.js → internal/usePeerStatus.js} +0 -0
- /package/dist/hooks/{useReconnection.d.ts → internal/useReconnection.d.ts} +0 -0
- /package/dist/hooks/{useReconnection.js → internal/useReconnection.js} +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { DeviceError, DeviceManagerStatus, DeviceState, Media, MediaManager } from "
|
|
1
|
+
import type { DeviceError, DeviceManagerStatus, DeviceState, Media, MediaManager } from "../types/internal";
|
|
2
2
|
import type TypedEmitter from "typed-emitter";
|
|
3
|
-
import type { PersistLastDeviceHandlers, TrackMiddleware } from "
|
|
4
|
-
export type DeviceType = "audio" | "video";
|
|
3
|
+
import type { PersistLastDeviceHandlers, TrackMiddleware, DeviceType } from "../types/public";
|
|
5
4
|
export type DeviceManagerEvents = {
|
|
6
5
|
managerStarted: (event: DeviceState & {
|
|
7
6
|
constraints: MediaTrackConstraints | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { prepareMediaTrackConstraints } from "./constraints";
|
|
2
2
|
import EventEmitter from "events";
|
|
3
|
-
import { MiddlewareManager } from "./
|
|
4
|
-
import { createStorageConfig } from "
|
|
5
|
-
import { setupOnEndedCallback } from "
|
|
6
|
-
import { parseUserMediaError } from "
|
|
3
|
+
import { MiddlewareManager } from "./MiddlewareManager";
|
|
4
|
+
import { createStorageConfig } from "../utils/localStorage";
|
|
5
|
+
import { setupOnEndedCallback } from "../utils/track";
|
|
6
|
+
import { parseUserMediaError } from "../utils/errors";
|
|
7
7
|
const NOOP = () => { };
|
|
8
8
|
export class DeviceManager extends EventEmitter {
|
|
9
9
|
constraints;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/devices/constraints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,qBAErC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,qBAerC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,sBAM9C,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,GAAG,SAAS,eACf,qBAAqB,GAAG,SAAS,GAAG,OAAO,KACvD,qBAAqB,GAAG,OAM1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,oBACZ,MAAM,GAAG,SAAS,eACtB,qBAAqB,GAAG,SAAS,GAAG,OAAO,KACvD,qBAAqB,GAAG,SAAS,GAAG,OAUtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaInitializer.d.ts","sourceRoot":"","sources":["../../src/devices/mediaInitializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrE,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,5 +1,5 @@
|
|
|
1
1
|
import { prepareConstraints } from "./constraints";
|
|
2
|
-
import { NOT_FOUND_ERROR, OVERCONSTRAINED_ERROR, PERMISSION_DENIED, UNHANDLED_ERROR } from "
|
|
2
|
+
import { NOT_FOUND_ERROR, OVERCONSTRAINED_ERROR, PERMISSION_DENIED, UNHANDLED_ERROR } from "../utils/errors";
|
|
3
3
|
const defaultErrors = { audio: null, video: null };
|
|
4
4
|
const tryToGetAudioOnlyThenVideoOnly = async (constraints, deviceErrors = defaultErrors, transformConstraint = () => false) => {
|
|
5
5
|
const audioOnly = await getAvailableMedia({ ...constraints, video: transformConstraint(constraints.video) }, { ...deviceErrors, audio: null });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fishjamProvider.d.ts","sourceRoot":"","sources":["../src/fishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"fishjamProvider.d.ts","sourceRoot":"","sources":["../src/fishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO/E,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAItG,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9D,iBAAiB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IAC/C,oBAAoB,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;CACpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,oBAAoB,2CA8DtB"}
|
package/dist/fishjamProvider.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useRef } from "react";
|
|
3
|
-
import { useTrackManager } from "./hooks/useTrackManager";
|
|
3
|
+
import { useTrackManager } from "./hooks/internal/useTrackManager";
|
|
4
4
|
import { FishjamClient } from "@fishjam-cloud/ts-client";
|
|
5
|
-
import { FishjamContext } from "./hooks/useFishjamContext";
|
|
6
|
-
import { DeviceManager } from "./DeviceManager";
|
|
7
|
-
import { usePeerStatus } from "./hooks/usePeerStatus";
|
|
8
|
-
import { useFishjamClientState } from "./hooks/useFishjamClientState";
|
|
9
|
-
import { AUDIO_TRACK_CONSTRAINTS, VIDEO_TRACK_CONSTRAINTS } from "./constraints";
|
|
5
|
+
import { FishjamContext } from "./hooks/internal/useFishjamContext";
|
|
6
|
+
import { DeviceManager } from "./devices/DeviceManager";
|
|
7
|
+
import { usePeerStatus } from "./hooks/internal/usePeerStatus";
|
|
8
|
+
import { useFishjamClientState } from "./hooks/internal/useFishjamClientState";
|
|
9
|
+
import { AUDIO_TRACK_CONSTRAINTS, VIDEO_TRACK_CONSTRAINTS } from "./devices/constraints";
|
|
10
10
|
import { useScreenShareManager } from "./hooks/useScreenShare";
|
|
11
11
|
import { mergeWithDefaultBandwitdthLimits } from "./utils/bandwidth";
|
|
12
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useCamera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useCamera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAIlC"}
|
|
@@ -1,35 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useFishjamContext } from "../internal/useFishjamContext";
|
|
2
|
+
import { useDeviceApi } from "../internal/device/useDeviceApi";
|
|
3
3
|
/**
|
|
4
4
|
*
|
|
5
5
|
* @category Devices
|
|
6
6
|
*/
|
|
7
7
|
export function useCamera() {
|
|
8
8
|
const { videoTrackManager, videoDeviceManagerRef } = useFishjamContext();
|
|
9
|
-
|
|
10
|
-
const { currentTrack, ...trackManager } = videoTrackManager;
|
|
11
|
-
const stream = deviceState.media?.stream ?? null;
|
|
12
|
-
const currentMiddleware = deviceState.currentMiddleware ?? null;
|
|
13
|
-
const isStreaming = Boolean(currentTrack?.stream);
|
|
14
|
-
const track = stream?.getAudioTracks()[0] ?? null;
|
|
15
|
-
const trackId = currentTrack?.trackId ?? null;
|
|
16
|
-
const devices = deviceState.devices ?? [];
|
|
17
|
-
const activeDevice = deviceState.media?.deviceInfo ?? null;
|
|
18
|
-
const isMuted = !deviceState.media?.enabled;
|
|
19
|
-
const deviceError = deviceState.error ?? null;
|
|
20
|
-
const isDeviceEnabled = Boolean(deviceState.media);
|
|
21
|
-
return {
|
|
22
|
-
...trackManager,
|
|
23
|
-
currentMiddleware,
|
|
24
|
-
status,
|
|
25
|
-
stream,
|
|
26
|
-
track,
|
|
27
|
-
devices,
|
|
28
|
-
activeDevice,
|
|
29
|
-
deviceError,
|
|
30
|
-
isMuted,
|
|
31
|
-
isStreaming,
|
|
32
|
-
trackId,
|
|
33
|
-
isDeviceEnabled,
|
|
34
|
-
};
|
|
9
|
+
return useDeviceApi({ trackManager: videoTrackManager, deviceManager: videoDeviceManagerRef.current });
|
|
35
10
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import { prepareConstraints } from "../../constraints";
|
|
3
|
-
import { getAvailableMedia, getCorrectedResult } from "../../mediaInitializer";
|
|
4
|
-
import { useFishjamContext } from "../useFishjamContext";
|
|
2
|
+
import { prepareConstraints } from "../../devices/constraints";
|
|
3
|
+
import { getAvailableMedia, getCorrectedResult } from "../../devices/mediaInitializer";
|
|
4
|
+
import { useFishjamContext } from "../internal/useFishjamContext";
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @category Devices
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Device } from "../../types/public";
|
|
2
2
|
/**
|
|
3
3
|
*
|
|
4
4
|
* @category Devices
|
|
5
5
|
*/
|
|
6
|
-
export declare function useMicrophone():
|
|
6
|
+
export declare function useMicrophone(): Device;
|
|
7
7
|
//# sourceMappingURL=useMicrophone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useMicrophone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../../src/hooks/devices/useMicrophone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC"}
|
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useFishjamContext } from "../internal/useFishjamContext";
|
|
2
|
+
import { useDeviceApi } from "../internal/device/useDeviceApi";
|
|
3
3
|
/**
|
|
4
4
|
*
|
|
5
5
|
* @category Devices
|
|
6
6
|
*/
|
|
7
7
|
export function useMicrophone() {
|
|
8
8
|
const { audioTrackManager, audioDeviceManagerRef } = useFishjamContext();
|
|
9
|
-
|
|
10
|
-
const { currentTrack, ...trackManager } = audioTrackManager;
|
|
11
|
-
const stream = deviceState.media?.stream ?? null;
|
|
12
|
-
const currentMiddleware = deviceState.currentMiddleware ?? null;
|
|
13
|
-
const isStreaming = Boolean(currentTrack?.stream);
|
|
14
|
-
const track = stream?.getAudioTracks()[0] ?? null;
|
|
15
|
-
const trackId = currentTrack?.trackId ?? null;
|
|
16
|
-
const devices = deviceState.devices ?? [];
|
|
17
|
-
const activeDevice = deviceState.media?.deviceInfo ?? null;
|
|
18
|
-
const isAudioPlaying = currentTrack?.vadStatus === "speech";
|
|
19
|
-
const isMuted = !deviceState.media?.enabled;
|
|
20
|
-
const deviceError = deviceState.error ?? null;
|
|
21
|
-
const isDeviceEnabled = Boolean(deviceState.media);
|
|
22
|
-
return {
|
|
23
|
-
...trackManager,
|
|
24
|
-
currentMiddleware,
|
|
25
|
-
isDeviceEnabled,
|
|
26
|
-
status,
|
|
27
|
-
stream,
|
|
28
|
-
track,
|
|
29
|
-
isStreaming,
|
|
30
|
-
trackId,
|
|
31
|
-
devices,
|
|
32
|
-
activeDevice,
|
|
33
|
-
isMuted,
|
|
34
|
-
deviceError,
|
|
35
|
-
isAudioPlaying,
|
|
36
|
-
};
|
|
9
|
+
return useDeviceApi({ trackManager: audioTrackManager, deviceManager: audioDeviceManagerRef.current });
|
|
37
10
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TrackManager } from "../../../types/internal";
|
|
2
|
+
import type { Device } from "../../../types/public";
|
|
3
|
+
import type { DeviceManager } from "../../../devices/DeviceManager";
|
|
4
|
+
type DeviceApiDependencies = {
|
|
5
|
+
trackManager: TrackManager;
|
|
6
|
+
deviceManager: DeviceManager;
|
|
7
|
+
};
|
|
8
|
+
export declare const useDeviceApi: ({ trackManager, deviceManager }: DeviceApiDependencies) => Device;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=useDeviceApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDeviceApi.d.ts","sourceRoot":"","sources":["../../../../src/hooks/internal/device/useDeviceApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,YAAY,oCAAqC,qBAAqB,KAAG,MAkCrF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useDeviceManager } from "./useDeviceManager";
|
|
3
|
+
export const useDeviceApi = ({ trackManager, deviceManager }) => {
|
|
4
|
+
const { deviceState, status, type } = useDeviceManager(deviceManager);
|
|
5
|
+
const { currentTrack } = trackManager;
|
|
6
|
+
const stream = useMemo(() => deviceState.media?.stream ?? null, [deviceState.media?.stream]);
|
|
7
|
+
const currentMiddleware = deviceState.currentMiddleware ?? null;
|
|
8
|
+
const isStreaming = Boolean(currentTrack?.stream && !trackManager.paused);
|
|
9
|
+
const track = useMemo(() => {
|
|
10
|
+
if (type === "video")
|
|
11
|
+
return stream?.getVideoTracks()[0] ?? null;
|
|
12
|
+
return stream?.getAudioTracks()[0] ?? null;
|
|
13
|
+
}, [stream, type]);
|
|
14
|
+
const trackId = currentTrack?.trackId ?? null;
|
|
15
|
+
const devices = useMemo(() => deviceState.devices ?? [], [deviceState.devices]);
|
|
16
|
+
const activeDevice = deviceState.media?.deviceInfo ?? null;
|
|
17
|
+
const isMuted = !deviceState.media?.enabled;
|
|
18
|
+
const deviceError = deviceState.error ?? null;
|
|
19
|
+
const isDeviceEnabled = Boolean(deviceState.media);
|
|
20
|
+
return {
|
|
21
|
+
...trackManager,
|
|
22
|
+
currentMiddleware,
|
|
23
|
+
status,
|
|
24
|
+
stream,
|
|
25
|
+
devices,
|
|
26
|
+
activeDevice,
|
|
27
|
+
isStreaming,
|
|
28
|
+
track,
|
|
29
|
+
trackId,
|
|
30
|
+
isMuted,
|
|
31
|
+
deviceError,
|
|
32
|
+
isDeviceEnabled,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DeviceManagerState } from "../../../types/internal";
|
|
2
|
+
import type { DeviceManager } from "../../../devices/DeviceManager";
|
|
3
|
+
export declare const useDeviceManager: (deviceManager: DeviceManager) => DeviceManagerState;
|
|
4
|
+
//# sourceMappingURL=useDeviceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDeviceManager.d.ts","sourceRoot":"","sources":["../../../../src/hooks/internal/device/useDeviceManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,gCAAgC,CAAC;AAezF,eAAO,MAAM,gBAAgB,kBAAmB,aAAa,uBAoC5D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Component, Peer, FishjamClient, GenericMetadata } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import type { PeerId } from "../../types/internal";
|
|
3
|
+
export interface FishjamClientState<P = GenericMetadata, S = GenericMetadata> {
|
|
4
|
+
peers: Record<PeerId, Peer<P, S>>;
|
|
5
|
+
components: Record<string, Component>;
|
|
6
|
+
localPeer: Peer<P, S> | null;
|
|
7
|
+
isReconnecting: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function useFishjamClientState<P, S>(fishjamClient: FishjamClient<P, S>): FishjamClientState<P, S>;
|
|
10
|
+
//# sourceMappingURL=useFishjamClientState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamClientState.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamClientState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAiB,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA0CnD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC,GAAG,eAAe;IAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7B,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"}
|
|
@@ -38,25 +38,6 @@ const eventNames = [
|
|
|
38
38
|
"localTrackMetadataChanged",
|
|
39
39
|
"disconnectRequested",
|
|
40
40
|
];
|
|
41
|
-
function trackContextToTrack(track) {
|
|
42
|
-
return {
|
|
43
|
-
metadata: track.metadata,
|
|
44
|
-
trackId: track.trackId,
|
|
45
|
-
stream: track.stream,
|
|
46
|
-
simulcastConfig: track.simulcastConfig ?? null,
|
|
47
|
-
encoding: track.encoding ?? null,
|
|
48
|
-
vadStatus: track.vadStatus,
|
|
49
|
-
track: track.track,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
function endpointToPeerState(peer) {
|
|
53
|
-
const tracks = [...peer.tracks].reduce((acc, [, track]) => ({ ...acc, [track.trackId]: trackContextToTrack(track) }), {});
|
|
54
|
-
return {
|
|
55
|
-
metadata: peer.metadata,
|
|
56
|
-
id: peer.id,
|
|
57
|
-
tracks,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
41
|
/*
|
|
61
42
|
This is an internally used hook.
|
|
62
43
|
It is not meant to be used by the end user.
|
|
@@ -77,10 +58,9 @@ export function useFishjamClientState(fishjamClient) {
|
|
|
77
58
|
const lastSnapshotRef = useRef(null);
|
|
78
59
|
const getSnapshot = useCallback(() => {
|
|
79
60
|
if (mutationRef.current || lastSnapshotRef.current === null) {
|
|
80
|
-
const peers =
|
|
81
|
-
const components =
|
|
82
|
-
const
|
|
83
|
-
const localPeer = localEndpoint ? endpointToPeerState(localEndpoint) : null;
|
|
61
|
+
const peers = client.getRemotePeers();
|
|
62
|
+
const components = client.getRemoteComponents();
|
|
63
|
+
const localPeer = client.getLocalPeer();
|
|
84
64
|
const isReconnecting = client.isReconnecting();
|
|
85
65
|
lastSnapshotRef.current = {
|
|
86
66
|
peers,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @category Connection
|
|
4
|
+
* @deprecated
|
|
5
|
+
*/
|
|
6
|
+
export declare function useFishjamClient_DO_NOT_USE(): import("@fishjam-cloud/ts-client").FishjamClient<import("@fishjam-cloud/ts-client").GenericMetadata, import("@fishjam-cloud/ts-client").GenericMetadata>;
|
|
7
|
+
//# sourceMappingURL=useFishjamClient_DO_NOT_USE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamClient_DO_NOT_USE.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamClient_DO_NOT_USE.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,2BAA2B,6JAI1C"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { FishjamClient } from "@fishjam-cloud/ts-client";
|
|
2
2
|
import { type MutableRefObject } from "react";
|
|
3
|
-
import type {
|
|
4
|
-
import type { DeviceManager } from "
|
|
3
|
+
import type { TrackManager } from "../../types/internal";
|
|
4
|
+
import type { DeviceManager } from "../../devices/DeviceManager";
|
|
5
5
|
import type { FishjamClientState } from "./useFishjamClientState";
|
|
6
|
-
import type { BandwidthLimits, PeerStatus, ScreenshareApi } from "
|
|
6
|
+
import type { BandwidthLimits, PeerStatus, ScreenshareApi } from "../../types/public";
|
|
7
7
|
export type FishjamContextType = {
|
|
8
|
-
fishjamClientRef: MutableRefObject<FishjamClient
|
|
8
|
+
fishjamClientRef: MutableRefObject<FishjamClient>;
|
|
9
9
|
videoDeviceManagerRef: MutableRefObject<DeviceManager>;
|
|
10
10
|
audioDeviceManagerRef: MutableRefObject<DeviceManager>;
|
|
11
11
|
hasDevicesBeenInitializedRef: MutableRefObject<boolean>;
|
|
@@ -0,0 +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;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtF,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,cAAc,CAAC;IACnC,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FishjamClient } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import type { PeerStatus } from "../../types/public";
|
|
3
|
+
export declare const usePeerStatus: (client: FishjamClient) => {
|
|
4
|
+
readonly peerStatus: PeerStatus;
|
|
5
|
+
readonly getCurrentPeerStatus: () => PeerStatus;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=usePeerStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePeerStatus.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/usePeerStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,aAAa,WAAY,aAAa;;;CA8ClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReconnection.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useReconnection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,kBA6BlC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { MediaManager,
|
|
3
|
-
import type { BandwidthLimits, PeerStatus, StartStreamingProps } from "
|
|
1
|
+
import { type FishjamClient } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import type { MediaManager, TrackManager } from "../../types/internal";
|
|
3
|
+
import type { BandwidthLimits, PeerStatus, StartStreamingProps } from "../../types/public";
|
|
4
4
|
interface TrackManagerConfig {
|
|
5
5
|
mediaManager: MediaManager;
|
|
6
|
-
tsClient: FishjamClient
|
|
6
|
+
tsClient: FishjamClient;
|
|
7
7
|
getCurrentPeerStatus: () => PeerStatus;
|
|
8
8
|
bandwidthLimits: BandwidthLimits;
|
|
9
9
|
autoStreamProps?: StartStreamingProps | false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTrackManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useTrackManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EAAmB,MAAM,oBAAoB,CAAC;AAE5G,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,oBAAoB,EAAE,MAAM,UAAU,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;CAC/C;AAWD,eAAO,MAAM,eAAe,wFAMzB,kBAAkB,KAAG,YAgMvB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Variant } from "@fishjam-cloud/ts-client";
|
|
2
|
+
import { getConfigAndBandwidthFromProps, getRemoteOrLocalTrack } from "../../utils/track";
|
|
2
3
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
4
|
const TRACK_TYPE_TO_DEVICE = {
|
|
4
5
|
video: "camera",
|
|
@@ -21,7 +22,7 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
21
22
|
await tsClient.replaceTrack(currentTrackId, newTrack);
|
|
22
23
|
}
|
|
23
24
|
const stop = useCallback(() => mediaManager.stop(), [mediaManager]);
|
|
24
|
-
const startStreaming = useCallback(async (props = { simulcast: [
|
|
25
|
+
const startStreaming = useCallback(async (props = { simulcast: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH] }) => {
|
|
25
26
|
if (currentTrackId)
|
|
26
27
|
throw Error("Track already added");
|
|
27
28
|
const media = mediaManager.getMedia();
|
|
@@ -32,9 +33,12 @@ export const useTrackManager = ({ mediaManager, tsClient, getCurrentPeerStatus,
|
|
|
32
33
|
return track.trackId;
|
|
33
34
|
// see `getRemoteOrLocalTrackContext()` explanation
|
|
34
35
|
setCurrentTrackId(media.track.id);
|
|
35
|
-
const displayName = tsClient.getLocalPeer()?.metadata?.peer?.displayName;
|
|
36
36
|
const deviceType = getDeviceType(mediaManager);
|
|
37
|
-
const trackMetadata = { type: deviceType,
|
|
37
|
+
const trackMetadata = { type: deviceType, paused: false };
|
|
38
|
+
const displayName = tsClient.getLocalPeer()?.metadata?.peer?.displayName;
|
|
39
|
+
if (typeof displayName === "string") {
|
|
40
|
+
trackMetadata.displayName = displayName;
|
|
41
|
+
}
|
|
38
42
|
const [maxBandwidth, simulcastConfig] = getConfigAndBandwidthFromProps(props.simulcast, bandwidthLimits);
|
|
39
43
|
const remoteTrackId = await tsClient.addTrack(media.track, trackMetadata, simulcastConfig, maxBandwidth);
|
|
40
44
|
setCurrentTrackId(remoteTrackId);
|
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { GenericMetadata } from "@fishjam-cloud/ts-client";
|
|
2
|
+
export interface JoinRoomConfig<PeerMetadata extends GenericMetadata = GenericMetadata> {
|
|
3
|
+
/**
|
|
4
|
+
* fishjam URL
|
|
5
|
+
*/
|
|
6
|
+
url: string;
|
|
7
|
+
/**
|
|
8
|
+
* token received from server (or Room Manager)
|
|
9
|
+
*/
|
|
10
|
+
peerToken: string;
|
|
11
|
+
/**
|
|
12
|
+
* string indexed record with metadata, that will be available to all other peers
|
|
13
|
+
*/
|
|
14
|
+
peerMetadata?: PeerMetadata;
|
|
15
|
+
}
|
|
2
16
|
/**
|
|
3
|
-
*
|
|
4
17
|
* @category Connection
|
|
18
|
+
* @returns
|
|
5
19
|
*/
|
|
6
|
-
export declare function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
20
|
+
export declare function useConnection(): {
|
|
21
|
+
joinRoom: <PeerMetadata extends GenericMetadata = GenericMetadata>({ url, peerToken, peerMetadata, }: JoinRoomConfig<PeerMetadata>) => Promise<void>;
|
|
22
|
+
leaveRoom: () => void;
|
|
23
|
+
peerStatus: import("..").PeerStatus;
|
|
24
|
+
reconnectionStatus: import("@fishjam-cloud/ts-client").ReconnectionStatus;
|
|
25
|
+
};
|
|
12
26
|
//# sourceMappingURL=useConnection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIhE,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;;;GAGG;AACH,wBAAgB,aAAa;eAOxB,YAAY,SAAS,eAAe,uDAIlC,cAAc,CAAC,YAAY,CAAC;;;;EASlC"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import { useFishjamContext } from "./useFishjamContext";
|
|
2
|
+
import { useFishjamContext } from "./internal/useFishjamContext";
|
|
3
|
+
import { useReconnection } from "./internal/useReconnection";
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
5
|
* @category Connection
|
|
6
|
+
* @returns
|
|
6
7
|
*/
|
|
7
|
-
export function
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* @category Connection
|
|
14
|
-
*/
|
|
15
|
-
export function useDisconnect() {
|
|
16
|
-
const client = useFishjamContext().fishjamClientRef.current;
|
|
17
|
-
return useCallback(() => {
|
|
8
|
+
export function useConnection() {
|
|
9
|
+
const context = useFishjamContext();
|
|
10
|
+
const client = context.fishjamClientRef.current;
|
|
11
|
+
const reconnectionStatus = useReconnection();
|
|
12
|
+
const joinRoom = useCallback(({ url, peerToken, peerMetadata, }) => client.connect({ url, token: peerToken, peerMetadata: peerMetadata ?? {} }), [client]);
|
|
13
|
+
const leaveRoom = useCallback(() => {
|
|
18
14
|
client.disconnect();
|
|
19
15
|
}, [client]);
|
|
16
|
+
return { joinRoom, leaveRoom, peerStatus: context.peerStatus, reconnectionStatus };
|
|
20
17
|
}
|
package/dist/hooks/usePeers.d.ts
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DistinguishedTracks, PeerState } from "../types/internal";
|
|
2
|
+
export type PeerWithTracks<P, S> = PeerState<P, S> & DistinguishedTracks;
|
|
3
|
+
/**
|
|
4
|
+
* Result type for the usePeers hook.
|
|
5
|
+
*/
|
|
6
|
+
export type UsePeersResult<P, S> = {
|
|
7
|
+
/**
|
|
8
|
+
* The local peer with distinguished tracks (camera, microphone, screen share).
|
|
9
|
+
* Will be null if the local peer is not found.
|
|
10
|
+
*/
|
|
11
|
+
localPeer: PeerWithTracks<P, S> | null;
|
|
12
|
+
/**
|
|
13
|
+
* Array of remote peers with distinguished tracks (camera, microphone, screen share).
|
|
14
|
+
*/
|
|
15
|
+
remotePeers: PeerWithTracks<P, S>[];
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use remotePeers instead
|
|
18
|
+
* Legacy array containing remote peers.
|
|
19
|
+
* This property will be removed in future versions.
|
|
20
|
+
*/
|
|
21
|
+
peers: PeerWithTracks<P, S>[];
|
|
22
|
+
};
|
|
2
23
|
/**
|
|
3
24
|
*
|
|
4
25
|
* @category Connection
|
|
26
|
+
*
|
|
27
|
+
* @typeParam P Type of metadata set by peer while connecting to a room.
|
|
28
|
+
* @typeParam S Type of metadata set by the server while creating a peer.
|
|
5
29
|
*/
|
|
6
|
-
export declare function usePeers():
|
|
7
|
-
localPeer: PeerWithTracks | null;
|
|
8
|
-
peers: PeerWithTracks[];
|
|
9
|
-
};
|
|
30
|
+
export declare function usePeers<P = Record<string, unknown>, S = Record<string, unknown>>(): UsePeersResult<P, S>;
|
|
10
31
|
//# sourceMappingURL=usePeers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC;AAiCzE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI;IACjC;;;OAGG;IACH,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAEpC;;;;OAIG;IACH,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAQzG"}
|
package/dist/hooks/usePeers.js
CHANGED
|
@@ -1,19 +1,41 @@
|
|
|
1
|
-
import { useFishjamContext } from "./useFishjamContext";
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { useFishjamContext } from "./internal/useFishjamContext";
|
|
2
|
+
function trackContextToTrack(track) {
|
|
3
|
+
return {
|
|
4
|
+
metadata: track.metadata,
|
|
5
|
+
trackId: track.trackId,
|
|
6
|
+
stream: track.stream,
|
|
7
|
+
simulcastConfig: track.simulcastConfig ?? null,
|
|
8
|
+
encoding: track.encoding ?? null,
|
|
9
|
+
vadStatus: track.vadStatus,
|
|
10
|
+
track: track.track,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function getPeerWithDistinguishedTracks(peer) {
|
|
14
|
+
const tracks = [...peer.tracks.values()].map(trackContextToTrack);
|
|
15
|
+
const cameraTrack = tracks.find(({ metadata }) => metadata?.type === "camera");
|
|
16
|
+
const microphoneTrack = tracks.find(({ metadata }) => metadata?.type === "microphone");
|
|
17
|
+
const screenShareVideoTrack = tracks.find(({ metadata }) => metadata?.type === "screenShareVideo");
|
|
18
|
+
const screenShareAudioTrack = tracks.find(({ metadata }) => metadata?.type === "screenShareAudio");
|
|
19
|
+
return {
|
|
20
|
+
id: peer.id,
|
|
21
|
+
metadata: peer.metadata,
|
|
22
|
+
tracks,
|
|
23
|
+
cameraTrack,
|
|
24
|
+
microphoneTrack,
|
|
25
|
+
screenShareVideoTrack,
|
|
26
|
+
screenShareAudioTrack,
|
|
27
|
+
};
|
|
9
28
|
}
|
|
10
29
|
/**
|
|
11
30
|
*
|
|
12
31
|
* @category Connection
|
|
32
|
+
*
|
|
33
|
+
* @typeParam P Type of metadata set by peer while connecting to a room.
|
|
34
|
+
* @typeParam S Type of metadata set by the server while creating a peer.
|
|
13
35
|
*/
|
|
14
36
|
export function usePeers() {
|
|
15
37
|
const { clientState } = useFishjamContext();
|
|
16
38
|
const localPeer = clientState.localPeer ? getPeerWithDistinguishedTracks(clientState.localPeer) : null;
|
|
17
|
-
const
|
|
18
|
-
return { localPeer, peers };
|
|
39
|
+
const remotePeers = Object.values(clientState.peers).map((peer) => getPeerWithDistinguishedTracks(peer));
|
|
40
|
+
return { localPeer, remotePeers, peers: remotePeers };
|
|
19
41
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { FishjamClient } from "@fishjam-cloud/ts-client";
|
|
2
2
|
import type { ScreenshareApi, PeerStatus } from "../types/public";
|
|
3
|
-
import type { PeerMetadata, TrackMetadata } from "../types/internal";
|
|
4
3
|
interface ScreenShareManagerProps {
|
|
5
|
-
fishjamClient: FishjamClient
|
|
4
|
+
fishjamClient: FishjamClient;
|
|
6
5
|
getCurrentPeerStatus: () => PeerStatus;
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
@@ -11,6 +10,5 @@ interface ScreenShareManagerProps {
|
|
|
11
10
|
*/
|
|
12
11
|
export declare const useScreenShareManager: ({ fishjamClient, getCurrentPeerStatus, }: ScreenShareManagerProps) => ScreenshareApi;
|
|
13
12
|
export declare const useScreenShare: () => ScreenshareApi;
|
|
14
|
-
export declare const getTracksFromStream: (stream: MediaStream) => [MediaStreamTrack, MediaStreamTrack | null];
|
|
15
13
|
export {};
|
|
16
14
|
//# sourceMappingURL=useScreenShare.d.ts.map
|