@fishjam-cloud/react-native-client 0.2.2 → 0.2.4
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 +9 -397
- package/android/build.gradle +1 -1
- package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +2 -1
- package/android/src/main/java/io/fishjam/reactnative/Errors.kt +3 -2
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +86 -73
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +20 -19
- package/build/RNFishjamClientModule.d.ts +10 -8
- package/build/RNFishjamClientModule.d.ts.map +1 -1
- package/build/RNFishjamClientModule.js +2 -1
- package/build/RNFishjamClientModule.js.map +1 -1
- package/build/common/client.d.ts +8 -5
- package/build/common/client.d.ts.map +1 -1
- package/build/common/client.js +9 -6
- package/build/common/client.js.map +1 -1
- package/build/common/metadata.d.ts +4 -3
- package/build/common/metadata.d.ts.map +1 -1
- package/build/common/metadata.js +5 -4
- package/build/common/metadata.js.map +1 -1
- package/build/common/webRTC.d.ts +2 -0
- package/build/common/webRTC.d.ts.map +1 -1
- package/build/common/webRTC.js +2 -0
- package/build/common/webRTC.js.map +1 -1
- package/build/components/VideoPreviewView.d.ts +6 -3
- package/build/components/VideoPreviewView.d.ts.map +1 -1
- package/build/components/VideoPreviewView.js +5 -0
- package/build/components/VideoPreviewView.js.map +1 -1
- package/build/components/VideoRendererView.d.ts +5 -3
- package/build/components/VideoRendererView.d.ts.map +1 -1
- package/build/components/VideoRendererView.js +4 -0
- package/build/components/VideoRendererView.js.map +1 -1
- package/build/hooks/useAudioSettings.d.ts +15 -0
- package/build/hooks/useAudioSettings.d.ts.map +1 -1
- package/build/hooks/useAudioSettings.js +15 -13
- package/build/hooks/useAudioSettings.js.map +1 -1
- package/build/hooks/useBandwidthEstimation.d.ts +2 -0
- package/build/hooks/useBandwidthEstimation.d.ts.map +1 -1
- package/build/hooks/useBandwidthEstimation.js +2 -0
- package/build/hooks/useBandwidthEstimation.js.map +1 -1
- package/build/hooks/useCamera.d.ts +62 -1
- package/build/hooks/useCamera.d.ts.map +1 -1
- package/build/hooks/useCamera.js +46 -38
- package/build/hooks/useCamera.js.map +1 -1
- package/build/hooks/useFishjamEvent.d.ts +2 -1
- package/build/hooks/useFishjamEvent.d.ts.map +1 -1
- package/build/hooks/useFishjamEvent.js +4 -5
- package/build/hooks/useFishjamEvent.js.map +1 -1
- package/build/hooks/useMicrophone.d.ts +4 -0
- package/build/hooks/useMicrophone.d.ts.map +1 -1
- package/build/hooks/useMicrophone.js +8 -4
- package/build/hooks/useMicrophone.js.map +1 -1
- package/build/hooks/useParticipants.d.ts +2 -0
- package/build/hooks/useParticipants.d.ts.map +1 -1
- package/build/hooks/useParticipants.js +2 -0
- package/build/hooks/useParticipants.js.map +1 -1
- package/build/hooks/useReconnection.d.ts +6 -0
- package/build/hooks/useReconnection.d.ts.map +1 -1
- package/build/hooks/useReconnection.js +6 -0
- package/build/hooks/useReconnection.js.map +1 -1
- package/build/hooks/useScreenShare.d.ts +57 -0
- package/build/hooks/useScreenShare.d.ts.map +1 -0
- package/build/hooks/useScreenShare.js +85 -0
- package/build/hooks/useScreenShare.js.map +1 -0
- package/build/index.d.ts +4 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/build/stats/useRTCStatistics.d.ts +1 -0
- package/build/stats/useRTCStatistics.d.ts.map +1 -1
- package/build/stats/useRTCStatistics.js +1 -0
- package/build/stats/useRTCStatistics.js.map +1 -1
- package/build/types.d.ts +6 -0
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils/errorListener.d.ts +2 -0
- package/build/utils/errorListener.d.ts.map +1 -0
- package/build/utils/errorListener.js +16 -0
- package/build/utils/errorListener.js.map +1 -0
- package/build/utils/foregroundService.d.ts +2 -0
- package/build/utils/foregroundService.d.ts.map +1 -1
- package/build/utils/foregroundService.js +2 -0
- package/build/utils/foregroundService.js.map +1 -1
- package/ios/Events.swift +2 -1
- package/ios/RNFishjamClient.podspec +1 -1
- package/ios/RNFishjamClient.swift +76 -62
- package/ios/RNFishjamClientModule.swift +18 -17
- package/package.json +13 -10
- package/plugin/broadcastExtensionFiles/FishjamBroadcastSampleHandler.swift +50 -0
- package/plugin/broadcastExtensionFiles/FishjamScreenBroadcastExtension.entitlements +10 -0
- package/plugin/broadcastExtensionFiles/Info.plist +27 -0
- package/plugin/build/types.d.ts +5 -5
- package/plugin/build/withFishjamAndroid.js +2 -2
- package/plugin/build/withFishjamIos.js +4 -4
- package/build/hooks/useScreencast.d.ts +0 -38
- package/build/hooks/useScreencast.d.ts.map +0 -1
- package/build/hooks/useScreencast.js +0 -77
- package/build/hooks/useScreencast.js.map +0 -1
|
@@ -99,7 +99,7 @@ const withInfoPlistConstants = (config) => {
|
|
|
99
99
|
return (0, config_plugins_1.withInfoPlist)(config, (config) => {
|
|
100
100
|
const bundleIdentifier = config.ios?.bundleIdentifier || '';
|
|
101
101
|
config.modResults['AppGroupName'] = `group.${bundleIdentifier}`;
|
|
102
|
-
config.modResults['
|
|
102
|
+
config.modResults['ScreenShareExtensionBundleId'] =
|
|
103
103
|
`${bundleIdentifier}.${SBE_TARGET_NAME}`;
|
|
104
104
|
return config;
|
|
105
105
|
});
|
|
@@ -186,7 +186,7 @@ const withFishjamSBE = (config, options) => {
|
|
|
186
186
|
`"${SBE_TARGET_NAME}"`) {
|
|
187
187
|
const buildSettingsObj = configurations[key].buildSettings;
|
|
188
188
|
buildSettingsObj.IPHONEOS_DEPLOYMENT_TARGET =
|
|
189
|
-
options
|
|
189
|
+
options?.ios?.iphoneDeploymentTarget ?? IPHONEOS_DEPLOYMENT_TARGET;
|
|
190
190
|
buildSettingsObj.TARGETED_DEVICE_FAMILY = TARGETED_DEVICE_FAMILY;
|
|
191
191
|
buildSettingsObj.CODE_SIGN_ENTITLEMENTS = `${SBE_TARGET_NAME}/${SBE_TARGET_NAME}.entitlements`;
|
|
192
192
|
buildSettingsObj.CODE_SIGN_STYLE = 'Automatic';
|
|
@@ -207,14 +207,14 @@ const withFishjamSBE = (config, options) => {
|
|
|
207
207
|
* Allows for dynamically changing deploymentTarget.
|
|
208
208
|
*/
|
|
209
209
|
const withFishjamIos = (config, props) => {
|
|
210
|
-
if (props
|
|
210
|
+
if (props?.ios?.enableScreensharing) {
|
|
211
211
|
withAppGroupPermissions(config);
|
|
212
212
|
withInfoPlistConstants(config);
|
|
213
213
|
withFishjamSBE(config, props);
|
|
214
214
|
}
|
|
215
215
|
(0, config_plugins_1.withPodfileProperties)(config, (config) => {
|
|
216
216
|
config.modResults['ios.deploymentTarget'] =
|
|
217
|
-
props
|
|
217
|
+
props?.ios?.iphoneDeploymentTarget ?? IPHONEOS_DEPLOYMENT_TARGET;
|
|
218
218
|
return config;
|
|
219
219
|
});
|
|
220
220
|
return config;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { BandwidthLimit, SimulcastConfig, TrackBandwidthLimit, TrackEncoding, TrackMetadata } from '../types';
|
|
2
|
-
export type ScreencastQuality = 'VGA' | 'HD5' | 'HD15' | 'FHD15' | 'FHD30';
|
|
3
|
-
export type ScreencastOptions = {
|
|
4
|
-
/**
|
|
5
|
-
* Resolution + fps of screencast track, one of: `VGA`, `HD5`, `HD15`, `FHD15`, `FHD30`.
|
|
6
|
-
* Note that quality might be worse than specified due to device capabilities, internet
|
|
7
|
-
* connection etc.
|
|
8
|
-
* @default `HD15``
|
|
9
|
-
*/
|
|
10
|
-
quality: ScreencastQuality;
|
|
11
|
-
/**
|
|
12
|
-
* bandwidth limit of a screencast track. By default there is no bandwidth limit.
|
|
13
|
-
*/
|
|
14
|
-
maxBandwidth: TrackBandwidthLimit;
|
|
15
|
-
};
|
|
16
|
-
export type ScreencastOptionsInternal = {
|
|
17
|
-
screencastMetadata: TrackMetadata & {
|
|
18
|
-
displayName?: string;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* SimulcastConfig of a screencast track. By default simulcast is disabled.
|
|
22
|
-
*/
|
|
23
|
-
simulcastConfig: SimulcastConfig;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* This hook can toggle screen sharing on/off and provides current screencast state.
|
|
27
|
-
* @returns An object with functions to manage screencast.
|
|
28
|
-
*/
|
|
29
|
-
export declare function useScreencast(): {
|
|
30
|
-
isScreencastOn: boolean;
|
|
31
|
-
toggleScreencast: (screencastOptions?: Partial<ScreencastOptions>) => Promise<void>;
|
|
32
|
-
toggleScreencastTrackEncoding: (encoding: TrackEncoding) => Promise<void>;
|
|
33
|
-
simulcastConfig: SimulcastConfig;
|
|
34
|
-
setScreencastTrackEncodingBandwidth: (encoding: TrackEncoding, bandwidth: BandwidthLimit) => Promise<void>;
|
|
35
|
-
setScreencastTrackBandwidth: (bandwidth: BandwidthLimit) => Promise<void>;
|
|
36
|
-
handleScreencastPermission: () => Promise<"granted" | "denied">;
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=useScreencast.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useScreencast.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreencast.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;OAEG;IACH,YAAY,EAAE,mBAAmB,CAAC;CACnC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IACtC,kBAAkB,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D;;OAEG;IACH,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AASF;;;GAGG;AACH,wBAAgB,aAAa;;2CAeC,OAAO,CAAC,iBAAiB,CAAC;8CAqBnC,aAAa;;oDAcb,aAAa,aAAa,cAAc;6CAiBvC,cAAc;;EAsBnC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { useCallback, useState } from 'react';
|
|
2
|
-
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
3
|
-
import { Platform } from 'react-native';
|
|
4
|
-
import { ReceivableEvents, useFishjamEvent } from './useFishjamEvent';
|
|
5
|
-
const defaultSimulcastConfig = () => ({
|
|
6
|
-
enabled: false,
|
|
7
|
-
activeEncodings: [],
|
|
8
|
-
});
|
|
9
|
-
let screencastSimulcastConfig = defaultSimulcastConfig();
|
|
10
|
-
/**
|
|
11
|
-
* This hook can toggle screen sharing on/off and provides current screencast state.
|
|
12
|
-
* @returns An object with functions to manage screencast.
|
|
13
|
-
*/
|
|
14
|
-
export function useScreencast() {
|
|
15
|
-
const [isScreencastOn, setIsScreencastOn] = useState(RNFishjamClientModule.isScreencastOn);
|
|
16
|
-
const [simulcastConfig, setSimulcastConfig] = useState(screencastSimulcastConfig);
|
|
17
|
-
useFishjamEvent(ReceivableEvents.IsScreencastOn, setIsScreencastOn);
|
|
18
|
-
/**
|
|
19
|
-
* Toggles the screencast on/off
|
|
20
|
-
*/
|
|
21
|
-
const toggleScreencast = useCallback(async (screencastOptions = {}) => {
|
|
22
|
-
const options = {
|
|
23
|
-
...screencastOptions,
|
|
24
|
-
screencastMetadata: {
|
|
25
|
-
displayName: 'presenting',
|
|
26
|
-
type: 'screensharing',
|
|
27
|
-
active: !isScreencastOn,
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
await RNFishjamClientModule.toggleScreencast(options);
|
|
31
|
-
screencastSimulcastConfig = defaultSimulcastConfig(); //to do: sync with camera settings
|
|
32
|
-
setSimulcastConfig(screencastSimulcastConfig);
|
|
33
|
-
}, [isScreencastOn]);
|
|
34
|
-
/**
|
|
35
|
-
* Toggles simulcast encoding of a screencast track on/off
|
|
36
|
-
* @param encoding encoding to toggle
|
|
37
|
-
*/
|
|
38
|
-
const toggleScreencastTrackEncoding = useCallback(async (encoding) => {
|
|
39
|
-
screencastSimulcastConfig =
|
|
40
|
-
await RNFishjamClientModule.toggleScreencastTrackEncoding(encoding);
|
|
41
|
-
setSimulcastConfig(screencastSimulcastConfig);
|
|
42
|
-
}, []);
|
|
43
|
-
/**
|
|
44
|
-
* updates maximum bandwidth for the given simulcast encoding of the screencast track
|
|
45
|
-
* @param encoding encoding to update
|
|
46
|
-
* @param bandwidth BandwidthLimit to set
|
|
47
|
-
*/
|
|
48
|
-
const setScreencastTrackEncodingBandwidth = useCallback(async (encoding, bandwidth) => {
|
|
49
|
-
await RNFishjamClientModule.setScreencastTrackEncodingBandwidth(encoding, bandwidth);
|
|
50
|
-
}, []);
|
|
51
|
-
/**
|
|
52
|
-
* updates maximum bandwidth for the screencast track. This value directly translates
|
|
53
|
-
* to quality of the stream and the amount of RTP packets being sent. In case simulcast
|
|
54
|
-
* is enabled bandwidth is split between all of the variant streams proportionally to
|
|
55
|
-
* their resolution
|
|
56
|
-
* @param bandwidth BandwidthLimit to set
|
|
57
|
-
*/
|
|
58
|
-
const setScreencastTrackBandwidth = useCallback(async (bandwidth) => {
|
|
59
|
-
await RNFishjamClientModule.setScreencastTrackBandwidth(bandwidth);
|
|
60
|
-
}, []);
|
|
61
|
-
const handleScreencastPermission = useCallback(async () => {
|
|
62
|
-
if (Platform.OS == 'android') {
|
|
63
|
-
return await RNFishjamClientModule.handleScreencastPermission();
|
|
64
|
-
}
|
|
65
|
-
return 'denied';
|
|
66
|
-
}, []);
|
|
67
|
-
return {
|
|
68
|
-
isScreencastOn,
|
|
69
|
-
toggleScreencast,
|
|
70
|
-
toggleScreencastTrackEncoding,
|
|
71
|
-
simulcastConfig,
|
|
72
|
-
setScreencastTrackEncodingBandwidth,
|
|
73
|
-
setScreencastTrackBandwidth,
|
|
74
|
-
handleScreencastPermission,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=useScreencast.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useScreencast.js","sourceRoot":"","sources":["../../src/hooks/useScreencast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAS9C,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyBtE,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,KAAK;IACd,eAAe,EAAE,EAAE;CACpB,CAAC,CAAC;AAEH,IAAI,yBAAyB,GAAoB,sBAAsB,EAAE,CAAC;AAE1E;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,qBAAqB,CAAC,cAAc,CACrC,CAAC;IAEF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,yBAAyB,CAC1B,CAAC;IAEF,eAAe,CAAC,gBAAgB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAEpE;;OAEG;IACH,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,oBAAgD,EAAE,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG;YACd,GAAG,iBAAiB;YACpB,kBAAkB,EAAE;gBAClB,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,eAAwB;gBAC9B,MAAM,EAAE,CAAC,cAAc;aACxB;SACF,CAAC;QACF,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,yBAAyB,GAAG,sBAAsB,EAAE,CAAC,CAAC,kCAAkC;QACxF,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;IAChD,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF;;;OAGG;IACH,MAAM,6BAA6B,GAAG,WAAW,CAC/C,KAAK,EAAE,QAAuB,EAAE,EAAE;QAChC,yBAAyB;YACvB,MAAM,qBAAqB,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACtE,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;IAChD,CAAC,EACD,EAAE,CACH,CAAC;IAEF;;;;OAIG;IACH,MAAM,mCAAmC,GAAG,WAAW,CACrD,KAAK,EAAE,QAAuB,EAAE,SAAyB,EAAE,EAAE;QAC3D,MAAM,qBAAqB,CAAC,mCAAmC,CAC7D,QAAQ,EACR,SAAS,CACV,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF;;;;;;OAMG;IACH,MAAM,2BAA2B,GAAG,WAAW,CAC7C,KAAK,EAAE,SAAyB,EAAE,EAAE;QAClC,MAAM,qBAAqB,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,0BAA0B,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxD,IAAI,QAAQ,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,qBAAqB,CAAC,0BAA0B,EAAE,CAAC;QAClE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,cAAc;QACd,gBAAgB;QAChB,6BAA6B;QAC7B,eAAe;QACf,mCAAmC;QACnC,2BAA2B;QAC3B,0BAA0B;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback, useState } from 'react';\n\nimport {\n BandwidthLimit,\n SimulcastConfig,\n TrackBandwidthLimit,\n TrackEncoding,\n TrackMetadata,\n} from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\nimport { Platform } from 'react-native';\nimport { ReceivableEvents, useFishjamEvent } from './useFishjamEvent';\n\nexport type ScreencastQuality = 'VGA' | 'HD5' | 'HD15' | 'FHD15' | 'FHD30';\n\nexport type ScreencastOptions = {\n /**\n * Resolution + fps of screencast 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: ScreencastQuality;\n /**\n * bandwidth limit of a screencast track. By default there is no bandwidth limit.\n */\n maxBandwidth: TrackBandwidthLimit;\n};\nexport type ScreencastOptionsInternal = {\n screencastMetadata: TrackMetadata & { displayName?: string };\n /**\n * SimulcastConfig of a screencast track. By default simulcast is disabled.\n */\n simulcastConfig: SimulcastConfig;\n};\n\nconst defaultSimulcastConfig = () => ({\n enabled: false,\n activeEncodings: [],\n});\n\nlet screencastSimulcastConfig: SimulcastConfig = defaultSimulcastConfig();\n\n/**\n * This hook can toggle screen sharing on/off and provides current screencast state.\n * @returns An object with functions to manage screencast.\n */\nexport function useScreencast() {\n const [isScreencastOn, setIsScreencastOn] = useState(\n RNFishjamClientModule.isScreencastOn,\n );\n\n const [simulcastConfig, setSimulcastConfig] = useState<SimulcastConfig>(\n screencastSimulcastConfig,\n );\n\n useFishjamEvent(ReceivableEvents.IsScreencastOn, setIsScreencastOn);\n\n /**\n * Toggles the screencast on/off\n */\n const toggleScreencast = useCallback(\n async (screencastOptions: Partial<ScreencastOptions> = {}) => {\n const options = {\n ...screencastOptions,\n screencastMetadata: {\n displayName: 'presenting',\n type: 'screensharing' as const,\n active: !isScreencastOn,\n },\n };\n await RNFishjamClientModule.toggleScreencast(options);\n screencastSimulcastConfig = defaultSimulcastConfig(); //to do: sync with camera settings\n setSimulcastConfig(screencastSimulcastConfig);\n },\n [isScreencastOn],\n );\n\n /**\n * Toggles simulcast encoding of a screencast track on/off\n * @param encoding encoding to toggle\n */\n const toggleScreencastTrackEncoding = useCallback(\n async (encoding: TrackEncoding) => {\n screencastSimulcastConfig =\n await RNFishjamClientModule.toggleScreencastTrackEncoding(encoding);\n setSimulcastConfig(screencastSimulcastConfig);\n },\n [],\n );\n\n /**\n * updates maximum bandwidth for the given simulcast encoding of the screencast track\n * @param encoding encoding to update\n * @param bandwidth BandwidthLimit to set\n */\n const setScreencastTrackEncodingBandwidth = useCallback(\n async (encoding: TrackEncoding, bandwidth: BandwidthLimit) => {\n await RNFishjamClientModule.setScreencastTrackEncodingBandwidth(\n encoding,\n bandwidth,\n );\n },\n [],\n );\n\n /**\n * updates maximum bandwidth for the screencast track. This value directly translates\n * to quality of the stream and the amount of RTP packets being sent. In case simulcast\n * is enabled bandwidth is split between all of the variant streams proportionally to\n * their resolution\n * @param bandwidth BandwidthLimit to set\n */\n const setScreencastTrackBandwidth = useCallback(\n async (bandwidth: BandwidthLimit) => {\n await RNFishjamClientModule.setScreencastTrackBandwidth(bandwidth);\n },\n [],\n );\n\n const handleScreencastPermission = useCallback(async () => {\n if (Platform.OS == 'android') {\n return await RNFishjamClientModule.handleScreencastPermission();\n }\n return 'denied';\n }, []);\n\n return {\n isScreencastOn,\n toggleScreencast,\n toggleScreencastTrackEncoding,\n simulcastConfig,\n setScreencastTrackEncodingBandwidth,\n setScreencastTrackBandwidth,\n handleScreencastPermission,\n };\n}\n"]}
|