@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
package/build/common/client.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { GenericMetadata } from '../types';
|
|
2
|
-
import { PeerTrackMetadata } from '../hooks/usePeers';
|
|
3
2
|
export type ConnectionConfig = {
|
|
4
3
|
/**
|
|
5
4
|
* Configuration for automatic reconnection
|
|
@@ -16,15 +15,11 @@ export type ConnectionConfig = {
|
|
|
16
15
|
};
|
|
17
16
|
};
|
|
18
17
|
/**
|
|
19
|
-
* @
|
|
20
|
-
* @param peerToken token received from server (or Room Manager)
|
|
21
|
-
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
22
|
-
* @param config additional connection configuration
|
|
23
|
-
* @category Connection
|
|
18
|
+
* @ignore
|
|
24
19
|
*/
|
|
25
|
-
export declare function joinRoom<PeerMetadata extends GenericMetadata = GenericMetadata
|
|
20
|
+
export declare function joinRoom<PeerMetadata extends GenericMetadata = GenericMetadata>(url: string, peerToken: string, peerMetadata?: PeerMetadata, config?: ConnectionConfig): Promise<void>;
|
|
26
21
|
/**
|
|
27
|
-
* @
|
|
22
|
+
* @ignore
|
|
28
23
|
*/
|
|
29
24
|
export declare function leaveRoom(): Promise<void>;
|
|
30
25
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,YAAY,SAAS,eAAe,GAAG,eAAe,EAEtD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,gBAAgB,iBAQ1B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
|
package/build/common/client.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
* @param peerToken token received from server (or Room Manager)
|
|
5
|
-
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
6
|
-
* @param config additional connection configuration
|
|
7
|
-
* @category Connection
|
|
3
|
+
* @ignore
|
|
8
4
|
*/
|
|
9
5
|
export async function joinRoom(url, peerToken, peerMetadata, config) {
|
|
10
6
|
await RNFishjamClientModule.joinRoom(url, peerToken, peerMetadata ?? {}, config ?? {});
|
|
11
7
|
}
|
|
12
8
|
/**
|
|
13
|
-
* @
|
|
9
|
+
* @ignore
|
|
14
10
|
*/
|
|
15
11
|
export async function leaveRoom() {
|
|
16
12
|
await RNFishjamClientModule.leaveRoom();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EACX,SAAiB,EACjB,YAA2B,EAC3B,MAAyB;IAEzB,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,SAAS,EACT,YAAY,IAAI,EAAE,EAClB,MAAM,IAAI,EAAE,CACb,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,qBAAqB,CAAC,SAAS,EAAE,CAAC;AAC1C,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nexport type ConnectionConfig = {\n /**\n * Configuration for automatic reconnection\n * sdk uses a linear backoff algorithm, that is the formula\n * for the delay of the nth attempt is\n * n * delayMs + initialDelayMs\n *\n * Pass 0 for maxAttempts to disable automatic reconnection\n */\n reconnectConfig?: {\n maxAttempts?: number;\n initialDelayMs?: number;\n delayMs?: number;\n };\n};\n\n/**\n * @ignore\n */\nexport async function joinRoom<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(\n url: string,\n peerToken: string,\n peerMetadata?: PeerMetadata,\n config?: ConnectionConfig,\n) {\n await RNFishjamClientModule.joinRoom(\n url,\n peerToken,\n peerMetadata ?? {},\n config ?? {},\n );\n}\n/**\n * @ignore\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
|
|
@@ -2,7 +2,8 @@ import { GenericMetadata } from '../types';
|
|
|
2
2
|
/**
|
|
3
3
|
* Updates metadata send to other peers
|
|
4
4
|
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
5
|
-
* @
|
|
5
|
+
* @deprecated
|
|
6
|
+
* @ignore
|
|
6
7
|
*/
|
|
7
8
|
export declare function updatePeerMetadata<PeerMetadata extends GenericMetadata = GenericMetadata>(peerMetadata: PeerMetadata): Promise<void>;
|
|
8
9
|
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,YAAY,EAAE,YAAY,iBAE3B"}
|
package/build/common/metadata.js
CHANGED
|
@@ -2,7 +2,8 @@ import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
|
2
2
|
/**
|
|
3
3
|
* Updates metadata send to other peers
|
|
4
4
|
* @param peerMetadata string indexed record with metadata, that will be available to all other peers
|
|
5
|
-
* @
|
|
5
|
+
* @deprecated
|
|
6
|
+
* @ignore
|
|
6
7
|
*/
|
|
7
8
|
export async function updatePeerMetadata(peerMetadata) {
|
|
8
9
|
await RNFishjamClientModule.updatePeerMetadata(peerMetadata);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAEtC,YAA0B;IAC1B,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\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 * @deprecated\n * @ignore\n */\nexport async function updatePeerMetadata<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(peerMetadata: PeerMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(peerMetadata);\n}\n"]}
|
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
export type FishjamRoomProps = {
|
|
2
|
+
/**
|
|
3
|
+
* URL to your fishjam instance
|
|
4
|
+
*/
|
|
2
5
|
fishjamUrl: string;
|
|
6
|
+
/**
|
|
7
|
+
* Peer Token
|
|
8
|
+
*/
|
|
3
9
|
peerToken: string;
|
|
4
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Simple component that enables your camera and show all tracks
|
|
13
|
+
*
|
|
14
|
+
* Example usage:
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <FishjamRoom
|
|
17
|
+
* fishjamUrl={FISHJAM_URL}
|
|
18
|
+
* peerToken={PEER_TOKEN}
|
|
19
|
+
* />
|
|
20
|
+
* ```
|
|
21
|
+
* @category Components
|
|
22
|
+
* @param {object} props
|
|
23
|
+
* @param {string} props.fishjamUrl
|
|
24
|
+
* @param {string} props.peerToken
|
|
25
|
+
*/
|
|
5
26
|
export declare const FishjamRoom: ({ fishjamUrl, peerToken }: FishjamRoomProps) => import("react").JSX.Element;
|
|
6
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA+B,gBAAgB,gCA0BtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,8BAA+B,gBAAgB,gCA0BtE,CAAC"}
|
|
@@ -3,12 +3,27 @@ import { joinRoom, leaveRoom } from '../../common/client';
|
|
|
3
3
|
import { useCamera } from '../../hooks/useCamera';
|
|
4
4
|
import { VideosGrid } from './VideosGrid';
|
|
5
5
|
import { SafeAreaView } from 'react-native';
|
|
6
|
+
/**
|
|
7
|
+
* Simple component that enables your camera and show all tracks
|
|
8
|
+
*
|
|
9
|
+
* Example usage:
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <FishjamRoom
|
|
12
|
+
* fishjamUrl={FISHJAM_URL}
|
|
13
|
+
* peerToken={PEER_TOKEN}
|
|
14
|
+
* />
|
|
15
|
+
* ```
|
|
16
|
+
* @category Components
|
|
17
|
+
* @param {object} props
|
|
18
|
+
* @param {string} props.fishjamUrl
|
|
19
|
+
* @param {string} props.peerToken
|
|
20
|
+
*/
|
|
6
21
|
export const FishjamRoom = ({ fishjamUrl, peerToken }) => {
|
|
7
22
|
const { prepareCamera } = useCamera();
|
|
8
23
|
useEffect(() => {
|
|
9
24
|
const join = async () => {
|
|
10
25
|
await prepareCamera({
|
|
11
|
-
simulcastEnabled:
|
|
26
|
+
simulcastEnabled: true,
|
|
12
27
|
quality: 'HD169',
|
|
13
28
|
cameraEnabled: true,
|
|
14
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAa5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAoB,EAAE,EAAE;IACzE,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,aAAa,CAAC;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;gBACpC,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,CAAC,YAAY,CACX;MAAA,CAAC,UAAU,CAAC,AAAD,EACb;IAAA,EAAE,YAAY,CAAC,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { joinRoom, leaveRoom } from '../../common/client';\nimport { useCamera } from '../../hooks/useCamera';\nimport { VideosGrid } from './VideosGrid';\nimport { SafeAreaView } from 'react-native';\n\nexport type FishjamRoomProps = {\n /**\n * URL to your fishjam instance\n */\n fishjamUrl: string;\n /**\n * Peer Token\n */\n peerToken: string;\n};\n\n/**\n * Simple component that enables your camera and show all tracks\n *\n * Example usage:\n * ```tsx\n * <FishjamRoom\n * fishjamUrl={FISHJAM_URL}\n * peerToken={PEER_TOKEN}\n * />\n * ```\n * @category Components\n * @param {object} props\n * @param {string} props.fishjamUrl\n * @param {string} props.peerToken\n */\nexport const FishjamRoom = ({ fishjamUrl, peerToken }: FishjamRoomProps) => {\n const { prepareCamera } = useCamera();\n\n useEffect(() => {\n const join = async () => {\n await prepareCamera({\n simulcastEnabled: true,\n quality: 'HD169',\n cameraEnabled: true,\n });\n await joinRoom(fishjamUrl, peerToken, {\n peer: {},\n server: {},\n });\n };\n join();\n return () => {\n leaveRoom();\n };\n }, [fishjamUrl, peerToken, prepareCamera]);\n\n return (\n <SafeAreaView>\n <VideosGrid />\n </SafeAreaView>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePeersToTracks.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/parsePeersToTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAqC5C,eAAO,MAAM,kBAAkB,cAClB,cAAc,GAAG,IAAI,eACnB,cAAc,EAAE,KAC5B,SAAS,
|
|
1
|
+
{"version":3,"file":"parsePeersToTracks.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/parsePeersToTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAqC5C,eAAO,MAAM,kBAAkB,cAClB,cAAc,GAAG,IAAI,eACnB,cAAc,EAAE,KAC5B,SAAS,EAGX,CAAC"}
|
|
@@ -27,10 +27,8 @@ const createGridTracksFromPeer = (peer) => {
|
|
|
27
27
|
}
|
|
28
28
|
return tracks;
|
|
29
29
|
};
|
|
30
|
-
export const parsePeersToTracks = (localPeer, remotePeers) =>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
];
|
|
35
|
-
};
|
|
30
|
+
export const parsePeersToTracks = (localPeer, remotePeers) => [
|
|
31
|
+
...(localPeer ? createGridTracksFromPeer(localPeer) : []),
|
|
32
|
+
...remotePeers.flatMap(createGridTracksFromPeer),
|
|
33
|
+
];
|
|
36
34
|
//# sourceMappingURL=parsePeersToTracks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePeersToTracks.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/parsePeersToTracks.ts"],"names":[],"mappings":"AAGA,MAAM,wBAAwB,GAAG,CAAC,IAAoB,EAAe,EAAE;IACrE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,KAAK,QAAQ;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,qBAAqB;YACjC,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,KAAK,QAAQ;SAChE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EACT,IAAI,CAAC,eAAe,EAAE,SAAS,KAAK,QAAQ;gBAC5C,IAAI,CAAC,qBAAqB,EAAE,SAAS,KAAK,QAAQ;SACrD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAgC,EAChC,WAA6B,EAChB,EAAE
|
|
1
|
+
{"version":3,"file":"parsePeersToTracks.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/parsePeersToTracks.ts"],"names":[],"mappings":"AAGA,MAAM,wBAAwB,GAAG,CAAC,IAAoB,EAAe,EAAE;IACrE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,KAAK,QAAQ;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,qBAAqB;YACjC,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,KAAK,QAAQ;SAChE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EACT,IAAI,CAAC,eAAe,EAAE,SAAS,KAAK,QAAQ;gBAC5C,IAAI,CAAC,qBAAqB,EAAE,SAAS,KAAK,QAAQ;SACrD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAgC,EAChC,WAA6B,EAChB,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,GAAG,WAAW,CAAC,OAAO,CAAC,wBAAwB,CAAC;CACjD,CAAC","sourcesContent":["import { PeerWithTracks } from '../../hooks/usePeers';\nimport { GridTrack } from './GridTrackItem';\n\nconst createGridTracksFromPeer = (peer: PeerWithTracks): GridTrack[] => {\n const tracks: GridTrack[] = [];\n\n if (peer.cameraTrack && peer.cameraTrack.isActive) {\n tracks.push({\n track: peer.cameraTrack,\n peerId: peer.id,\n isLocal: peer.isLocal,\n isVadActive: peer.microphoneTrack?.vadStatus === 'speech',\n });\n }\n\n if (peer.screenShareVideoTrack && peer.screenShareVideoTrack.isActive) {\n tracks.push({\n track: peer.screenShareVideoTrack,\n peerId: peer.id,\n isLocal: peer.isLocal,\n isVadActive: peer.screenShareAudioTrack?.vadStatus === 'speech',\n });\n }\n\n if (tracks.length === 0) {\n tracks.push({\n track: null,\n peerId: peer.id,\n isLocal: peer.isLocal,\n isVadActive:\n peer.microphoneTrack?.vadStatus === 'speech' ||\n peer.screenShareAudioTrack?.vadStatus === 'speech',\n });\n }\n\n return tracks;\n};\n\nexport const parsePeersToTracks = (\n localPeer: PeerWithTracks | null,\n remotePeers: PeerWithTracks[],\n): GridTrack[] => [\n ...(localPeer ? createGridTracksFromPeer(localPeer) : []),\n ...remotePeers.flatMap(createGridTracksFromPeer),\n];\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { ViewStyle } from 'react-native';
|
|
2
|
+
import { StyleProp, ViewStyle } from 'react-native';
|
|
3
3
|
import { VideoLayout } from '../types';
|
|
4
4
|
import { CameraId } from '../hooks/useCamera';
|
|
5
5
|
export type VideoPreviewViewProps = {
|
|
@@ -8,7 +8,7 @@ export type VideoPreviewViewProps = {
|
|
|
8
8
|
* @default `FILL`
|
|
9
9
|
*/
|
|
10
10
|
videoLayout?: VideoLayout;
|
|
11
|
-
style?: ViewStyle
|
|
11
|
+
style?: StyleProp<ViewStyle>;
|
|
12
12
|
/**
|
|
13
13
|
* Id of the camera used for preview. Get available cameras with `cameras` property.
|
|
14
14
|
* @default the first front camera
|
|
@@ -17,8 +17,12 @@ export type VideoPreviewViewProps = {
|
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* Render camera preview.
|
|
20
|
-
* Allows to display camera preview
|
|
20
|
+
* Allows to display camera preview before streaming is started
|
|
21
|
+
*
|
|
22
|
+
*
|
|
21
23
|
* @category Components
|
|
24
|
+
* @param {object} props
|
|
25
|
+
* @param {string} props.cameraId
|
|
22
26
|
*/
|
|
23
27
|
export declare const VideoPreviewView: React.ForwardRefExoticComponent<VideoPreviewViewProps & React.RefAttributes<React.ComponentType<VideoPreviewViewProps>>>;
|
|
24
28
|
//# sourceMappingURL=VideoPreviewView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPreviewView.d.ts","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"VideoPreviewView.d.ts","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAKF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,0HAM3B,CAAC"}
|
|
@@ -3,8 +3,12 @@ import * as React from 'react';
|
|
|
3
3
|
const NativeView = requireNativeViewManager('VideoPreviewViewModule');
|
|
4
4
|
/**
|
|
5
5
|
* Render camera preview.
|
|
6
|
-
* Allows to display camera preview
|
|
6
|
+
* Allows to display camera preview before streaming is started
|
|
7
|
+
*
|
|
8
|
+
*
|
|
7
9
|
* @category Components
|
|
10
|
+
* @param {object} props
|
|
11
|
+
* @param {string} props.cameraId
|
|
8
12
|
*/
|
|
9
13
|
export const VideoPreviewView = React.forwardRef((props, ref) => (
|
|
10
14
|
// @ts-expect-error ref prop needs to be updated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPreviewView.js","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VideoPreviewView.js","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,MAAM,UAAU,GACd,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAG9C,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAChB,gDAAgD;AAChD,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAG,CACrE,CAAC,CAAC","sourcesContent":["import { requireNativeViewManager } from 'expo-modules-core';\nimport * as React from 'react';\nimport { StyleProp, ViewStyle } from 'react-native';\n\nimport { VideoLayout } from '../types';\nimport { CameraId } from '../hooks/useCamera';\n\nexport type VideoPreviewViewProps = {\n /**\n * Video layout inside of the component\n * @default `FILL`\n */\n videoLayout?: VideoLayout;\n\n style?: StyleProp<ViewStyle>;\n /**\n * Id of the camera used for preview. Get available cameras with `cameras` property.\n * @default the first front camera\n */\n cameraId?: CameraId;\n};\n\nconst NativeView: React.ComponentType<VideoPreviewViewProps> =\n requireNativeViewManager('VideoPreviewViewModule');\n\n/**\n * Render camera preview.\n * Allows to display camera preview before streaming is started\n *\n *\n * @category Components\n * @param {object} props\n * @param {string} props.cameraId\n */\nexport const VideoPreviewView = React.forwardRef<\n React.ComponentType<VideoPreviewViewProps>,\n VideoPreviewViewProps\n>((props, ref) => (\n // @ts-expect-error ref prop needs to be updated\n <NativeView {...props} captureDeviceId={props.cameraId} ref={ref} />\n));\n"]}
|
|
@@ -20,7 +20,20 @@ export type VideoRendererProps = {
|
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
22
|
* Render video track received from {@link usePeers} hook
|
|
23
|
+
*
|
|
24
|
+
* Example usage:
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <VideoRendererView
|
|
27
|
+
* trackId={peer.track.id}
|
|
28
|
+
* videoLayout="FIT"
|
|
29
|
+
* style={styles.videoContent}
|
|
30
|
+
* />
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
23
33
|
* @category Components
|
|
34
|
+
*
|
|
35
|
+
* @param {Object} props
|
|
36
|
+
* @param props.trackId
|
|
24
37
|
*/
|
|
25
38
|
export declare const VideoRendererView: React.ForwardRefExoticComponent<VideoRendererProps & React.RefAttributes<React.ComponentType<VideoRendererProps>>>;
|
|
26
39
|
//# sourceMappingURL=VideoRendererView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoRendererView.d.ts","sourceRoot":"","sources":["../../src/components/VideoRendererView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAKF
|
|
1
|
+
{"version":3,"file":"VideoRendererView.d.ts","sourceRoot":"","sources":["../../src/components/VideoRendererView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAKF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,oHAM5B,CAAC"}
|
|
@@ -3,7 +3,20 @@ import * as React from 'react';
|
|
|
3
3
|
const NativeView = requireNativeViewManager('VideoRendererViewModule');
|
|
4
4
|
/**
|
|
5
5
|
* Render video track received from {@link usePeers} hook
|
|
6
|
+
*
|
|
7
|
+
* Example usage:
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <VideoRendererView
|
|
10
|
+
* trackId={peer.track.id}
|
|
11
|
+
* videoLayout="FIT"
|
|
12
|
+
* style={styles.videoContent}
|
|
13
|
+
* />
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
6
16
|
* @category Components
|
|
17
|
+
*
|
|
18
|
+
* @param {Object} props
|
|
19
|
+
* @param props.trackId
|
|
7
20
|
*/
|
|
8
21
|
export const VideoRendererView = React.forwardRef((props, ref) => (
|
|
9
22
|
// @ts-expect-error ref prop needs to be updated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoRendererView.js","sourceRoot":"","sources":["../../src/components/VideoRendererView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,MAAM,UAAU,GACd,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"VideoRendererView.js","sourceRoot":"","sources":["../../src/components/VideoRendererView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,MAAM,UAAU,GACd,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAG/C,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAChB,gDAAgD;AAChD,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAG,CACpC,CAAC,CAAC","sourcesContent":["import { requireNativeViewManager } from 'expo-modules-core';\nimport * as React from 'react';\nimport { ViewStyle } from 'react-native';\n\nimport { VideoLayout } from '../types';\nimport type { TrackId } from '../hooks/usePeers';\n\nexport type VideoRendererProps = {\n /**\n * id of the video track which you want to render.\n */\n trackId: TrackId;\n /**\n * Video layout inside of the component\n * @default `FILL`\n */\n videoLayout?: VideoLayout;\n /**\n * Whether the video should be rendered if it's off screen or hidden.\n */\n skipRenderOutsideVisibleArea?: boolean;\n style?: ViewStyle;\n};\n\nconst NativeView: React.ComponentType<VideoRendererProps> =\n requireNativeViewManager('VideoRendererViewModule');\n\n/**\n * Render video track received from {@link usePeers} hook\n *\n * Example usage:\n * ```tsx\n * <VideoRendererView\n * trackId={peer.track.id}\n * videoLayout=\"FIT\"\n * style={styles.videoContent}\n * />\n * ```\n *\n * @category Components\n *\n * @param {Object} props\n * @param props.trackId\n */\nexport const VideoRendererView = React.forwardRef<\n React.ComponentType<VideoRendererProps>,\n VideoRendererProps\n>((props, ref) => (\n // @ts-expect-error ref prop needs to be updated\n <NativeView {...props} ref={ref} />\n));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRTCStatistics.d.ts","sourceRoot":"","sources":["../../../src/debug/stats/useRTCStatistics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAqC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG3E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM;;
|
|
1
|
+
{"version":3,"file":"useRTCStatistics.d.ts","sourceRoot":"","sources":["../../../src/debug/stats/useRTCStatistics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAqC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG3E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM;;EAqFvD"}
|
|
@@ -10,13 +10,13 @@ export function useRTCStatistics(refreshInterval) {
|
|
|
10
10
|
const [statistics, setStatistics] = useState([]);
|
|
11
11
|
// Calculates diff between pervious and current stats,
|
|
12
12
|
// providing end users with a per second metric.
|
|
13
|
-
const processIncomingStats = useCallback((
|
|
14
|
-
Object.keys(
|
|
13
|
+
const processIncomingStats = useCallback((stats, stat) => {
|
|
14
|
+
Object.keys(stat).forEach((obj) => {
|
|
15
15
|
if (obj.includes('Inbound')) {
|
|
16
|
-
const rtcStats =
|
|
17
|
-
if (
|
|
18
|
-
Object.keys(
|
|
19
|
-
const prevRtcStats =
|
|
16
|
+
const rtcStats = stat[obj];
|
|
17
|
+
if (stats.length > 0 &&
|
|
18
|
+
Object.keys(stats[stats.length - 1]).includes(obj)) {
|
|
19
|
+
const prevRtcStats = stats[stats.length - 1][obj];
|
|
20
20
|
rtcStats['packetsLost/s'] =
|
|
21
21
|
rtcStats['packetsLost'] - prevRtcStats['packetsLost'];
|
|
22
22
|
rtcStats['packetsReceived/s'] =
|
|
@@ -35,13 +35,13 @@ export function useRTCStatistics(refreshInterval) {
|
|
|
35
35
|
rtcStats['framesReceived/s'] = 0;
|
|
36
36
|
rtcStats['framesDropped/s'] = 0;
|
|
37
37
|
}
|
|
38
|
-
return
|
|
38
|
+
return stat;
|
|
39
39
|
}
|
|
40
40
|
// Outbound
|
|
41
|
-
const rtcStats =
|
|
42
|
-
if (
|
|
43
|
-
Object.keys(
|
|
44
|
-
const prevRtcStats =
|
|
41
|
+
const rtcStats = stat[obj];
|
|
42
|
+
if (stats.length > 0 &&
|
|
43
|
+
Object.keys(stats[stats.length - 1]).includes(obj)) {
|
|
44
|
+
const prevRtcStats = stats[stats.length - 1][obj];
|
|
45
45
|
rtcStats['bytesSent/s'] =
|
|
46
46
|
rtcStats['bytesSent'] - prevRtcStats['bytesSent'];
|
|
47
47
|
rtcStats['packetsSent/s'] =
|
|
@@ -54,9 +54,9 @@ export function useRTCStatistics(refreshInterval) {
|
|
|
54
54
|
rtcStats['packetsSent/s'] = 0;
|
|
55
55
|
rtcStats['framesEncoded/s'] = 0;
|
|
56
56
|
}
|
|
57
|
-
return
|
|
57
|
+
return stat;
|
|
58
58
|
});
|
|
59
|
-
return
|
|
59
|
+
return stat;
|
|
60
60
|
}, []);
|
|
61
61
|
// Gets stats from the native libraries.
|
|
62
62
|
const getStatistics = useCallback(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRTCStatistics.js","sourceRoot":"","sources":["../../../src/debug/stats/useRTCStatistics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGzD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,eAAuB;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAE7D,sDAAsD;IACtD,gDAAgD;IAChD,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,
|
|
1
|
+
{"version":3,"file":"useRTCStatistics.js","sourceRoot":"","sources":["../../../src/debug/stats/useRTCStatistics.ts"],"names":[],"mappings":"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","sourcesContent":["import { takeRight } from 'lodash';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { RTCInboundStats, RTCOutboundStats, RTCStats } from './types';\nimport RNFishjamClientModule from '../../RNFishjamClientModule';\n\n/**\n * This hook provides access to current rtc statistics data.\n * @category Debugging\n */\nexport function useRTCStatistics(refreshInterval: number) {\n const MAX_SIZE = 120;\n const [statistics, setStatistics] = useState<RTCStats[]>([]);\n\n // Calculates diff between pervious and current stats,\n // providing end users with a per second metric.\n const processIncomingStats = useCallback(\n (stats: ReadonlyArray<RTCStats>, stat: Readonly<RTCStats>) => {\n Object.keys(stat).forEach((obj) => {\n if (obj.includes('Inbound')) {\n const rtcStats = stat[obj] as RTCInboundStats;\n\n if (\n stats.length > 0 &&\n Object.keys(stats[stats.length - 1]).includes(obj)\n ) {\n const prevRtcStats = stats[stats.length - 1][\n obj\n ] as RTCInboundStats;\n\n rtcStats['packetsLost/s'] =\n rtcStats['packetsLost'] - prevRtcStats['packetsLost'];\n rtcStats['packetsReceived/s'] =\n rtcStats['packetsReceived'] - prevRtcStats['packetsReceived'];\n rtcStats['bytesReceived/s'] =\n rtcStats['bytesReceived'] - prevRtcStats['bytesReceived'];\n rtcStats['framesReceived/s'] =\n rtcStats['framesReceived'] - prevRtcStats['framesReceived'];\n rtcStats['framesDropped/s'] =\n rtcStats['framesDropped'] - prevRtcStats['framesDropped'];\n } else {\n rtcStats['packetsLost/s'] = 0;\n rtcStats['packetsReceived/s'] = 0;\n rtcStats['bytesReceived/s'] = 0;\n rtcStats['framesReceived/s'] = 0;\n rtcStats['framesDropped/s'] = 0;\n }\n return stat;\n }\n // Outbound\n const rtcStats = stat[obj] as RTCOutboundStats;\n\n if (\n stats.length > 0 &&\n Object.keys(stats[stats.length - 1]).includes(obj)\n ) {\n const prevRtcStats = stats[stats.length - 1][obj] as RTCOutboundStats;\n\n rtcStats['bytesSent/s'] =\n rtcStats['bytesSent'] - prevRtcStats['bytesSent'];\n rtcStats['packetsSent/s'] =\n rtcStats['packetsSent'] - prevRtcStats['packetsSent'];\n rtcStats['framesEncoded/s'] =\n rtcStats['framesEncoded'] - prevRtcStats['framesEncoded'];\n } else {\n rtcStats['bytesSent/s'] = 0;\n rtcStats['packetsSent/s'] = 0;\n rtcStats['framesEncoded/s'] = 0;\n }\n return stat;\n });\n return stat;\n },\n [],\n );\n\n // Gets stats from the native libraries.\n const getStatistics = useCallback(async () => {\n const stats = await RNFishjamClientModule.getStatistics();\n setStatistics((prev) => {\n const newStats = [...prev, processIncomingStats(prev, stats)];\n takeRight(newStats, MAX_SIZE);\n return newStats;\n });\n }, [processIncomingStats]);\n\n useEffect(() => {\n const intervalId = setInterval(getStatistics, refreshInterval);\n return () => {\n clearInterval(intervalId);\n setStatistics([]);\n };\n }, [getStatistics, refreshInterval]);\n\n return { statistics };\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ReceivableEvents, ReceivableEventPayloads } from '../../RNFishjamClientModule';
|
|
2
|
+
export declare function useFishjamEvent<T extends keyof typeof ReceivableEvents>(eventName: T, callback: (event: ReceivableEventPayloads[T]) => void): void;
|
|
3
|
+
export declare function validateAndLogEventPayload<T extends keyof typeof ReceivableEvents>(eventName: T, payload: ReceivableEventPayloads[T]): void;
|
|
4
|
+
//# sourceMappingURL=useFishjamEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamEvent.ts"],"names":[],"mappings":"AAEA,OAAqB,EACnB,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAGrC,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,OAAO,gBAAgB,EACrE,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,QActD;AAED,wBAAgB,0BAA0B,CACxC,CAAC,SAAS,MAAM,OAAO,gBAAgB,EACvC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAsBzD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ZodError } from 'zod';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import nativeModule from '../../RNFishjamClientModule';
|
|
4
|
+
import { validateNativeEventPayload } from '../../utils/eventPayloadValidator';
|
|
5
|
+
export function useFishjamEvent(eventName, callback) {
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const eventListener = nativeModule.addListener(eventName, (event) => {
|
|
8
|
+
const payload = event[eventName];
|
|
9
|
+
if (__DEV__) {
|
|
10
|
+
validateAndLogEventPayload(eventName, payload);
|
|
11
|
+
}
|
|
12
|
+
callback(payload);
|
|
13
|
+
});
|
|
14
|
+
return () => eventListener.remove();
|
|
15
|
+
}, [callback, eventName]);
|
|
16
|
+
}
|
|
17
|
+
export function validateAndLogEventPayload(eventName, payload) {
|
|
18
|
+
// Double check just to make sure
|
|
19
|
+
if (!__DEV__)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
validateNativeEventPayload(eventName, payload);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof ZodError) {
|
|
26
|
+
console.error(`Invalid payload received for event ${eventName}:\n`, error.errors
|
|
27
|
+
.map((err) => `- ${err.path.join('.')}: ${err.message}`)
|
|
28
|
+
.join('\n'), `\n Received:\n${JSON.stringify(payload, null, 2)}\n\n`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.error(`Unexpected error validating payload for event ${eventName}:`, error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=useFishjamEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamEvent.js","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,YAGN,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E,MAAM,UAAU,eAAe,CAC7B,SAAY,EACZ,QAAqD;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAClE,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YAEjC,IAAI,OAAO,EAAE,CAAC;gBACZ,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAED,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAExC,SAAY,EAAE,OAAmC;IACjD,iCAAiC;IACjC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,CAAC;QACH,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,sCAAsC,SAAS,KAAK,EACpD,KAAK,CAAC,MAAM;iBACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;iBACvD,IAAI,CAAC,IAAI,CAAC,EACb,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,iDAAiD,SAAS,GAAG,EAC7D,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { ZodError } from 'zod';\nimport { useEffect } from 'react';\nimport nativeModule, {\n ReceivableEvents,\n ReceivableEventPayloads,\n} from '../../RNFishjamClientModule';\nimport { validateNativeEventPayload } from '../../utils/eventPayloadValidator';\n\nexport function useFishjamEvent<T extends keyof typeof ReceivableEvents>(\n eventName: T,\n callback: (event: ReceivableEventPayloads[T]) => void,\n) {\n useEffect(() => {\n const eventListener = nativeModule.addListener(eventName, (event) => {\n const payload = event[eventName];\n\n if (__DEV__) {\n validateAndLogEventPayload(eventName, payload);\n }\n\n callback(payload);\n });\n return () => eventListener.remove();\n }, [callback, eventName]);\n}\n\nexport function validateAndLogEventPayload<\n T extends keyof typeof ReceivableEvents,\n>(eventName: T, payload: ReceivableEventPayloads[T]): void {\n // Double check just to make sure\n if (!__DEV__) return;\n\n try {\n validateNativeEventPayload(eventName, payload);\n } catch (error) {\n if (error instanceof ZodError) {\n console.error(\n `Invalid payload received for event ${eventName}:\\n`,\n error.errors\n .map((err) => `- ${err.path.join('.')}: ${err.message}`)\n .join('\\n'),\n `\\n Received:\\n${JSON.stringify(payload, null, 2)}\\n\\n`,\n );\n } else {\n console.error(\n `Unexpected error validating payload for event ${eventName}:`,\n error,\n );\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ReceivableEventPayloads, ReceivableEvents } from '../../RNFishjamClientModule';
|
|
2
|
+
export declare function useFishjamEventState<EventName extends keyof typeof ReceivableEvents, StateType = ReceivableEventPayloads[EventName]>(eventName: EventName, defaultValue: ReceivableEventPayloads[EventName], transform?: (eventValue: ReceivableEventPayloads[EventName]) => StateType): StateType;
|
|
3
|
+
//# sourceMappingURL=useFishjamEventState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamEventState.d.ts","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamEventState.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,oBAAoB,CAClC,SAAS,SAAS,MAAM,OAAO,gBAAgB,EAC/C,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,EAE9C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAChD,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC,SAAS,CAAC,KAAK,SAAS,aAsB1E"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
import { useFishjamEvent } from './useFishjamEvent';
|
|
3
3
|
export function useFishjamEventState(eventName, defaultValue, transform) {
|
|
4
|
-
const [value, setValue] = useState(
|
|
4
|
+
const [value, setValue] = useState(transform
|
|
5
|
+
? transform(defaultValue)
|
|
6
|
+
: defaultValue);
|
|
5
7
|
const onEvent = useCallback((newValue) => {
|
|
6
8
|
if (transform) {
|
|
7
9
|
setValue(transform(newValue));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFishjamEventState.js","sourceRoot":"","sources":["../../../src/hooks/internal/useFishjamEventState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,UAAU,oBAAoB,CAIlC,SAAoB,EACpB,YAAgD,EAChD,SAAyE;IAEzE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAChC,SAAS;QACP,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;QACzB,CAAC,CAAE,YAAqC,CAC3C,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,QAA4C,EAAE,EAAE;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAgC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,eAAe,CAAY,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { useCallback, useState } from 'react';\nimport { useFishjamEvent } from './useFishjamEvent';\nimport {\n ReceivableEventPayloads,\n ReceivableEvents,\n} from '../../RNFishjamClientModule';\n\nexport function useFishjamEventState<\n EventName extends keyof typeof ReceivableEvents,\n StateType = ReceivableEventPayloads[EventName],\n>(\n eventName: EventName,\n defaultValue: ReceivableEventPayloads[EventName],\n transform?: (eventValue: ReceivableEventPayloads[EventName]) => StateType,\n) {\n const [value, setValue] = useState<StateType>(\n transform\n ? transform(defaultValue)\n : (defaultValue as unknown as StateType),\n );\n\n const onEvent = useCallback(\n (newValue: ReceivableEventPayloads[EventName]) => {\n if (transform) {\n setValue(transform(newValue));\n } else {\n setValue(newValue as unknown as StateType);\n }\n },\n [transform],\n );\n\n useFishjamEvent<EventName>(eventName, onEvent);\n\n return value;\n}\n"]}
|
|
@@ -6,6 +6,15 @@ type AppScreenShareData = {
|
|
|
6
6
|
toggleAppScreenShare: (screenShareOptions?: Partial<ScreenShareOptions>) => Promise<void>;
|
|
7
7
|
};
|
|
8
8
|
declare function useDefaultAppScreenShareAndroid(): AppScreenShareData;
|
|
9
|
+
/**
|
|
10
|
+
* This hook can toggle client app screen sharing on/off and provides current screen share state.
|
|
11
|
+
*
|
|
12
|
+
* It works only on iOS.
|
|
13
|
+
*
|
|
14
|
+
* @returns An object with functions to manage app screen share on iOS and null on android.
|
|
15
|
+
* @category Connection
|
|
16
|
+
* @group Hooks
|
|
17
|
+
*/
|
|
9
18
|
export declare const useAppScreenShare: typeof useDefaultAppScreenShareAndroid;
|
|
10
19
|
export {};
|
|
11
20
|
//# sourceMappingURL=useAppScreenShare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useAppScreenShare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAppScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useAppScreenShare.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWtD,KAAK,kBAAkB,GAAG;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,CACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAwCF,iBAAS,+BAA+B,IAAI,kBAAkB,CAM7D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,wCAG5B,CAAC"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
import { useCallback
|
|
2
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
3
|
-
import { ReceivableEvents, useFishjamEvent } from './useFishjamEvent';
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import RNFishjamClientModule, { ReceivableEvents, } from '../RNFishjamClientModule';
|
|
4
3
|
import { Platform } from 'react-native';
|
|
4
|
+
import { useFishjamEventState } from './internal/useFishjamEventState';
|
|
5
5
|
const defaultSimulcastConfig = () => ({
|
|
6
6
|
enabled: false,
|
|
7
|
-
activeEncodings: [],
|
|
8
7
|
});
|
|
9
8
|
let screenShareSimulcastConfig = defaultSimulcastConfig();
|
|
10
|
-
/**
|
|
11
|
-
* This hook can toggle client app screen sharing on/off and provides current screen share state. It works only on iOS.
|
|
12
|
-
* @returns An object with functions to manage app screen share on iOS and null on android.
|
|
13
|
-
* @category Screenshare
|
|
14
|
-
* @group Hooks
|
|
15
|
-
*/
|
|
16
9
|
function useIosAppScreenShare() {
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
useFishjamEvent(ReceivableEvents.IsAppScreenShareOn, setIsAppScreenShareOn);
|
|
10
|
+
const isAppScreenShareOn = useFishjamEventState(ReceivableEvents.IsAppScreenShareOn, RNFishjamClientModule.isAppScreenShareOn);
|
|
11
|
+
const simulcastConfig = useFishjamEventState(ReceivableEvents.SimulcastConfigUpdate, screenShareSimulcastConfig);
|
|
20
12
|
const toggleAppScreenShare = useCallback(async (screenShareOptions = {}) => {
|
|
21
13
|
const options = {
|
|
22
14
|
...screenShareOptions,
|
|
@@ -28,7 +20,6 @@ function useIosAppScreenShare() {
|
|
|
28
20
|
};
|
|
29
21
|
await RNFishjamClientModule.toggleAppScreenShare(options);
|
|
30
22
|
screenShareSimulcastConfig = defaultSimulcastConfig(); //to do: sync with camera settings
|
|
31
|
-
setSimulcastConfig(screenShareSimulcastConfig);
|
|
32
23
|
}, [isAppScreenShareOn]);
|
|
33
24
|
return {
|
|
34
25
|
isAppScreenShareOn,
|
|
@@ -47,6 +38,15 @@ function useDefaultAppScreenShareAndroid() {
|
|
|
47
38
|
toggleAppScreenShare: async () => { },
|
|
48
39
|
};
|
|
49
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* This hook can toggle client app screen sharing on/off and provides current screen share state.
|
|
43
|
+
*
|
|
44
|
+
* It works only on iOS.
|
|
45
|
+
*
|
|
46
|
+
* @returns An object with functions to manage app screen share on iOS and null on android.
|
|
47
|
+
* @category Connection
|
|
48
|
+
* @group Hooks
|
|
49
|
+
*/
|
|
50
50
|
export const useAppScreenShare = Platform.select({
|
|
51
51
|
ios: useIosAppScreenShare,
|
|
52
52
|
default: useDefaultAppScreenShareAndroid,
|