@fishjam-cloud/react-native-client 0.2.3 → 0.3.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.
Files changed (86) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +14 -401
  3. package/android/build.gradle +3 -3
  4. package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +25 -12
  5. package/android/src/main/java/io/fishjam/reactnative/Errors.kt +3 -2
  6. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +122 -105
  7. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +24 -33
  8. package/android/src/main/java/io/fishjam/reactnative/VideoPreviewView.kt +13 -3
  9. package/build/RNFishjamClientModule.d.ts +17 -15
  10. package/build/RNFishjamClientModule.d.ts.map +1 -1
  11. package/build/RNFishjamClientModule.js.map +1 -1
  12. package/build/common/client.d.ts +4 -4
  13. package/build/common/client.d.ts.map +1 -1
  14. package/build/common/client.js +5 -5
  15. package/build/common/client.js.map +1 -1
  16. package/build/common/metadata.d.ts +3 -3
  17. package/build/common/metadata.d.ts.map +1 -1
  18. package/build/common/metadata.js +4 -4
  19. package/build/common/metadata.js.map +1 -1
  20. package/build/common/webRTC.d.ts +0 -8
  21. package/build/common/webRTC.d.ts.map +1 -1
  22. package/build/common/webRTC.js +0 -9
  23. package/build/common/webRTC.js.map +1 -1
  24. package/build/components/VideoRendererView.d.ts +1 -1
  25. package/build/components/VideoRendererView.js +1 -1
  26. package/build/components/VideoRendererView.js.map +1 -1
  27. package/build/debug/common/webRTC.d.ts +9 -0
  28. package/build/debug/common/webRTC.d.ts.map +1 -0
  29. package/build/debug/common/webRTC.js +11 -0
  30. package/build/debug/common/webRTC.js.map +1 -0
  31. package/build/debug/index.d.ts +4 -0
  32. package/build/debug/index.d.ts.map +1 -0
  33. package/build/debug/index.js +3 -0
  34. package/build/debug/index.js.map +1 -0
  35. package/build/debug/stats/types.d.ts.map +1 -0
  36. package/build/debug/stats/types.js.map +1 -0
  37. package/build/debug/stats/useRTCStatistics.d.ts.map +1 -0
  38. package/build/{stats → debug/stats}/useRTCStatistics.js +1 -1
  39. package/build/debug/stats/useRTCStatistics.js.map +1 -0
  40. package/build/hooks/useCamera.d.ts +17 -0
  41. package/build/hooks/useCamera.d.ts.map +1 -1
  42. package/build/hooks/useCamera.js +1 -1
  43. package/build/hooks/useCamera.js.map +1 -1
  44. package/build/hooks/useFishjamEvent.d.ts +2 -1
  45. package/build/hooks/useFishjamEvent.d.ts.map +1 -1
  46. package/build/hooks/useFishjamEvent.js +2 -1
  47. package/build/hooks/useFishjamEvent.js.map +1 -1
  48. package/build/hooks/usePeerStatus.d.ts +19 -0
  49. package/build/hooks/usePeerStatus.d.ts.map +1 -0
  50. package/build/hooks/usePeerStatus.js +18 -0
  51. package/build/hooks/usePeerStatus.js.map +1 -0
  52. package/build/hooks/{useParticipants.d.ts → usePeers.d.ts} +11 -11
  53. package/build/hooks/usePeers.d.ts.map +1 -0
  54. package/build/hooks/usePeers.js +34 -0
  55. package/build/hooks/usePeers.js.map +1 -0
  56. package/build/hooks/useScreenShare.d.ts +57 -0
  57. package/build/hooks/useScreenShare.d.ts.map +1 -0
  58. package/build/hooks/useScreenShare.js +85 -0
  59. package/build/hooks/useScreenShare.js.map +1 -0
  60. package/build/index.d.ts +8 -7
  61. package/build/index.d.ts.map +1 -1
  62. package/build/index.js +4 -4
  63. package/build/index.js.map +1 -1
  64. package/debug/package.json +4 -0
  65. package/ios/Events.swift +29 -13
  66. package/ios/RNFishjamClient.podspec +1 -1
  67. package/ios/RNFishjamClient.swift +110 -107
  68. package/ios/RNFishjamClientModule.swift +22 -29
  69. package/ios/VideoPreviewView.swift +27 -9
  70. package/package.json +14 -11
  71. package/plugin/broadcastExtensionFiles/FishjamBroadcastSampleHandler.swift +1 -1
  72. package/plugin/build/withFishjamIos.js +3 -3
  73. package/build/hooks/useParticipants.d.ts.map +0 -1
  74. package/build/hooks/useParticipants.js +0 -34
  75. package/build/hooks/useParticipants.js.map +0 -1
  76. package/build/hooks/useScreencast.d.ts +0 -57
  77. package/build/hooks/useScreencast.d.ts.map +0 -1
  78. package/build/hooks/useScreencast.js +0 -85
  79. package/build/hooks/useScreencast.js.map +0 -1
  80. package/build/stats/types.d.ts.map +0 -1
  81. package/build/stats/types.js.map +0 -1
  82. package/build/stats/useRTCStatistics.d.ts.map +0 -1
  83. package/build/stats/useRTCStatistics.js.map +0 -1
  84. /package/build/{stats → debug/stats}/types.d.ts +0 -0
  85. /package/build/{stats → debug/stats}/types.js +0 -0
  86. /package/build/{stats → debug/stats}/useRTCStatistics.d.ts +0 -0
@@ -29,7 +29,7 @@ class CameraConfig : Record {
29
29
  val quality: String = "VGA169"
30
30
 
31
31
  @Field
32
- val flipVideo: Boolean = false
32
+ val flipDimensions: Boolean = false
33
33
 
34
34
  @Field
35
35
  val videoTrackMetadata: Map<String, Any> = emptyMap()
@@ -51,12 +51,12 @@ class CameraConfig : Record {
51
51
  val cameraId: String? = null
52
52
  }
53
53
 
54
- class ScreencastOptions : Record {
54
+ class ScreenShareOptions : Record {
55
55
  @Field
56
56
  val quality: String = "HD15"
57
57
 
58
58
  @Field
59
- val screencastMetadata: Map<String, Any> = emptyMap()
59
+ val screenShareMetadata: Map<String, Any> = emptyMap()
60
60
 
61
61
  @Field
62
62
  val simulcastConfig: SimulcastConfig = SimulcastConfig()
@@ -106,20 +106,7 @@ class RNFishjamClientModule : Module() {
106
106
  ModuleDefinition {
107
107
  Name("RNFishjamClient")
108
108
 
109
- Events(
110
- "IsCameraOn",
111
- "IsMicrophoneOn",
112
- "IsScreencastOn",
113
- "SimulcastConfigUpdate",
114
- "PeersUpdate",
115
- "AudioDeviceUpdate",
116
- "SendMediaEvent",
117
- "BandwidthEstimation",
118
- "ReconnectionRetriesLimitReached",
119
- "ReconnectionStarted",
120
- "Reconnected",
121
- "Warning"
122
- )
109
+ Events(EmitableEvents.allEvents)
123
110
 
124
111
  val rnFishjamClient =
125
112
  RNFishjamClient { name: String, data: Map<String, Any?> ->
@@ -146,9 +133,9 @@ class RNFishjamClientModule : Module() {
146
133
 
147
134
  AsyncFunction(
148
135
  "joinRoom"
149
- ) { url: String, participantToken: String, participantMetadata: Map<String, Any>, config: ConnectConfig, promise: Promise ->
136
+ ) { url: String, peerToken: String, peerMetadata: Map<String, Any>, config: ConnectConfig, promise: Promise ->
150
137
  CoroutineScope(Dispatchers.Main).launch {
151
- rnFishjamClient.joinRoom(url, participantToken, participantMetadata, config, promise)
138
+ rnFishjamClient.joinRoom(url, peerToken, peerMetadata, config, promise)
152
139
  }
153
140
  }
154
141
 
@@ -200,15 +187,15 @@ class RNFishjamClientModule : Module() {
200
187
  }
201
188
  }
202
189
 
203
- AsyncFunction("handleScreencastPermission") { promise: Promise ->
190
+ AsyncFunction("handleScreenSharePermission") { promise: Promise ->
204
191
  CoroutineScope(Dispatchers.Main).launch {
205
- rnFishjamClient.handleScreencastPermission(promise)
192
+ rnFishjamClient.handleScreenSharePermission(promise)
206
193
  }
207
194
  }
208
195
 
209
- AsyncFunction("toggleScreencast") Coroutine { screencastOptions: ScreencastOptions ->
196
+ AsyncFunction("toggleScreenShare") Coroutine { screenShareOptions: ScreenShareOptions ->
210
197
  withContext(Dispatchers.Main) {
211
- rnFishjamClient.toggleScreencast(screencastOptions)
198
+ rnFishjamClient.toggleScreenShare(screenShareOptions)
212
199
  }
213
200
  }
214
201
 
@@ -216,8 +203,8 @@ class RNFishjamClientModule : Module() {
216
203
  return@Property rnFishjamClient.getCaptureDevices()
217
204
  }
218
205
 
219
- Property("isScreencastOn") {
220
- return@Property rnFishjamClient.isScreencastOn
206
+ Property("isScreenShareOn") {
207
+ return@Property rnFishjamClient.isScreenShareOn
221
208
  }
222
209
 
223
210
  AsyncFunction("getPeers") Coroutine { ->
@@ -244,9 +231,9 @@ class RNFishjamClientModule : Module() {
244
231
  }
245
232
  }
246
233
 
247
- AsyncFunction("updateScreencastTrackMetadata") Coroutine { metadata: Map<String, Any> ->
234
+ AsyncFunction("updateScreenShareTrackMetadata") Coroutine { metadata: Map<String, Any> ->
248
235
  withContext(Dispatchers.Main) {
249
- rnFishjamClient.updateLocalScreencastTrackMetadata(metadata)
236
+ rnFishjamClient.updateLocalScreenShareTrackMetadata(metadata)
250
237
  }
251
238
  }
252
239
 
@@ -262,21 +249,21 @@ class RNFishjamClientModule : Module() {
262
249
  rnFishjamClient.stopAudioSwitcher()
263
250
  }
264
251
 
265
- AsyncFunction("toggleScreencastTrackEncoding") Coroutine { encoding: String ->
252
+ AsyncFunction("toggleScreenShareTrackEncoding") Coroutine { encoding: String ->
266
253
  withContext(Dispatchers.Main) {
267
- rnFishjamClient.toggleScreencastTrackEncoding(encoding)
254
+ rnFishjamClient.toggleScreenShareTrackEncoding(encoding)
268
255
  }
269
256
  }
270
257
 
271
- AsyncFunction("setScreencastTrackBandwidth") Coroutine { bandwidth: Int ->
258
+ AsyncFunction("setScreenShareTrackBandwidth") Coroutine { bandwidth: Int ->
272
259
  withContext(Dispatchers.Main) {
273
- rnFishjamClient.setScreencastTrackBandwidth(bandwidth)
260
+ rnFishjamClient.setScreenShareTrackBandwidth(bandwidth)
274
261
  }
275
262
  }
276
263
 
277
- AsyncFunction("setScreencastTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
264
+ AsyncFunction("setScreenShareTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
278
265
  withContext(Dispatchers.Main) {
279
- rnFishjamClient.setScreencastTrackEncodingBandwidth(encoding, bandwidth)
266
+ rnFishjamClient.setScreenShareTrackEncodingBandwidth(encoding, bandwidth)
280
267
  }
281
268
  }
282
269
 
@@ -367,5 +354,9 @@ class RNFishjamClientModule : Module() {
367
354
 
368
355
  appContext.reactContext!!.stopService(serviceIntent)
369
356
  }
357
+
358
+ Property("peerStatus") {
359
+ return@Property rnFishjamClient.peerStatus
360
+ }
370
361
  }
371
362
  }
@@ -8,16 +8,20 @@ import expo.modules.kotlin.AppContext
8
8
  class VideoPreviewView(
9
9
  context: Context,
10
10
  appContext: AppContext
11
- ) : VideoView(context, appContext) {
11
+ ) : VideoView(context, appContext),
12
+ RNFishjamClient.OnLocalCameraTrackChangedListener {
12
13
  private var localVideoTrack: LocalVideoTrack? = null
13
14
 
14
- private fun initialize() {
15
+ private fun trySetLocalCameraTrack() {
15
16
  localVideoTrack =
16
17
  RNFishjamClient.fishjamClient.getLocalEndpoint().tracks.values.firstOrNull { track ->
17
18
  track is LocalVideoTrack
18
19
  } as? LocalVideoTrack?
19
-
20
20
  videoView.let { localVideoTrack?.addRenderer(it) }
21
+ }
22
+
23
+ private fun initialize() {
24
+ trySetLocalCameraTrack()
21
25
  super.setupTrack()
22
26
  }
23
27
 
@@ -27,14 +31,20 @@ class VideoPreviewView(
27
31
  }
28
32
 
29
33
  override fun onDetachedFromWindow() {
34
+ RNFishjamClient.localCameraTrackListeners.remove(this)
30
35
  super.onDetachedFromWindow()
31
36
  dispose()
32
37
  }
33
38
 
34
39
  override fun onAttachedToWindow() {
40
+ RNFishjamClient.localCameraTrackListeners.add(this)
35
41
  super.onAttachedToWindow()
36
42
  initialize()
37
43
  }
38
44
 
39
45
  override fun getVideoTrack(): VideoTrack? = localVideoTrack
46
+
47
+ override fun onLocalCameraTrackChanged() {
48
+ if (localVideoTrack == null) trySetLocalCameraTrack()
49
+ }
40
50
  }
@@ -1,41 +1,43 @@
1
1
  import { EventEmitter } from 'expo-modules-core';
2
2
  import { NativeModule } from 'react-native';
3
- import type { RTCStats } from './stats/types';
3
+ import type { RTCStats } from './debug/stats/types';
4
4
  import type { ForegroundServiceOptions, SimulcastConfig } from './types';
5
5
  import type { CameraConfigInternal, Camera } from './hooks/useCamera';
6
- import type { Participant } from './hooks/useParticipants';
7
- import type { ScreencastOptionsInternal } from './hooks/useScreencast';
6
+ import type { Peer } from './hooks/usePeers';
7
+ import type { ScreenShareOptionsInternal } from './hooks/useScreenShare';
8
8
  import type { ConnectionConfig } from './common/client';
9
+ import { PeerStatus } from './hooks/usePeerStatus';
9
10
  type Metadata = {
10
11
  [key: string]: any;
11
12
  };
12
13
  type RNFishjamClient = {
13
- joinRoom: (url: string, participantToken: string, participantMetadata: Metadata, config: ConnectionConfig) => Promise<void>;
14
+ isMicrophoneOn: boolean;
15
+ isCameraOn: boolean;
16
+ isScreenShareOn: boolean;
17
+ cameras: ReadonlyArray<Camera>;
18
+ peerStatus: PeerStatus;
19
+ joinRoom: (url: string, peerToken: string, peerMetadata: Metadata, config: ConnectionConfig) => Promise<void>;
14
20
  leaveRoom: () => Promise<void>;
15
21
  startCamera: (config: CameraConfigInternal) => Promise<void>;
16
- isMicrophoneOn: boolean;
17
22
  toggleMicrophone: () => Promise<boolean>;
18
- isCameraOn: boolean;
19
23
  toggleCamera: () => Promise<boolean>;
20
24
  flipCamera: () => Promise<void>;
21
25
  switchCamera: (cameraId: string) => Promise<void>;
22
- cameras: ReadonlyArray<Camera>;
23
- handleScreencastPermission: () => Promise<'granted' | 'denied'>;
24
- toggleScreencast: (screencastOptions: Partial<ScreencastOptionsInternal>) => Promise<void>;
25
- isScreencastOn: boolean;
26
- getPeers: <PeerMetadataType extends Metadata>() => Promise<Participant<PeerMetadataType>[]>;
26
+ handleScreenSharePermission: () => Promise<'granted' | 'denied'>;
27
+ toggleScreenShare: (screenShareOptions: Partial<ScreenShareOptionsInternal>) => Promise<void>;
28
+ getPeers: <PeerMetadataType extends Metadata>() => Promise<Peer<PeerMetadataType>[]>;
27
29
  updatePeerMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
28
30
  updateVideoTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
29
31
  updateAudioTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
30
- updateScreencastTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
32
+ updateScreenShareTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
31
33
  setOutputAudioDevice: (audioDevice: string) => Promise<void>;
32
34
  startAudioSwitcher: () => Promise<void>;
33
35
  stopAudioSwitcher: () => Promise<void>;
34
36
  selectAudioSessionMode: (sessionMode: string) => Promise<void>;
35
37
  showAudioRoutePicker: () => Promise<void>;
36
- toggleScreencastTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
37
- setScreencastTrackBandwidth: (bandwidth: number) => Promise<void>;
38
- setScreencastTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
38
+ toggleScreenShareTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
39
+ setScreenShareTrackBandwidth: (bandwidth: number) => Promise<void>;
40
+ setScreenShareTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
39
41
  setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;
40
42
  toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
41
43
  setVideoTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.d.ts","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RNFishjamClientModule.d.ts","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAwEtE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAe,YAA8C,CAAC","sourcesContent":["import { EventEmitter, requireNativeModule } from 'expo-modules-core';\nimport { NativeModule } from 'react-native';\n\nimport type { RTCStats } from './stats/types';\nimport type { ForegroundServiceOptions, SimulcastConfig } from './types';\nimport type { CameraConfigInternal, Camera } from './hooks/useCamera';\nimport type { Participant } from './hooks/useParticipants';\nimport type { ScreencastOptionsInternal } from './hooks/useScreencast';\nimport type { ConnectionConfig } from './common/client';\n\ntype Metadata = { [key: string]: any };\n\ntype RNFishjamClient = {\n joinRoom: (\n url: string,\n participantToken: string,\n participantMetadata: Metadata,\n config: ConnectionConfig,\n ) => Promise<void>;\n leaveRoom: () => Promise<void>;\n startCamera: (config: CameraConfigInternal) => Promise<void>;\n isMicrophoneOn: boolean;\n toggleMicrophone: () => Promise<boolean>;\n isCameraOn: boolean;\n toggleCamera: () => Promise<boolean>;\n flipCamera: () => Promise<void>;\n switchCamera: (cameraId: string) => Promise<void>;\n cameras: ReadonlyArray<Camera>;\n handleScreencastPermission: () => Promise<'granted' | 'denied'>;\n toggleScreencast: (\n screencastOptions: Partial<ScreencastOptionsInternal>,\n ) => Promise<void>;\n isScreencastOn: boolean;\n getPeers: <PeerMetadataType extends Metadata>() => Promise<\n Participant<PeerMetadataType>[]\n >;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateAudioTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateScreencastTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n setOutputAudioDevice: (audioDevice: string) => Promise<void>;\n startAudioSwitcher: () => Promise<void>;\n stopAudioSwitcher: () => Promise<void>;\n selectAudioSessionMode: (sessionMode: string) => Promise<void>;\n showAudioRoutePicker: () => Promise<void>;\n toggleScreencastTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setScreencastTrackBandwidth: (bandwidth: number) => Promise<void>;\n setScreencastTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;\n toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setVideoTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setVideoTrackBandwidth: (bandwidth: number) => Promise<void>;\n changeWebRTCLoggingSeverity: (severity: string) => Promise<void>;\n getStatistics: () => Promise<RTCStats>;\n startForegroundService: (options: ForegroundServiceOptions) => void;\n stopForegroundService: () => void;\n};\n\nconst nativeModule = requireNativeModule('RNFishjamClient');\nexport const nativeModuleEventEmitter = new EventEmitter(nativeModule);\n\nexport default nativeModule as RNFishjamClient & NativeModule;\n"]}
1
+ {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA6EtE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAe,YAA8C,CAAC","sourcesContent":["import { EventEmitter, requireNativeModule } from 'expo-modules-core';\nimport { NativeModule } from 'react-native';\n\nimport type { RTCStats } from './debug/stats/types';\nimport type { ForegroundServiceOptions, SimulcastConfig } from './types';\nimport type { CameraConfigInternal, Camera } from './hooks/useCamera';\nimport type { Peer } from './hooks/usePeers';\nimport type { ScreenShareOptionsInternal } from './hooks/useScreenShare';\nimport type { ConnectionConfig } from './common/client';\nimport { PeerStatus } from './hooks/usePeerStatus';\n\ntype Metadata = { [key: string]: any };\n\ntype RNFishjamClient = {\n isMicrophoneOn: boolean;\n isCameraOn: boolean;\n isScreenShareOn: boolean;\n cameras: ReadonlyArray<Camera>;\n peerStatus: PeerStatus;\n\n joinRoom: (\n url: string,\n peerToken: string,\n peerMetadata: Metadata,\n config: ConnectionConfig,\n ) => Promise<void>;\n leaveRoom: () => Promise<void>;\n startCamera: (config: CameraConfigInternal) => Promise<void>;\n toggleMicrophone: () => Promise<boolean>;\n toggleCamera: () => Promise<boolean>;\n flipCamera: () => Promise<void>;\n switchCamera: (cameraId: string) => Promise<void>;\n handleScreenSharePermission: () => Promise<'granted' | 'denied'>;\n toggleScreenShare: (\n screenShareOptions: Partial<ScreenShareOptionsInternal>,\n ) => Promise<void>;\n getPeers: <PeerMetadataType extends Metadata>() => Promise<\n Peer<PeerMetadataType>[]\n >;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateAudioTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateScreenShareTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n setOutputAudioDevice: (audioDevice: string) => Promise<void>;\n startAudioSwitcher: () => Promise<void>;\n stopAudioSwitcher: () => Promise<void>;\n selectAudioSessionMode: (sessionMode: string) => Promise<void>;\n showAudioRoutePicker: () => Promise<void>;\n toggleScreenShareTrackEncoding: (\n encoding: string,\n ) => Promise<SimulcastConfig>;\n setScreenShareTrackBandwidth: (bandwidth: number) => Promise<void>;\n setScreenShareTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;\n toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setVideoTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setVideoTrackBandwidth: (bandwidth: number) => Promise<void>;\n changeWebRTCLoggingSeverity: (severity: string) => Promise<void>;\n getStatistics: () => Promise<RTCStats>;\n startForegroundService: (options: ForegroundServiceOptions) => void;\n stopForegroundService: () => void;\n};\n\nconst nativeModule = requireNativeModule('RNFishjamClient');\nexport const nativeModuleEventEmitter = new EventEmitter(nativeModule);\n\nexport default nativeModule as RNFishjamClient & NativeModule;\n"]}
@@ -16,12 +16,12 @@ export type ConnectionConfig = {
16
16
  };
17
17
  /**
18
18
  * @param url fishjam Url
19
- * @param participantToken
20
- * @param participantMetadata
21
- * @param config
19
+ * @param peerToken token received from server (or Room Manager)
20
+ * @param peerMetadata string indexed record with metadata, that will be available to all other peers
21
+ * @param config additional connection configuration
22
22
  * @category Connection
23
23
  */
24
- export declare function joinRoom<ParticipantMetadata extends GenericMetadata = GenericMetadata>(url: string, participantToken: string, participantMetadata: ParticipantMetadata, config?: ConnectionConfig): Promise<void>;
24
+ export declare function joinRoom<PeerMetadata extends GenericMetadata = GenericMetadata>(url: string, peerToken: string, peerMetadata?: PeerMetadata, config?: ConnectionConfig): Promise<void>;
25
25
  /**
26
26
  * @category Connection
27
27
  */
@@ -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;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;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAE7D,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,GAAE,gBAAqB,iBAQ9B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
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;;;;;;GAMG;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"}
@@ -1,13 +1,13 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
3
  * @param url fishjam Url
4
- * @param participantToken
5
- * @param participantMetadata
6
- * @param config
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
7
  * @category Connection
8
8
  */
9
- export async function joinRoom(url, participantToken, participantMetadata, config = {}) {
10
- await RNFishjamClientModule.joinRoom(url, participantToken, participantMetadata, config);
9
+ export async function joinRoom(url, peerToken, peerMetadata, config) {
10
+ await RNFishjamClientModule.joinRoom(url, peerToken, peerMetadata ?? {}, config ?? {});
11
11
  }
12
12
  /**
13
13
  * @category Connection
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EACX,gBAAwB,EACxB,mBAAwC,EACxC,SAA2B,EAAE;IAE7B,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,CACP,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 * @param url fishjam Url\n * @param participantToken\n * @param participantMetadata\n * @param config\n * @category Connection\n */\nexport async function joinRoom<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(\n url: string,\n participantToken: string,\n participantMetadata: ParticipantMetadata,\n config: ConnectionConfig = {},\n) {\n await RNFishjamClientModule.joinRoom(\n url,\n participantToken,\n participantMetadata,\n config,\n );\n}\n/**\n * @category Connection\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;;;;;GAMG;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 * @param url fishjam Url\n * @param peerToken token received from server (or Room Manager)\n * @param peerMetadata string indexed record with metadata, that will be available to all other peers\n * @param config additional connection configuration\n * @category Connection\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 * @category Connection\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { GenericMetadata } from '../types';
2
2
  /**
3
- * a function that updates endpoints's metadata on the server
4
- * @param metadata a map indexed by strings, containing participants metadata to be sent to the server
3
+ * Updates metadata send to other peers
4
+ * @param peerMetadata string indexed record with metadata, that will be available to all other peers
5
5
  * @category Connection
6
6
  */
7
- export declare function updatePeerMetadata<ParticipantMetadata extends GenericMetadata = GenericMetadata>(metadata: ParticipantMetadata): Promise<void>;
7
+ export declare function updatePeerMetadata<PeerMetadata extends GenericMetadata = GenericMetadata>(peerMetadata: PeerMetadata): Promise<void>;
8
8
  //# 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;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAC7D,QAAQ,EAAE,mBAAmB,iBAE9B"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,YAAY,EAAE,YAAY,iBAE3B"}
@@ -1,10 +1,10 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
- * a function that updates endpoints's metadata on the server
4
- * @param metadata a map indexed by strings, containing participants metadata to be sent to the server
3
+ * Updates metadata send to other peers
4
+ * @param peerMetadata string indexed record with metadata, that will be available to all other peers
5
5
  * @category Connection
6
6
  */
7
- export async function updatePeerMetadata(metadata) {
8
- await RNFishjamClientModule.updatePeerMetadata(metadata);
7
+ export async function updatePeerMetadata(peerMetadata) {
8
+ await RNFishjamClientModule.updatePeerMetadata(peerMetadata);
9
9
  }
10
10
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAEtC,QAA6B;IAC7B,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * a function that updates endpoints's metadata on the server\n * @param metadata a map indexed by strings, containing participants metadata to be sent to the server\n * @category Connection\n */\nexport async function updatePeerMetadata<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(metadata: ParticipantMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(metadata);\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;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 * @category Connection\n */\nexport async function updatePeerMetadata<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(peerMetadata: PeerMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(peerMetadata);\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { TrackEncoding } from '../types';
2
- export type LoggingSeverity = 'verbose' | 'info' | 'warning' | 'error' | 'none';
3
2
  /**
4
3
  * sets track encoding that server should send to the client library.
5
4
  * The encoding will be sent whenever it is available. If chooses encoding is
@@ -11,11 +10,4 @@ export type LoggingSeverity = 'verbose' | 'info' | 'warning' | 'error' | 'none';
11
10
  * @category Debugging
12
11
  */
13
12
  export declare function setTargetTrackEncoding(trackId: string, encoding: TrackEncoding): Promise<void>;
14
- /**
15
- * Function that changes level of debugging logs in WebRTC.
16
- * @param severity to use when displaying logs
17
- * @returns a promise that is resolved when debug severity is changed
18
- * @category Debugging
19
- */
20
- export declare function changeWebRTCLoggingSeverity(severity: LoggingSeverity): Promise<void>;
21
13
  //# sourceMappingURL=webRTC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webRTC.d.ts","sourceRoot":"","sources":["../../src/common/webRTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,iBAGxB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"webRTC.d.ts","sourceRoot":"","sources":["../../src/common/webRTC.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,iBAGxB"}
@@ -12,13 +12,4 @@ import RNFishjamClientModule from '../RNFishjamClientModule';
12
12
  export async function setTargetTrackEncoding(trackId, encoding) {
13
13
  await RNFishjamClientModule.setTargetTrackEncoding(trackId, encoding);
14
14
  }
15
- /**
16
- * Function that changes level of debugging logs in WebRTC.
17
- * @param severity to use when displaying logs
18
- * @returns a promise that is resolved when debug severity is changed
19
- * @category Debugging
20
- */
21
- export function changeWebRTCLoggingSeverity(severity) {
22
- return RNFishjamClientModule.changeWebRTCLoggingSeverity(severity);
23
- }
24
15
  //# sourceMappingURL=webRTC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webRTC.js","sourceRoot":"","sources":["../../src/common/webRTC.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAI7D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,QAAuB;IAEvB,MAAM,qBAAqB,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAyB;IAEzB,OAAO,qBAAqB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC","sourcesContent":["import { TrackEncoding } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nexport type LoggingSeverity = 'verbose' | 'info' | 'warning' | 'error' | 'none';\n\n/**\n * sets track encoding that server should send to the client library.\n * The encoding will be sent whenever it is available. If chooses encoding is\n * temporarily unavailable, some other encoding will be sent until choose encoding\n * becomes active again.\n *\n * @param trackId id of a track which encoding you want to select\n * @param encoding encoding to select\n * @category Debugging\n */\nexport async function setTargetTrackEncoding(\n trackId: string,\n encoding: TrackEncoding,\n) {\n await RNFishjamClientModule.setTargetTrackEncoding(trackId, encoding);\n}\n\n/**\n * Function that changes level of debugging logs in WebRTC.\n * @param severity to use when displaying logs\n * @returns a promise that is resolved when debug severity is changed\n * @category Debugging\n */\nexport function changeWebRTCLoggingSeverity(\n severity: LoggingSeverity,\n): Promise<void> {\n return RNFishjamClientModule.changeWebRTCLoggingSeverity(severity);\n}\n"]}
1
+ {"version":3,"file":"webRTC.js","sourceRoot":"","sources":["../../src/common/webRTC.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,QAAuB;IAEvB,MAAM,qBAAqB,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { TrackEncoding } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * sets track encoding that server should send to the client library.\n * The encoding will be sent whenever it is available. If chooses encoding is\n * temporarily unavailable, some other encoding will be sent until choose encoding\n * becomes active again.\n *\n * @param trackId id of a track which encoding you want to select\n * @param encoding encoding to select\n * @category Debugging\n */\nexport async function setTargetTrackEncoding(\n trackId: string,\n encoding: TrackEncoding,\n) {\n await RNFishjamClientModule.setTargetTrackEncoding(trackId, encoding);\n}\n"]}
@@ -14,7 +14,7 @@ export type VideoRendererProps = {
14
14
  style?: ViewStyle;
15
15
  };
16
16
  /**
17
- * Render video track received from {@link useParticipants} hook
17
+ * Render video track received from {@link usePeers} hook
18
18
  * @category Components
19
19
  */
20
20
  export declare const VideoRendererView: React.ForwardRefExoticComponent<VideoRendererProps & React.RefAttributes<React.ComponentType<VideoRendererProps>>>;
@@ -2,7 +2,7 @@ import { requireNativeViewManager } from 'expo-modules-core';
2
2
  import * as React from 'react';
3
3
  const NativeView = requireNativeViewManager('VideoRendererViewModule');
4
4
  /**
5
- * Render video track received from {@link useParticipants} hook
5
+ * Render video track received from {@link usePeers} hook
6
6
  * @category Components
7
7
  */
8
8
  export const VideoRendererView = React.forwardRef((props, ref) => (
@@ -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;AAkB/B,MAAM,UAAU,GACd,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AAEtD;;;GAGG;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';\n\nexport type VideoRendererProps = {\n /**\n * id of the video track which you want to render.\n */\n trackId: string;\n /**\n * Video layout inside of the component\n * @default `FILL`\n */\n videoLayout?: VideoLayout;\n style?: ViewStyle;\n};\n\nconst NativeView: React.ComponentType<VideoRendererProps> =\n requireNativeViewManager('VideoRendererViewModule');\n\n/**\n * Render video track received from {@link useParticipants} hook\n * @category Components\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
+ {"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;AAkB/B,MAAM,UAAU,GACd,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AAEtD;;;GAGG;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';\n\nexport type VideoRendererProps = {\n /**\n * id of the video track which you want to render.\n */\n trackId: string;\n /**\n * Video layout inside of the component\n * @default `FILL`\n */\n videoLayout?: VideoLayout;\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 * @category Components\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"]}
@@ -0,0 +1,9 @@
1
+ export type LoggingSeverity = 'verbose' | 'info' | 'warning' | 'error' | 'none';
2
+ /**
3
+ * Function that changes level of debugging logs in WebRTC.
4
+ * @param severity to use when displaying logs
5
+ * @returns a promise that is resolved when debug severity is changed
6
+ * @category Debugging
7
+ */
8
+ export declare function changeWebRTCLoggingSeverity(severity: LoggingSeverity): Promise<void>;
9
+ //# sourceMappingURL=webRTC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webRTC.d.ts","sourceRoot":"","sources":["../../../src/debug/common/webRTC.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,11 @@
1
+ import RNFishjamClientModule from '../../RNFishjamClientModule';
2
+ /**
3
+ * Function that changes level of debugging logs in WebRTC.
4
+ * @param severity to use when displaying logs
5
+ * @returns a promise that is resolved when debug severity is changed
6
+ * @category Debugging
7
+ */
8
+ export function changeWebRTCLoggingSeverity(severity) {
9
+ return RNFishjamClientModule.changeWebRTCLoggingSeverity(severity);
10
+ }
11
+ //# sourceMappingURL=webRTC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webRTC.js","sourceRoot":"","sources":["../../../src/debug/common/webRTC.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAIhE;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAyB;IAEzB,OAAO,qBAAqB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC","sourcesContent":["import RNFishjamClientModule from '../../RNFishjamClientModule';\n\nexport type LoggingSeverity = 'verbose' | 'info' | 'warning' | 'error' | 'none';\n\n/**\n * Function that changes level of debugging logs in WebRTC.\n * @param severity to use when displaying logs\n * @returns a promise that is resolved when debug severity is changed\n * @category Debugging\n */\nexport function changeWebRTCLoggingSeverity(\n severity: LoggingSeverity,\n): Promise<void> {\n return RNFishjamClientModule.changeWebRTCLoggingSeverity(severity);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export { useRTCStatistics } from './stats/useRTCStatistics';
2
+ export type { LoggingSeverity } from './common/webRTC';
3
+ export { changeWebRTCLoggingSeverity } from './common/webRTC';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/debug/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useRTCStatistics } from './stats/useRTCStatistics';
2
+ export { changeWebRTCLoggingSeverity } from './common/webRTC';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/debug/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { useRTCStatistics } from './stats/useRTCStatistics';\n\nexport type { LoggingSeverity } from './common/webRTC';\nexport { changeWebRTCLoggingSeverity } from './common/webRTC';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/debug/stats/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B,EAAE,0BAA0B,CAAC;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE/D,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/debug/stats/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * A record of the total time, in seconds,\n * that this stream has spent in each quality limitation state.\n * none: The resolution and/or framerate is not limited.\n * bandwidth: The resolution and/or framerate is primarily limited due to\n * congestion cues during bandwidth estimation.\n * Typical, congestion control algorithms use inter-arrival time,\n * round-trip time, packet or other congestion cues to perform bandwidth estimation.\n * cpu: The resolution and/or framerate is primarily limited due to CPU load.\n * other: The resolution and/or framerate is primarily limited\n * for a reason other than the above.\n */\nexport type QualityLimitationDurations = {\n bandwidth: number;\n cpu: number;\n none: number;\n other: number;\n};\n\nexport type RTCOutboundStats = {\n 'kind': string;\n 'rid': string;\n 'bytesSent': number;\n 'targetBitrate': number;\n 'packetsSent': number;\n 'framesEncoded': number;\n 'framesPerSecond': number;\n 'frameWidth': number;\n 'frameHeight': number;\n 'qualityLimitationDurations': QualityLimitationDurations;\n 'bytesSent/s': number;\n 'packetsSent/s': number;\n 'framesEncoded/s': number;\n};\n\nexport type RTCInboundStats = {\n 'kind': number;\n 'jitter': number;\n 'packetsLost': number;\n 'packetsReceived': number;\n 'bytesReceived': number;\n 'framesReceived': number;\n 'frameWidth': number;\n 'frameHeight': number;\n 'framesPerSecond': number;\n 'framesDropped': number;\n 'packetsLost/s': number;\n 'packetsReceived/s': number;\n 'bytesReceived/s': number;\n 'framesReceived/s': number;\n 'framesDropped/s': number;\n};\n\nexport type RTCTrackStats = RTCOutboundStats | RTCInboundStats;\n\nexport type RTCStats = { [key: string]: RTCTrackStats };\n"]}
@@ -0,0 +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;;EAuFvD"}
@@ -1,6 +1,6 @@
1
1
  import { takeRight } from 'lodash';
2
2
  import { useCallback, useEffect, useState } from 'react';
3
- import RNFishjamClientModule from '../RNFishjamClientModule';
3
+ import RNFishjamClientModule from '../../RNFishjamClientModule';
4
4
  /**
5
5
  * This hook provides access to current rtc statistics data.
6
6
  * @category Debugging
@@ -0,0 +1 @@
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 (statistics: ReadonlyArray<RTCStats>, stats: Readonly<RTCStats>) => {\n Object.keys(stats).forEach((obj) => {\n if (obj.includes('Inbound')) {\n const rtcStats = stats[obj] as RTCInboundStats;\n\n if (\n statistics.length > 0 &&\n Object.keys(statistics[statistics.length - 1]).includes(obj)\n ) {\n const prevRtcStats = statistics[statistics.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 stats;\n }\n // Outbound\n const rtcStats = stats[obj] as RTCOutboundStats;\n\n if (\n statistics.length > 0 &&\n Object.keys(statistics[statistics.length - 1]).includes(obj)\n ) {\n const prevRtcStats = statistics[statistics.length - 1][\n obj\n ] 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 stats;\n });\n return stats;\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"]}
@@ -15,6 +15,23 @@ type CameraConfigBase = {
15
15
  * @default `VGA_169`
16
16
  */
17
17
  quality?: VideoQuality;
18
+ /**
19
+ * whether to flip the dimensions of the video, that is whether to film in vertical orientation.
20
+ * This basically switches width with height and is only used to select closes capture format.
21
+ *
22
+ * To record horizontal video your phone orientation must be in landscape and your app must support this orientation.
23
+ *
24
+ * Platform specific capture formats:
25
+ * @see iOS: https://developer.apple.com/documentation/avfoundation/avcapturedevice/format
26
+ * @see Android: https://github.com/webrtc-sdk/webrtc/blob/cdc3bba5aa38910a55428b919ba45aceac1ad9ad/sdk/android/api/org/webrtc/CameraEnumerationAndroid.java#L50
27
+ *
28
+ * WebRTC device orientation handling:
29
+ * @see iOS: https://github.com/webrtc-sdk/webrtc/blob/cdc3bba5aa38910a55428b919ba45aceac1ad9ad/sdk/objc/components/capturer/RTCCameraVideoCapturer.m#L285
30
+ * @see Android: https://github.com/pristineio/webrtc-mirror/blob/7a5bcdffaab90a05bc1146b2b1ea71c004e54d71/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java#L347
31
+ *
32
+ * @default `true`
33
+ */
34
+ flipDimensions?: boolean;
18
35
  /**
19
36
  * whether the camera track is initially enabled, you can toggle it on/off later with toggleCamera method
20
37
  * @default `true`
@@ -1 +1 @@
1
- {"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../src/hooks/useCamera.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,KAAK,EACL,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,CAAC;AAEZ,KAAK,gBAAgB,GAAG;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAI5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IACzD;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,GAAG,CACE;IAAE,eAAe,CAAC,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAChD,CAAC;AAuCJ,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,oBAAoB,CAOtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS;IAsFrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAGH,oCAAoC;;IAEpC;;;;OAIG;6BArFY,QAAQ,CAAC,YAAY,CAAC;IAuFrC;;;;OAIG,0BAhEc,QAAQ;IAkEzB;;;;OAIG;yCAvDc,aAAa;IAyD9B;;;;;OAKG;+CArDc,aAAa,aAAa,cAAc;IAuDzD;;;;;;;OAOG;wCA9Ee,cAAc;EAiFnC"}
1
+ {"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../src/hooks/useCamera.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,KAAK,EACL,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,CAAC;AAEZ,KAAK,gBAAgB,GAAG;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAI5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IACzD;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,GAAG,CACE;IAAE,eAAe,CAAC,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAChD,CAAC;AAuCJ,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,oBAAoB,CAOtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS;IAsFrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAGH,oCAAoC;;IAEpC;;;;OAIG;6BArFY,QAAQ,CAAC,YAAY,CAAC;IAuFrC;;;;OAIG,0BAhEc,QAAQ;IAkEzB;;;;OAIG;yCAvDc,aAAa;IAyD9B;;;;;OAKG;+CArDc,aAAa,aAAa,cAAc;IAuDzD;;;;;;;OAOG;wCA9Ee,cAAc;EAiFnC"}
@@ -25,7 +25,7 @@ function maxBandwidthConfig(maxBandwidth) {
25
25
  }
26
26
  function simulcastConfig(simulcastEnabled) {
27
27
  // iOS has a limit of 3 hardware encoders
28
- // 3 simulcast layers + 1 screencast layer = 4, which is too much
28
+ // 3 simulcast layers + 1 screen share layer = 4, which is too much
29
29
  // so we limit simulcast layers to 2
30
30
  if (simulcastEnabled) {
31
31
  return Platform.select({