@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.
Files changed (96) hide show
  1. package/README.md +9 -397
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +2 -1
  4. package/android/src/main/java/io/fishjam/reactnative/Errors.kt +3 -2
  5. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +86 -73
  6. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +20 -19
  7. package/build/RNFishjamClientModule.d.ts +10 -8
  8. package/build/RNFishjamClientModule.d.ts.map +1 -1
  9. package/build/RNFishjamClientModule.js +2 -1
  10. package/build/RNFishjamClientModule.js.map +1 -1
  11. package/build/common/client.d.ts +8 -5
  12. package/build/common/client.d.ts.map +1 -1
  13. package/build/common/client.js +9 -6
  14. package/build/common/client.js.map +1 -1
  15. package/build/common/metadata.d.ts +4 -3
  16. package/build/common/metadata.d.ts.map +1 -1
  17. package/build/common/metadata.js +5 -4
  18. package/build/common/metadata.js.map +1 -1
  19. package/build/common/webRTC.d.ts +2 -0
  20. package/build/common/webRTC.d.ts.map +1 -1
  21. package/build/common/webRTC.js +2 -0
  22. package/build/common/webRTC.js.map +1 -1
  23. package/build/components/VideoPreviewView.d.ts +6 -3
  24. package/build/components/VideoPreviewView.d.ts.map +1 -1
  25. package/build/components/VideoPreviewView.js +5 -0
  26. package/build/components/VideoPreviewView.js.map +1 -1
  27. package/build/components/VideoRendererView.d.ts +5 -3
  28. package/build/components/VideoRendererView.d.ts.map +1 -1
  29. package/build/components/VideoRendererView.js +4 -0
  30. package/build/components/VideoRendererView.js.map +1 -1
  31. package/build/hooks/useAudioSettings.d.ts +15 -0
  32. package/build/hooks/useAudioSettings.d.ts.map +1 -1
  33. package/build/hooks/useAudioSettings.js +15 -13
  34. package/build/hooks/useAudioSettings.js.map +1 -1
  35. package/build/hooks/useBandwidthEstimation.d.ts +2 -0
  36. package/build/hooks/useBandwidthEstimation.d.ts.map +1 -1
  37. package/build/hooks/useBandwidthEstimation.js +2 -0
  38. package/build/hooks/useBandwidthEstimation.js.map +1 -1
  39. package/build/hooks/useCamera.d.ts +62 -1
  40. package/build/hooks/useCamera.d.ts.map +1 -1
  41. package/build/hooks/useCamera.js +46 -38
  42. package/build/hooks/useCamera.js.map +1 -1
  43. package/build/hooks/useFishjamEvent.d.ts +2 -1
  44. package/build/hooks/useFishjamEvent.d.ts.map +1 -1
  45. package/build/hooks/useFishjamEvent.js +4 -5
  46. package/build/hooks/useFishjamEvent.js.map +1 -1
  47. package/build/hooks/useMicrophone.d.ts +4 -0
  48. package/build/hooks/useMicrophone.d.ts.map +1 -1
  49. package/build/hooks/useMicrophone.js +8 -4
  50. package/build/hooks/useMicrophone.js.map +1 -1
  51. package/build/hooks/useParticipants.d.ts +2 -0
  52. package/build/hooks/useParticipants.d.ts.map +1 -1
  53. package/build/hooks/useParticipants.js +2 -0
  54. package/build/hooks/useParticipants.js.map +1 -1
  55. package/build/hooks/useReconnection.d.ts +6 -0
  56. package/build/hooks/useReconnection.d.ts.map +1 -1
  57. package/build/hooks/useReconnection.js +6 -0
  58. package/build/hooks/useReconnection.js.map +1 -1
  59. package/build/hooks/useScreenShare.d.ts +57 -0
  60. package/build/hooks/useScreenShare.d.ts.map +1 -0
  61. package/build/hooks/useScreenShare.js +85 -0
  62. package/build/hooks/useScreenShare.js.map +1 -0
  63. package/build/index.d.ts +4 -3
  64. package/build/index.d.ts.map +1 -1
  65. package/build/index.js +3 -1
  66. package/build/index.js.map +1 -1
  67. package/build/stats/useRTCStatistics.d.ts +1 -0
  68. package/build/stats/useRTCStatistics.d.ts.map +1 -1
  69. package/build/stats/useRTCStatistics.js +1 -0
  70. package/build/stats/useRTCStatistics.js.map +1 -1
  71. package/build/types.d.ts +6 -0
  72. package/build/types.d.ts.map +1 -1
  73. package/build/types.js.map +1 -1
  74. package/build/utils/errorListener.d.ts +2 -0
  75. package/build/utils/errorListener.d.ts.map +1 -0
  76. package/build/utils/errorListener.js +16 -0
  77. package/build/utils/errorListener.js.map +1 -0
  78. package/build/utils/foregroundService.d.ts +2 -0
  79. package/build/utils/foregroundService.d.ts.map +1 -1
  80. package/build/utils/foregroundService.js +2 -0
  81. package/build/utils/foregroundService.js.map +1 -1
  82. package/ios/Events.swift +2 -1
  83. package/ios/RNFishjamClient.podspec +1 -1
  84. package/ios/RNFishjamClient.swift +76 -62
  85. package/ios/RNFishjamClientModule.swift +18 -17
  86. package/package.json +13 -10
  87. package/plugin/broadcastExtensionFiles/FishjamBroadcastSampleHandler.swift +50 -0
  88. package/plugin/broadcastExtensionFiles/FishjamScreenBroadcastExtension.entitlements +10 -0
  89. package/plugin/broadcastExtensionFiles/Info.plist +27 -0
  90. package/plugin/build/types.d.ts +5 -5
  91. package/plugin/build/withFishjamAndroid.js +2 -2
  92. package/plugin/build/withFishjamIos.js +4 -4
  93. package/build/hooks/useScreencast.d.ts +0 -38
  94. package/build/hooks/useScreencast.d.ts.map +0 -1
  95. package/build/hooks/useScreencast.js +0 -77
  96. 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['ScreencastExtensionBundleId'] =
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.ios.iphoneDeploymentTarget ?? IPHONEOS_DEPLOYMENT_TARGET;
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.ios.enableScreensharing) {
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.ios.iphoneDeploymentTarget ?? IPHONEOS_DEPLOYMENT_TARGET;
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"]}