@fishjam-cloud/react-native-client 0.5.0 → 0.7.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/README.md +6 -6
- package/android/build.gradle +6 -2
- package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +17 -16
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +64 -49
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +16 -24
- package/build/RNFishjamClientModule.d.ts +44 -11
- package/build/RNFishjamClientModule.d.ts.map +1 -1
- package/build/RNFishjamClientModule.js +18 -4
- package/build/RNFishjamClientModule.js.map +1 -1
- package/build/common/client.d.ts +3 -8
- package/build/common/client.d.ts.map +1 -1
- package/build/common/client.js +2 -6
- package/build/common/client.js.map +1 -1
- package/build/common/metadata.d.ts +2 -1
- package/build/common/metadata.d.ts.map +1 -1
- package/build/common/metadata.js +2 -1
- package/build/common/metadata.js.map +1 -1
- package/build/components/FishjamRoom/index.d.ts +21 -0
- package/build/components/FishjamRoom/index.d.ts.map +1 -1
- package/build/components/FishjamRoom/index.js +16 -1
- package/build/components/FishjamRoom/index.js.map +1 -1
- package/build/components/FishjamRoom/parsePeersToTracks.d.ts.map +1 -1
- package/build/components/FishjamRoom/parsePeersToTracks.js +4 -6
- package/build/components/FishjamRoom/parsePeersToTracks.js.map +1 -1
- package/build/components/VideoPreviewView.d.ts +7 -3
- package/build/components/VideoPreviewView.d.ts.map +1 -1
- package/build/components/VideoPreviewView.js +5 -1
- package/build/components/VideoPreviewView.js.map +1 -1
- package/build/components/VideoRendererView.d.ts +13 -0
- package/build/components/VideoRendererView.d.ts.map +1 -1
- package/build/components/VideoRendererView.js +13 -0
- package/build/components/VideoRendererView.js.map +1 -1
- package/build/debug/stats/useRTCStatistics.d.ts.map +1 -1
- package/build/debug/stats/useRTCStatistics.js +13 -13
- package/build/debug/stats/useRTCStatistics.js.map +1 -1
- package/build/hooks/internal/useFishjamEvent.d.ts +4 -0
- package/build/hooks/internal/useFishjamEvent.d.ts.map +1 -0
- package/build/hooks/internal/useFishjamEvent.js +35 -0
- package/build/hooks/internal/useFishjamEvent.js.map +1 -0
- package/build/hooks/internal/useFishjamEventState.d.ts +3 -0
- package/build/hooks/internal/useFishjamEventState.d.ts.map +1 -0
- package/build/hooks/{useFishjamEventState.js → internal/useFishjamEventState.js} +3 -1
- package/build/hooks/internal/useFishjamEventState.js.map +1 -0
- package/build/hooks/useAppScreenShare.d.ts +9 -0
- package/build/hooks/useAppScreenShare.d.ts.map +1 -1
- package/build/hooks/useAppScreenShare.js +14 -14
- package/build/hooks/useAppScreenShare.js.map +1 -1
- package/build/hooks/useAudioSettings.d.ts +4 -0
- package/build/hooks/useAudioSettings.d.ts.map +1 -1
- package/build/hooks/useAudioSettings.js +8 -11
- package/build/hooks/useAudioSettings.js.map +1 -1
- package/build/hooks/useBandwidthEstimation.d.ts +3 -0
- package/build/hooks/useBandwidthEstimation.d.ts.map +1 -1
- package/build/hooks/useBandwidthEstimation.js +9 -5
- package/build/hooks/useBandwidthEstimation.js.map +1 -1
- package/build/hooks/useCamera.d.ts +11 -33
- package/build/hooks/useCamera.d.ts.map +1 -1
- package/build/hooks/useCamera.js +18 -68
- package/build/hooks/useCamera.js.map +1 -1
- package/build/hooks/useConnection.d.ts +58 -0
- package/build/hooks/useConnection.d.ts.map +1 -0
- package/build/hooks/useConnection.js +39 -0
- package/build/hooks/useConnection.js.map +1 -0
- package/build/hooks/useForegroundService.d.ts +20 -11
- package/build/hooks/useForegroundService.d.ts.map +1 -1
- package/build/hooks/useForegroundService.js +2 -3
- package/build/hooks/useForegroundService.js.map +1 -1
- package/build/hooks/useMicrophone.d.ts.map +1 -1
- package/build/hooks/useMicrophone.js +2 -3
- package/build/hooks/useMicrophone.js.map +1 -1
- package/build/hooks/usePeerStatus.d.ts +3 -12
- package/build/hooks/usePeerStatus.d.ts.map +1 -1
- package/build/hooks/usePeerStatus.js +5 -10
- package/build/hooks/usePeerStatus.js.map +1 -1
- package/build/hooks/usePeers.d.ts +19 -22
- package/build/hooks/usePeers.d.ts.map +1 -1
- package/build/hooks/usePeers.js +21 -20
- package/build/hooks/usePeers.js.map +1 -1
- package/build/hooks/useReconnection.d.ts +3 -3
- package/build/hooks/useReconnection.d.ts.map +1 -1
- package/build/hooks/useReconnection.js +5 -10
- package/build/hooks/useReconnection.js.map +1 -1
- package/build/hooks/useScreenShare.d.ts +2 -23
- package/build/hooks/useScreenShare.d.ts.map +1 -1
- package/build/hooks/useScreenShare.js +6 -45
- package/build/hooks/useScreenShare.js.map +1 -1
- package/build/hooks/useUpdatePeerMetadata.d.ts +15 -0
- package/build/hooks/useUpdatePeerMetadata.d.ts.map +1 -0
- package/build/hooks/useUpdatePeerMetadata.js +21 -0
- package/build/hooks/useUpdatePeerMetadata.js.map +1 -0
- package/build/index.d.ts +21 -16
- package/build/index.d.ts.map +1 -1
- package/build/index.js +15 -6
- package/build/index.js.map +1 -1
- package/build/types.d.ts +0 -19
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils/errorListener.d.ts.map +1 -1
- package/build/utils/errorListener.js +2 -3
- package/build/utils/errorListener.js.map +1 -1
- package/build/utils/eventPayloadValidator.d.ts +3 -0
- package/build/utils/eventPayloadValidator.d.ts.map +1 -0
- package/build/utils/eventPayloadValidator.js +94 -0
- package/build/utils/eventPayloadValidator.js.map +1 -0
- package/ios/Events.swift +8 -8
- package/ios/RNFishjamClient.podspec +1 -1
- package/ios/RNFishjamClient.swift +45 -48
- package/ios/RNFishjamClientModule.swift +13 -14
- package/ios/Utils.swift +0 -20
- package/package.json +21 -13
- package/plugin/build/withFishjamAndroid.js +18 -20
- package/plugin/build/withFishjamIos.js +116 -110
- package/build/common/webRTC.d.ts +0 -14
- package/build/common/webRTC.d.ts.map +0 -1
- package/build/common/webRTC.js +0 -15
- package/build/common/webRTC.js.map +0 -1
- package/build/hooks/useFishjamEvent.d.ts +0 -18
- package/build/hooks/useFishjamEvent.d.ts.map +0 -1
- package/build/hooks/useFishjamEvent.js +0 -27
- package/build/hooks/useFishjamEvent.js.map +0 -1
- package/build/hooks/useFishjamEventState.d.ts +0 -3
- package/build/hooks/useFishjamEventState.d.ts.map +0 -1
- package/build/hooks/useFishjamEventState.js.map +0 -1
- /package/{LICENSE → LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForegroundService.js","sourceRoot":"","sources":["../../src/hooks/useForegroundService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useForegroundService.js","sourceRoot":"","sources":["../../src/hooks/useForegroundService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgC5D,MAAM,8BAA8B,GAAG,KAAK,IAAI,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAC7C,kBAAkB,CAAC,WAAW,CAAC,kBAAkB,CAClD,CAAC;QACF,IAAI,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CACV,6FAA6F,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAAC,EACnC,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GACO,EAAE,EAAE;IAC5B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,qBAAqB,CAAC,sBAAsB,CAAC;YAC3C,YAAY;YACZ,gBAAgB;YAChB,SAAS;YACT,WAAW;YACX,mBAAmB;YACnB,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC,EAAE;QACD,SAAS;QACT,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,mBAAmB;QACnB,iBAAiB;KAClB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAClC,MAAM,8BAA8B,EAAE,CAAC;YACvC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,gBAAgB,EAAE,CAAC;QACnB,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC","sourcesContent":["import { useEffect, useState } from 'react';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nimport { PermissionsAndroid, Platform } from 'react-native';\n\n/**\n * A type representing the configuration for foreground service permissions.\n */\nexport type ForegroundServiceConfig = {\n /**\n * Indicates whether the camera is enabled for the foreground service.\n */\n enableCamera?: boolean;\n /**\n * Indicates whether the microphone is enabled for the foreground service.\n */\n enableMicrophone?: boolean;\n /**\n * The id of the channel. Must be unique per package.\n */\n channelId?: string;\n /**\n * The user visible name of the channel.\n */\n channelName?: string;\n /**\n * The title (first row) of the notification, in a standard notification.\n */\n notificationTitle?: string;\n /**\n * The text (second row) of the notification, in a standard notification.\n */\n notificationContent?: string;\n};\n\nconst requestNotificationsPermission = async () => {\n try {\n const result = await PermissionsAndroid.request(\n PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,\n );\n if (result !== PermissionsAndroid.RESULTS.GRANTED) {\n console.warn(\n \"Notifications permission not granted. User won't be able to see a the app is in background.\",\n );\n }\n } catch (err) {\n console.warn(err);\n }\n};\n\nconst useForegroundServiceAndroid = ({\n enableCamera,\n enableMicrophone,\n channelId,\n channelName,\n notificationContent,\n notificationTitle,\n}: ForegroundServiceConfig) => {\n const [isConfigured, setIsConfigured] = useState(false);\n\n useEffect(() => {\n if (!isConfigured) {\n return;\n }\n RNFishjamClientModule.startForegroundService({\n enableCamera,\n enableMicrophone,\n channelId,\n channelName,\n notificationContent,\n notificationTitle,\n });\n }, [\n channelId,\n channelName,\n enableCamera,\n enableMicrophone,\n isConfigured,\n notificationContent,\n notificationTitle,\n ]);\n\n useEffect(() => {\n const runConfiguration = async () => {\n await requestNotificationsPermission();\n setIsConfigured(true);\n };\n runConfiguration();\n return () => RNFishjamClientModule.stopForegroundService();\n }, []);\n};\n\nconst emptyFunction = () => {};\n\n/**\n * A hook for managing a foreground service on Android. Does nothing on other platforms.\n * You can use this hook to keep your app running in the background. You're also required to run a foreground service when screen sharing.\n *\n * @param {Object} config - Configuration options for the foreground service.\n * @param {boolean} config.enableCamera - Flag to enable or disable camera usage in the foreground service. Only enable after the user has granted the necessary permissions.\n * @param {boolean} config.enableMicrophone - Flag to enable or disable microphone usage in the foreground service. Only enable after the user has granted the necessary permissions.\n * @param {Object} config.channelId - The id of the channel. Must be unique per package.\n * @param {Object} config.channelName - The user visible name of the channel.\n * @param {Object} config.notificationTitle - The title (first row) of the notification, in a standard notification.\n * @param {Object} config.notificationContent - The text (second row) of the notification, in a standard notification.\n * @group Hooks\n * @category Connection\n */\nexport const useForegroundService = Platform.select({\n android: useForegroundServiceAndroid,\n default: emptyFunction,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../src/hooks/useMicrophone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMicrophone.d.ts","sourceRoot":"","sources":["../../src/hooks/useMicrophone.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,aAAa;IAWzB,+CAA+C;;IAE/C,2CAA2C;;EAG9C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
3
|
-
import {
|
|
4
|
-
import { useFishjamEventState } from './useFishjamEventState';
|
|
2
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
3
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
5
4
|
/**
|
|
6
5
|
* This hook can toggle microphone on/off and provides current microphone state.
|
|
7
6
|
* @category Devices
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMicrophone.js","sourceRoot":"","sources":["../../src/hooks/useMicrophone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,qBAAqB,
|
|
1
|
+
{"version":3,"file":"useMicrophone.js","sourceRoot":"","sources":["../../src/hooks/useMicrophone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,cAAc,GAAG,oBAAoB,CACzC,gBAAgB,CAAC,cAAc,EAC/B,qBAAqB,CAAC,cAAc,CACrC,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC9C,MAAM,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,+CAA+C;QAC/C,cAAc;QACd,2CAA2C;QAC3C,gBAAgB;KACjB,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback } from 'react';\n\nimport RNFishjamClientModule, {\n ReceivableEvents,\n} from '../RNFishjamClientModule';\nimport { useFishjamEventState } from './internal/useFishjamEventState';\n\n/**\n * This hook can toggle microphone on/off and provides current microphone state.\n * @category Devices\n * @group Hooks\n */\nexport function useMicrophone() {\n const isMicrophoneOn = useFishjamEventState(\n ReceivableEvents.IsMicrophoneOn,\n RNFishjamClientModule.isMicrophoneOn,\n );\n\n const toggleMicrophone = useCallback(async () => {\n await RNFishjamClientModule.toggleMicrophone();\n }, []);\n\n return {\n /** Informs if microphone is streaming audio */\n isMicrophoneOn,\n /** Function to toggle microphone on/off */\n toggleMicrophone,\n };\n}\n"]}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represents the possible statuses of a peer connection to a room (websocket state).
|
|
3
|
-
*
|
|
4
|
-
* idle - Peer is not connected, either never connected or successfully disconnected.
|
|
5
|
-
* connecting - Peer is in the process of connecting.
|
|
6
|
-
* connected - Peer has successfully connected.
|
|
7
|
-
* error - There was an error in the connection process.
|
|
8
|
-
*/
|
|
9
|
-
export type PeerStatus = 'connecting' | 'connected' | 'error' | 'idle';
|
|
10
1
|
/**
|
|
11
2
|
* This hook provides live updates of current connection state of the local peer to a room (websocket state)
|
|
12
3
|
* @returns Current peer status.
|
|
13
|
-
* @
|
|
14
|
-
* @
|
|
4
|
+
* @deprecated
|
|
5
|
+
* @ignore
|
|
15
6
|
*/
|
|
16
7
|
export declare const usePeerStatus: () => {
|
|
17
|
-
peerStatus: "
|
|
8
|
+
peerStatus: import("./useConnection").PeerStatus;
|
|
18
9
|
};
|
|
19
10
|
//# sourceMappingURL=usePeerStatus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeerStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeerStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePeerStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeerStatus.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;CAOzB,CAAC"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
1
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
2
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
4
3
|
/**
|
|
5
4
|
* This hook provides live updates of current connection state of the local peer to a room (websocket state)
|
|
6
5
|
* @returns Current peer status.
|
|
7
|
-
* @
|
|
8
|
-
* @
|
|
6
|
+
* @deprecated
|
|
7
|
+
* @ignore
|
|
9
8
|
*/
|
|
10
9
|
export const usePeerStatus = () => {
|
|
11
|
-
const
|
|
12
|
-
const onPeerStatusChanged = useCallback((status) => {
|
|
13
|
-
status && setPeerStatus(status);
|
|
14
|
-
}, []);
|
|
15
|
-
useFishjamEvent(ReceivableEvents.PeerStatusChanged, onPeerStatusChanged);
|
|
10
|
+
const peerStatus = useFishjamEventState(ReceivableEvents.PeerStatusChanged, RNFishjamClientModule.peerStatus);
|
|
16
11
|
return { peerStatus };
|
|
17
12
|
};
|
|
18
13
|
//# sourceMappingURL=usePeerStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeerStatus.js","sourceRoot":"","sources":["../../src/hooks/usePeerStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"usePeerStatus.js","sourceRoot":"","sources":["../../src/hooks/usePeerStatus.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,UAAU,GAAG,oBAAoB,CACrC,gBAAgB,CAAC,iBAAiB,EAClC,qBAAqB,CAAC,UAAU,CACjC,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC,CAAC","sourcesContent":["import RNFishjamClientModule, {\n ReceivableEvents,\n} from '../RNFishjamClientModule';\nimport { useFishjamEventState } from './internal/useFishjamEventState';\n\n/**\n * This hook provides live updates of current connection state of the local peer to a room (websocket state)\n * @returns Current peer status.\n * @deprecated\n * @ignore\n */\nexport const usePeerStatus = () => {\n const peerStatus = useFishjamEventState(\n ReceivableEvents.PeerStatusChanged,\n RNFishjamClientModule.peerStatus,\n );\n\n return { peerStatus };\n};\n"]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { Brand, GenericMetadata,
|
|
1
|
+
import { Brand, GenericMetadata, TrackMetadata } from '../types';
|
|
2
2
|
export type PeerId = Brand<string, 'PeerId'>;
|
|
3
3
|
export type TrackId = Brand<string, 'TrackId'>;
|
|
4
4
|
export type TrackType = 'Audio' | 'Video';
|
|
5
5
|
/**
|
|
6
6
|
* Type describing Voice Activity Detection statuses.
|
|
7
7
|
*
|
|
8
|
-
* speech
|
|
9
|
-
* silence - lack of voice activity has been detected
|
|
8
|
+
* - `speech` voice activity has been detected
|
|
9
|
+
* - `silence` - lack of voice activity has been detected
|
|
10
10
|
*/
|
|
11
11
|
export type VadStatus = 'silence' | 'speech';
|
|
12
12
|
export type PeerTrackMetadata<PeerMetadata, ServerMetadata> = {
|
|
13
13
|
peer: PeerMetadata;
|
|
14
14
|
server: ServerMetadata;
|
|
15
15
|
};
|
|
16
|
-
type TrackBase = {
|
|
16
|
+
export type TrackBase = {
|
|
17
17
|
id: TrackId;
|
|
18
18
|
type: TrackType;
|
|
19
19
|
isActive: boolean;
|
|
@@ -25,8 +25,6 @@ export type AudioTrack = TrackBase & {
|
|
|
25
25
|
};
|
|
26
26
|
export type VideoTrack = TrackBase & {
|
|
27
27
|
type: 'Video';
|
|
28
|
-
encoding: TrackEncoding | null;
|
|
29
|
-
encodingReason: EncodingReason | null;
|
|
30
28
|
};
|
|
31
29
|
export type Track = VideoTrack | AudioTrack;
|
|
32
30
|
/**
|
|
@@ -68,33 +66,32 @@ export type Peer<PeerMetadata extends GenericMetadata = GenericMetadata, ServerM
|
|
|
68
66
|
* @template ServerMetadata - Type for server-specific metadata
|
|
69
67
|
*/
|
|
70
68
|
export type UsePeersResult<PeerMetadata extends GenericMetadata = GenericMetadata, ServerMetadata extends GenericMetadata = GenericMetadata> = {
|
|
69
|
+
localPeer: PeerWithTracks<PeerMetadata, ServerMetadata> | null;
|
|
70
|
+
remotePeers: PeerWithTracks<PeerMetadata, ServerMetadata>[];
|
|
71
|
+
peers: Peer<PeerMetadata, ServerMetadata>[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Hook that provides live updates of room peers.
|
|
75
|
+
* @template PeerMetadata - Type for peer-specific metadata
|
|
76
|
+
* @template ServerMetadata - Type for server-specific metadata
|
|
77
|
+
* @category Connection
|
|
78
|
+
* @group Hooks
|
|
79
|
+
*/
|
|
80
|
+
export declare function usePeers<PeerMetadata extends GenericMetadata = GenericMetadata, ServerMetadata extends GenericMetadata = GenericMetadata>(): {
|
|
71
81
|
/**
|
|
72
82
|
* The local peer with distinguished tracks (camera, microphone, screen share).
|
|
73
83
|
* Will be null if the local peer is not found.
|
|
74
84
|
*/
|
|
75
|
-
localPeer: PeerWithTracks<
|
|
85
|
+
localPeer: PeerWithTracks<GenericMetadata, GenericMetadata> | null;
|
|
76
86
|
/**
|
|
77
87
|
* Array of remote peers with distinguished tracks (camera, microphone, screen share).
|
|
78
88
|
*/
|
|
79
|
-
remotePeers: PeerWithTracks<
|
|
89
|
+
remotePeers: PeerWithTracks<GenericMetadata, GenericMetadata>[];
|
|
80
90
|
/**
|
|
81
91
|
* @deprecated Use localPeer and remotePeers instead
|
|
82
92
|
* Legacy array containing all peers (both local and remote) without distinguished tracks.
|
|
83
93
|
* This property will be removed in future versions.
|
|
84
94
|
*/
|
|
85
|
-
peers: Peer<
|
|
95
|
+
peers: Peer<GenericMetadata, GenericMetadata>[];
|
|
86
96
|
};
|
|
87
|
-
/**
|
|
88
|
-
* Hook that provides live updates of room peers.
|
|
89
|
-
* @template PeerMetadata - Type for peer-specific metadata
|
|
90
|
-
* @template ServerMetadata - Type for server-specific metadata
|
|
91
|
-
* @returns {UsePeersResult<PeerMetadata, ServerMetadata>} Object containing:
|
|
92
|
-
* - localPeer: The local peer with distinguished tracks (camera, microphone, screen share)
|
|
93
|
-
* - remotePeers: Array of remote peers with distinguished tracks
|
|
94
|
-
* - peers: Deprecated array of all peers without distinguished tracks
|
|
95
|
-
* @category Connection
|
|
96
|
-
* @group Hooks
|
|
97
|
-
*/
|
|
98
|
-
export declare function usePeers<PeerMetadata extends GenericMetadata = GenericMetadata, ServerMetadata extends GenericMetadata = GenericMetadata>(): UsePeersResult<PeerMetadata, ServerMetadata>;
|
|
99
|
-
export {};
|
|
100
97
|
//# sourceMappingURL=usePeers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"usePeers.d.ts","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMjE,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7C,MAAM,MAAM,iBAAiB,CAAC,YAAY,EAAE,cAAc,IAAI;IAC5D,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;AAC5C;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC,qBAAqB,CAAC,EAAE,UAAU,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,cAAc,SAAS,eAAe,GAAG,eAAe,IACtD,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,mBAAmB,CAAC;AAE7D,MAAM,MAAM,IAAI,CACd,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,cAAc,SAAS,eAAe,GAAG,eAAe,IACtD;IACF;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC1D;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAqDF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,cAAc,SAAS,eAAe,GAAG,eAAe,IACtD;IACF,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAE/D,WAAW,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;IAE5D,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;CAC7C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,cAAc,SAAS,eAAe,GAAG,eAAe;IAoBtD;;;OAGG;;IAEH;;OAEG;;IAEH;;;;OAIG;;EAGN"}
|
package/build/hooks/usePeers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
3
|
-
import {
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
3
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
4
4
|
function addIsActiveToTracks(peers) {
|
|
5
5
|
return peers.map((peer) => ({
|
|
6
6
|
...peer,
|
|
@@ -39,31 +39,32 @@ function getPeerWithDistinguishedTracks(peer) {
|
|
|
39
39
|
* Hook that provides live updates of room peers.
|
|
40
40
|
* @template PeerMetadata - Type for peer-specific metadata
|
|
41
41
|
* @template ServerMetadata - Type for server-specific metadata
|
|
42
|
-
* @returns {UsePeersResult<PeerMetadata, ServerMetadata>} Object containing:
|
|
43
|
-
* - localPeer: The local peer with distinguished tracks (camera, microphone, screen share)
|
|
44
|
-
* - remotePeers: Array of remote peers with distinguished tracks
|
|
45
|
-
* - peers: Deprecated array of all peers without distinguished tracks
|
|
46
42
|
* @category Connection
|
|
47
43
|
* @group Hooks
|
|
48
44
|
*/
|
|
49
45
|
export function usePeers() {
|
|
50
|
-
const
|
|
46
|
+
const peers = useFishjamEventState(ReceivableEvents.PeersUpdate, RNFishjamClientModule.getPeers(), (peersWithoutActive) => addIsActiveToTracks(peersWithoutActive));
|
|
51
47
|
const localPeer = useMemo(() => {
|
|
52
48
|
const localPeerData = peers.find((peer) => peer.isLocal);
|
|
53
49
|
return localPeerData ? getPeerWithDistinguishedTracks(localPeerData) : null;
|
|
54
50
|
}, [peers]);
|
|
55
51
|
const remotePeers = useMemo(() => peers.filter((peer) => !peer.isLocal).map(getPeerWithDistinguishedTracks), [peers]);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
return {
|
|
53
|
+
/**
|
|
54
|
+
* The local peer with distinguished tracks (camera, microphone, screen share).
|
|
55
|
+
* Will be null if the local peer is not found.
|
|
56
|
+
*/
|
|
57
|
+
localPeer,
|
|
58
|
+
/**
|
|
59
|
+
* Array of remote peers with distinguished tracks (camera, microphone, screen share).
|
|
60
|
+
*/
|
|
61
|
+
remotePeers,
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Use localPeer and remotePeers instead
|
|
64
|
+
* Legacy array containing all peers (both local and remote) without distinguished tracks.
|
|
65
|
+
* This property will be removed in future versions.
|
|
66
|
+
*/
|
|
67
|
+
peers,
|
|
68
|
+
};
|
|
68
69
|
}
|
|
69
70
|
//# sourceMappingURL=usePeers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeers.js","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"usePeers.js","sourceRoot":"","sources":["../../src/hooks/usePeers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAgFvE,SAAS,mBAAmB,CAI1B,KAAwD;IAExD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,KAAK;YACR,QAAQ,EACL,KAAsC,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;SACpE,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,8BAA8B,CAIrC,IAAwC;IAExC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,mBAAmB,GAAwB,EAAE,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;QAEvC,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,mBAAmB,CAAC,WAAW,GAAG,KAAmB,CAAC;gBACtD,MAAM;YACR,KAAK,YAAY;gBACf,mBAAmB,CAAC,eAAe,GAAG,KAAmB,CAAC;gBAC1D,MAAM;YACR,KAAK,kBAAkB;gBACrB,mBAAmB,CAAC,qBAAqB,GAAG,KAAmB,CAAC;gBAChE,MAAM;YACR,KAAK,kBAAkB;gBACrB,mBAAmB,CAAC,qBAAqB,GAAG,KAAmB,CAAC;gBAChE,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,GAAG,mBAAmB;KACvB,CAAC;AACJ,CAAC;AAkBD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ;IAItB,MAAM,KAAK,GAAG,oBAAoB,CAChC,gBAAgB,CAAC,WAAW,EAC5B,qBAAqB,CAAC,QAAQ,EAAgC,EAC9D,CAAC,kBAAkB,EAAE,EAAE,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAChE,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CACH,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAC3E,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,OAAO;QACL;;;WAGG;QACH,SAAS;QACT;;WAEG;QACH,WAAW;QACX;;;;WAIG;QACH,KAAK;KACN,CAAC;AACJ,CAAC","sourcesContent":["import { useMemo } from 'react';\n\nimport { Brand, GenericMetadata, TrackMetadata } from '../types';\nimport RNFishjamClientModule, {\n ReceivableEvents,\n} from '../RNFishjamClientModule';\nimport { useFishjamEventState } from './internal/useFishjamEventState';\n\nexport type PeerId = Brand<string, 'PeerId'>;\nexport type TrackId = Brand<string, 'TrackId'>;\n\nexport type TrackType = 'Audio' | 'Video';\n\n/**\n * Type describing Voice Activity Detection statuses.\n *\n * - `speech` voice activity has been detected\n * - `silence` - lack of voice activity has been detected\n */\nexport type VadStatus = 'silence' | 'speech';\n\nexport type PeerTrackMetadata<PeerMetadata, ServerMetadata> = {\n peer: PeerMetadata;\n server: ServerMetadata;\n};\n\nexport type TrackBase = {\n id: TrackId;\n type: TrackType;\n isActive: boolean;\n metadata?: TrackMetadata;\n};\n\nexport type AudioTrack = TrackBase & {\n type: 'Audio';\n vadStatus: VadStatus | undefined;\n};\n\nexport type VideoTrack = TrackBase & {\n type: 'Video';\n};\n\nexport type Track = VideoTrack | AudioTrack;\n/**\n * Type describing possible reasons of currently selected encoding.\n *\n * - other - the exact reason couldn't be determined\n * - encoding_inactive - previously selected encoding became inactive\n * - low_bandwidth - there is no longer enough bandwidth to maintain previously selected encoding\n */\nexport type EncodingReason = 'other' | 'encoding_inactive' | 'low_bandwidth';\n\nexport type DistinguishedTracks = {\n cameraTrack?: VideoTrack;\n microphoneTrack?: AudioTrack;\n screenShareVideoTrack?: VideoTrack;\n screenShareAudioTrack?: AudioTrack;\n};\n\nexport type PeerWithTracks<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n> = Peer<PeerMetadata, ServerMetadata> & DistinguishedTracks;\n\nexport type Peer<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n> = {\n /**\n * id used to identify a peer\n */\n id: PeerId;\n /**\n * whether the peer is local or remote\n */\n isLocal: boolean;\n /**\n * a type containing peer and server metadata\n */\n metadata: PeerTrackMetadata<PeerMetadata, ServerMetadata>;\n /**\n * a list of peer's video and audio tracks\n */\n tracks: Track[];\n};\n\nfunction addIsActiveToTracks<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n>(\n peers: ReadonlyArray<Peer<PeerMetadata, ServerMetadata>>,\n): Peer<PeerMetadata, ServerMetadata>[] {\n return peers.map((peer) => ({\n ...peer,\n tracks: peer.tracks.map((track) => ({\n ...track,\n isActive:\n (track as { metadata?: TrackMetadata })?.metadata?.active ?? true,\n })),\n }));\n}\n\nfunction getPeerWithDistinguishedTracks<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n>(\n peer: Peer<PeerMetadata, ServerMetadata>,\n): PeerWithTracks<PeerMetadata, ServerMetadata> {\n const { tracks: peerTracks } = peer;\n\n const distinguishedTracks: DistinguishedTracks = {};\n\n for (const track of peerTracks) {\n const trackType = track.metadata?.type;\n\n switch (trackType) {\n case 'camera':\n distinguishedTracks.cameraTrack = track as VideoTrack;\n break;\n case 'microphone':\n distinguishedTracks.microphoneTrack = track as AudioTrack;\n break;\n case 'screenShareVideo':\n distinguishedTracks.screenShareVideoTrack = track as VideoTrack;\n break;\n case 'screenShareAudio':\n distinguishedTracks.screenShareAudioTrack = track as AudioTrack;\n break;\n }\n }\n\n return {\n ...peer,\n ...distinguishedTracks,\n };\n}\n\n/**\n * Result type for the usePeers hook.\n * @template PeerMetadata - Type for peer-specific metadata\n * @template ServerMetadata - Type for server-specific metadata\n */\nexport type UsePeersResult<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n> = {\n localPeer: PeerWithTracks<PeerMetadata, ServerMetadata> | null;\n\n remotePeers: PeerWithTracks<PeerMetadata, ServerMetadata>[];\n\n peers: Peer<PeerMetadata, ServerMetadata>[];\n};\n\n/**\n * Hook that provides live updates of room peers.\n * @template PeerMetadata - Type for peer-specific metadata\n * @template ServerMetadata - Type for server-specific metadata\n * @category Connection\n * @group Hooks\n */\nexport function usePeers<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n ServerMetadata extends GenericMetadata = GenericMetadata,\n>() {\n const peers = useFishjamEventState(\n ReceivableEvents.PeersUpdate,\n RNFishjamClientModule.getPeers<PeerMetadata, ServerMetadata>(),\n (peersWithoutActive) => addIsActiveToTracks(peersWithoutActive),\n );\n\n const localPeer = useMemo(() => {\n const localPeerData = peers.find((peer) => peer.isLocal);\n return localPeerData ? getPeerWithDistinguishedTracks(localPeerData) : null;\n }, [peers]);\n\n const remotePeers = useMemo(\n () =>\n peers.filter((peer) => !peer.isLocal).map(getPeerWithDistinguishedTracks),\n [peers],\n );\n\n return {\n /**\n * The local peer with distinguished tracks (camera, microphone, screen share).\n * Will be null if the local peer is not found.\n */\n localPeer,\n /**\n * Array of remote peers with distinguished tracks (camera, microphone, screen share).\n */\n remotePeers,\n /**\n * @deprecated Use localPeer and remotePeers instead\n * Legacy array containing all peers (both local and remote) without distinguished tracks.\n * This property will be removed in future versions.\n */\n peers,\n };\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export type ReconnectionStatus = 'idle' | 'reconnecting' | 'error';
|
|
2
1
|
/**
|
|
3
2
|
* Information about reconnection status.
|
|
4
3
|
* Could be used to retrieve connection status, once user will be disconnected
|
|
5
4
|
* @group Hooks
|
|
6
|
-
* @
|
|
5
|
+
* @deprecated
|
|
6
|
+
* @ignore
|
|
7
7
|
*/
|
|
8
8
|
export declare function useReconnection(): {
|
|
9
|
-
reconnectionStatus: ReconnectionStatus;
|
|
9
|
+
reconnectionStatus: import("./useConnection").ReconnectionStatus;
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=useReconnection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReconnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useReconnection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useReconnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useReconnection.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,eAAe;;EAO9B"}
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
2
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
3
3
|
/**
|
|
4
4
|
* Information about reconnection status.
|
|
5
5
|
* Could be used to retrieve connection status, once user will be disconnected
|
|
6
6
|
* @group Hooks
|
|
7
|
-
* @
|
|
7
|
+
* @deprecated
|
|
8
|
+
* @ignore
|
|
8
9
|
*/
|
|
9
10
|
export function useReconnection() {
|
|
10
|
-
const
|
|
11
|
-
const setStatusIdle = useCallback(() => setReconnectionStatus('idle'), []);
|
|
12
|
-
const setStatusReconnecting = useCallback(() => setReconnectionStatus('reconnecting'), []);
|
|
13
|
-
const setStatusError = useCallback(() => setReconnectionStatus('error'), []);
|
|
14
|
-
useFishjamEvent(ReceivableEvents.Reconnected, setStatusIdle);
|
|
15
|
-
useFishjamEvent(ReceivableEvents.ReconnectionStarted, setStatusReconnecting);
|
|
16
|
-
useFishjamEvent(ReceivableEvents.ReconnectionRetriesLimitReached, setStatusError);
|
|
11
|
+
const reconnectionStatus = useFishjamEventState(ReceivableEvents.ReconnectionStatusChanged, RNFishjamClientModule.reconnectionStatus);
|
|
17
12
|
return { reconnectionStatus };
|
|
18
13
|
}
|
|
19
14
|
//# sourceMappingURL=useReconnection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReconnection.js","sourceRoot":"","sources":["../../src/hooks/useReconnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useReconnection.js","sourceRoot":"","sources":["../../src/hooks/useReconnection.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,gBAAgB,CAAC,yBAAyB,EAC1C,qBAAqB,CAAC,kBAAkB,CACzC,CAAC;IAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAChC,CAAC","sourcesContent":["import RNFishjamClientModule, {\n ReceivableEvents,\n} from '../RNFishjamClientModule';\nimport { useFishjamEventState } from './internal/useFishjamEventState';\n\n/**\n * Information about reconnection status.\n * Could be used to retrieve connection status, once user will be disconnected\n * @group Hooks\n * @deprecated\n * @ignore\n */\nexport function useReconnection() {\n const reconnectionStatus = useFishjamEventState(\n ReceivableEvents.ReconnectionStatusChanged,\n RNFishjamClientModule.reconnectionStatus,\n );\n\n return { reconnectionStatus };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SimulcastConfig, TrackMetadata } from '../types';
|
|
2
2
|
export type ScreenShareQuality = 'VGA' | 'HD5' | 'HD15' | 'FHD15' | 'FHD30';
|
|
3
3
|
export type ScreenShareOptions = {
|
|
4
4
|
/**
|
|
@@ -8,10 +8,6 @@ export type ScreenShareOptions = {
|
|
|
8
8
|
* @default `HD15``
|
|
9
9
|
*/
|
|
10
10
|
quality: ScreenShareQuality;
|
|
11
|
-
/**
|
|
12
|
-
* bandwidth limit of a screen share track. By default there is no bandwidth limit.
|
|
13
|
-
*/
|
|
14
|
-
maxBandwidth: TrackBandwidthLimit;
|
|
15
11
|
};
|
|
16
12
|
export type ScreenShareOptionsInternal = {
|
|
17
13
|
screenShareMetadata: TrackMetadata & {
|
|
@@ -25,7 +21,7 @@ export type ScreenShareOptionsInternal = {
|
|
|
25
21
|
/**
|
|
26
22
|
* This hook can toggle screen sharing on/off and provides current screen share state.
|
|
27
23
|
* @returns An object with functions to manage screen share.
|
|
28
|
-
* @category
|
|
24
|
+
* @category Connection
|
|
29
25
|
* @group Hooks
|
|
30
26
|
*/
|
|
31
27
|
export declare function useScreenShare(): {
|
|
@@ -37,22 +33,5 @@ export declare function useScreenShare(): {
|
|
|
37
33
|
*/
|
|
38
34
|
toggleScreenShare: (screenShareOptions?: Partial<ScreenShareOptions>) => Promise<void>;
|
|
39
35
|
handleScreenSharePermission: () => Promise<"granted" | "denied">;
|
|
40
|
-
/**
|
|
41
|
-
* @deprecated
|
|
42
|
-
*/
|
|
43
|
-
setScreenShareTrackBandwidth: (bandwidth: BandwidthLimit) => Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Toggles simulcast encoding of a screen share track on/off
|
|
46
|
-
* @param encoding encoding to toggle
|
|
47
|
-
* @deprecated
|
|
48
|
-
*/
|
|
49
|
-
toggleScreenShareTrackEncoding: (encoding: TrackEncoding) => Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* updates maximum bandwidth for the given simulcast encoding of the screen share track
|
|
52
|
-
* @param encoding encoding to update
|
|
53
|
-
* @param bandwidth BandwidthLimit to set
|
|
54
|
-
* @deprecated
|
|
55
|
-
*/
|
|
56
|
-
setScreenShareTrackEncodingBandwidth: (encoding: TrackEncoding, bandwidth: BandwidthLimit) => Promise<void>;
|
|
57
36
|
};
|
|
58
37
|
//# sourceMappingURL=useScreenShare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO1D,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG;IACvC,mBAAmB,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AASF;;;;;GAKG;AACH,wBAAgB,cAAc;;;IA2C1B;;;OAGG;6CA3BwB,OAAO,CAAC,kBAAkB,CAAC;;EA+BzD"}
|
|
@@ -1,33 +1,20 @@
|
|
|
1
|
-
import { useCallback
|
|
2
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
|
-
import {
|
|
4
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
5
5
|
const defaultSimulcastConfig = () => ({
|
|
6
6
|
enabled: false,
|
|
7
|
-
activeEncodings: [],
|
|
8
7
|
});
|
|
9
8
|
let screenShareSimulcastConfig = defaultSimulcastConfig();
|
|
10
9
|
/**
|
|
11
10
|
* This hook can toggle screen sharing on/off and provides current screen share state.
|
|
12
11
|
* @returns An object with functions to manage screen share.
|
|
13
|
-
* @category
|
|
12
|
+
* @category Connection
|
|
14
13
|
* @group Hooks
|
|
15
14
|
*/
|
|
16
15
|
export function useScreenShare() {
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
useFishjamEvent(ReceivableEvents.IsScreenShareOn, setIsScreenShareOn);
|
|
20
|
-
const toggleScreenShareTrackEncoding = useCallback(async (encoding) => {
|
|
21
|
-
screenShareSimulcastConfig =
|
|
22
|
-
await RNFishjamClientModule.toggleScreenShareTrackEncoding(encoding);
|
|
23
|
-
setSimulcastConfig(screenShareSimulcastConfig);
|
|
24
|
-
}, []);
|
|
25
|
-
const setScreenShareTrackEncodingBandwidth = useCallback(async (encoding, bandwidth) => {
|
|
26
|
-
await RNFishjamClientModule.setScreenShareTrackEncodingBandwidth(encoding, bandwidth);
|
|
27
|
-
}, []);
|
|
28
|
-
const setScreenShareTrackBandwidth = useCallback(async (bandwidth) => {
|
|
29
|
-
await RNFishjamClientModule.setScreenShareTrackBandwidth(bandwidth);
|
|
30
|
-
}, []);
|
|
16
|
+
const isScreenShareOn = useFishjamEventState(ReceivableEvents.IsScreenShareOn, RNFishjamClientModule.isScreenShareOn);
|
|
17
|
+
const simulcastConfig = useFishjamEventState(ReceivableEvents.SimulcastConfigUpdate, screenShareSimulcastConfig);
|
|
31
18
|
const handleScreenSharePermission = useCallback(async () => {
|
|
32
19
|
if (Platform.OS === 'android') {
|
|
33
20
|
return await RNFishjamClientModule.handleScreenSharePermission();
|
|
@@ -50,7 +37,6 @@ export function useScreenShare() {
|
|
|
50
37
|
};
|
|
51
38
|
await RNFishjamClientModule.toggleScreenShare(options);
|
|
52
39
|
screenShareSimulcastConfig = defaultSimulcastConfig(); //to do: sync with camera settings
|
|
53
|
-
setSimulcastConfig(screenShareSimulcastConfig);
|
|
54
40
|
}, [isScreenShareOn, handleScreenSharePermission]);
|
|
55
41
|
return {
|
|
56
42
|
isScreenShareOn,
|
|
@@ -61,31 +47,6 @@ export function useScreenShare() {
|
|
|
61
47
|
*/
|
|
62
48
|
toggleScreenShare,
|
|
63
49
|
handleScreenSharePermission,
|
|
64
|
-
/**
|
|
65
|
-
* @deprecated
|
|
66
|
-
*/
|
|
67
|
-
setScreenShareTrackBandwidth,
|
|
68
|
-
/**
|
|
69
|
-
* Toggles simulcast encoding of a screen share track on/off
|
|
70
|
-
* @param encoding encoding to toggle
|
|
71
|
-
* @deprecated
|
|
72
|
-
*/
|
|
73
|
-
toggleScreenShareTrackEncoding,
|
|
74
|
-
/**
|
|
75
|
-
* updates maximum bandwidth for the given simulcast encoding of the screen share track
|
|
76
|
-
* @param encoding encoding to update
|
|
77
|
-
* @param bandwidth BandwidthLimit to set
|
|
78
|
-
* @deprecated
|
|
79
|
-
*/
|
|
80
|
-
setScreenShareTrackEncodingBandwidth,
|
|
81
|
-
/**
|
|
82
|
-
* updates maximum bandwidth for the screen share track. This value directly translates
|
|
83
|
-
* to quality of the stream and the amount of RTP packets being sent. In case simulcast
|
|
84
|
-
* is enabled bandwidth is split between all of the variant streams proportionally to
|
|
85
|
-
* their resolution
|
|
86
|
-
* @param bandwidth BandwidthLimit to set
|
|
87
|
-
* @deprecated
|
|
88
|
-
*/
|
|
89
50
|
};
|
|
90
51
|
}
|
|
91
52
|
//# sourceMappingURL=useScreenShare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreenShare.js","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"useScreenShare.js","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,qBAAqB,EAAE,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAqBvE,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAClC,CAAC;IACC,OAAO,EAAE,KAAK;CACf,CAA2B,CAAC;AAE/B,IAAI,0BAA0B,GAAoB,sBAAsB,EAAE,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,eAAe,GAAG,oBAAoB,CAC1C,gBAAgB,CAAC,eAAe,EAChC,qBAAqB,CAAC,eAAe,CACtC,CAAC;IAEF,MAAM,eAAe,GAAG,oBAAoB,CAC1C,gBAAgB,CAAC,qBAAqB,EACtC,0BAA0B,CAC3B,CAAC;IAEF,MAAM,2BAA2B,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,qBAAqB,CAAC,2BAA2B,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,qBAAkD,EAAE,EAAE,EAAE;QAC7D,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,2BAA2B,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG;YACd,GAAG,kBAAkB;YACrB,mBAAmB,EAAE;gBACnB,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,kBAA2B;gBACjC,MAAM,EAAE,CAAC,eAAe;aACzB;SACF,CAAC;QACF,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvD,0BAA0B,GAAG,sBAAsB,EAAE,CAAC,CAAC,kCAAkC;IAC3F,CAAC,EACD,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAC/C,CAAC;IAEF,OAAO;QACL,eAAe;QACf,eAAe;QAEf;;;WAGG;QACH,iBAAiB;QACjB,2BAA2B;KAC5B,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback } from 'react';\n\nimport { SimulcastConfig, TrackMetadata } from '../types';\nimport RNFishjamClientModule, {\n ReceivableEvents,\n} from '../RNFishjamClientModule';\nimport { Platform } from 'react-native';\nimport { useFishjamEventState } from './internal/useFishjamEventState';\n\nexport type ScreenShareQuality = 'VGA' | 'HD5' | 'HD15' | 'FHD15' | 'FHD30';\n\nexport type ScreenShareOptions = {\n /**\n * Resolution + fps of screen share track, one of: `VGA`, `HD5`, `HD15`, `FHD15`, `FHD30`.\n * Note that quality might be worse than specified due to device capabilities, internet\n * connection etc.\n * @default `HD15``\n */\n quality: ScreenShareQuality;\n};\nexport type ScreenShareOptionsInternal = {\n screenShareMetadata: TrackMetadata & { displayName?: string };\n /**\n * SimulcastConfig of a screen share track. By default simulcast is disabled.\n */\n simulcastConfig: SimulcastConfig;\n};\n\nconst defaultSimulcastConfig = () =>\n ({\n enabled: false,\n }) satisfies SimulcastConfig;\n\nlet screenShareSimulcastConfig: SimulcastConfig = defaultSimulcastConfig();\n\n/**\n * This hook can toggle screen sharing on/off and provides current screen share state.\n * @returns An object with functions to manage screen share.\n * @category Connection\n * @group Hooks\n */\nexport function useScreenShare() {\n const isScreenShareOn = useFishjamEventState(\n ReceivableEvents.IsScreenShareOn,\n RNFishjamClientModule.isScreenShareOn,\n );\n\n const simulcastConfig = useFishjamEventState(\n ReceivableEvents.SimulcastConfigUpdate,\n screenShareSimulcastConfig,\n );\n\n const handleScreenSharePermission = useCallback(async () => {\n if (Platform.OS === 'android') {\n return await RNFishjamClientModule.handleScreenSharePermission();\n }\n return 'denied';\n }, []);\n\n const toggleScreenShare = useCallback(\n async (screenShareOptions: Partial<ScreenShareOptions> = {}) => {\n if (Platform.OS === 'android' && !isScreenShareOn) {\n if ((await handleScreenSharePermission()) !== 'granted') {\n return;\n }\n }\n const options = {\n ...screenShareOptions,\n screenShareMetadata: {\n displayName: 'presenting',\n type: 'screenShareVideo' as const,\n active: !isScreenShareOn,\n },\n };\n await RNFishjamClientModule.toggleScreenShare(options);\n screenShareSimulcastConfig = defaultSimulcastConfig(); //to do: sync with camera settings\n },\n [isScreenShareOn, handleScreenSharePermission],\n );\n\n return {\n isScreenShareOn,\n simulcastConfig,\n\n /**\n * Toggles the screen share on/off\n * Emits warning on ios when user is screensharing app screen.\n */\n toggleScreenShare,\n handleScreenSharePermission,\n };\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GenericMetadata } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* This hook provides method to update peer metadata
|
|
4
|
+
* @category Connection
|
|
5
|
+
* @group Hooks
|
|
6
|
+
*/
|
|
7
|
+
export declare const useUpdatePeerMetadata: <PeerMetadata extends GenericMetadata = GenericMetadata>() => {
|
|
8
|
+
/**
|
|
9
|
+
* Updates metadata send to other peers
|
|
10
|
+
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
11
|
+
* @category Connection
|
|
12
|
+
*/
|
|
13
|
+
updatePeerMetadata: (peerMetadata: PeerMetadata) => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useUpdatePeerMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdatePeerMetadata.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,YAAY,SAAS,eAAe;IAOlC;;;;OAIG;uCATuD,YAAY;CAYzE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
3
|
+
/**
|
|
4
|
+
* This hook provides method to update peer metadata
|
|
5
|
+
* @category Connection
|
|
6
|
+
* @group Hooks
|
|
7
|
+
*/
|
|
8
|
+
export const useUpdatePeerMetadata = () => {
|
|
9
|
+
const updatePeerMetadata = useCallback(async (peerMetadata) => {
|
|
10
|
+
await RNFishjamClientModule.updatePeerMetadata(peerMetadata);
|
|
11
|
+
}, []);
|
|
12
|
+
return {
|
|
13
|
+
/**
|
|
14
|
+
* Updates metadata send to other peers
|
|
15
|
+
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
16
|
+
* @category Connection
|
|
17
|
+
*/
|
|
18
|
+
updatePeerMetadata,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useUpdatePeerMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdatePeerMetadata.js","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAG7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAEjC,EAAE;IACJ,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,EAAE,YAA0B,EAAE,EAAE;QAC1E,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL;;;;WAIG;QACH,kBAAkB;KACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback } from 'react';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\nimport { GenericMetadata } from '../types';\n\n/**\n * This hook provides method to update peer metadata\n * @category Connection\n * @group Hooks\n */\nexport const useUpdatePeerMetadata = <\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>() => {\n const updatePeerMetadata = useCallback(async (peerMetadata: PeerMetadata) => {\n await RNFishjamClientModule.updatePeerMetadata(peerMetadata);\n }, []);\n\n return {\n /**\n * Updates metadata send to other peers\n * @param peerMetadata string indexed record with metadata, that will be available to all other peers\n * @category Connection\n */\n updatePeerMetadata,\n };\n};\n"]}
|