@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
@@ -8,7 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
8
8
  import com.fishjamcloud.client.FishjamClient
9
9
  import com.fishjamcloud.client.FishjamClientListener
10
10
  import com.fishjamcloud.client.media.LocalAudioTrack
11
- import com.fishjamcloud.client.media.LocalScreencastTrack
11
+ import com.fishjamcloud.client.media.LocalScreenShareTrack
12
12
  import com.fishjamcloud.client.media.LocalVideoTrack
13
13
  import com.fishjamcloud.client.media.RemoteAudioTrack
14
14
  import com.fishjamcloud.client.media.RemoteVideoTrack
@@ -36,24 +36,26 @@ import org.webrtc.Logging
36
36
  class RNFishjamClient(
37
37
  val sendEvent: (name: String, data: Map<String, Any?>) -> Unit
38
38
  ) : FishjamClientListener {
39
- private val SCREENCAST_REQUEST = 1
39
+ private val SCREENSHARE_REQUEST = 1
40
40
 
41
41
  var isMicrophoneOn = false
42
42
  var isCameraOn = false
43
- var isScreencastOn = false
43
+ var isScreenShareOn = false
44
44
  var isConnected = false
45
45
 
46
+ private var isCameraInitialized = false
47
+
46
48
  private var connectPromise: Promise? = null
47
- private var screencastPermissionPromise: Promise? = null
49
+ private var screenSharePermissionPromise: Promise? = null
48
50
 
49
51
  var videoSimulcastConfig: SimulcastConfig = SimulcastConfig()
50
52
  private var localUserMetadata: Metadata = mutableMapOf()
51
53
 
52
- var screencastQuality: String? = null
53
- var screencastSimulcastConfig: SimulcastConfig = SimulcastConfig()
54
- var screencastMaxBandwidth: TrackBandwidthLimit = TrackBandwidthLimit.BandwidthLimit(0)
54
+ var screenShareQuality: String? = null
55
+ var screenShareSimulcastConfig: SimulcastConfig = SimulcastConfig()
56
+ var screenShareMaxBandwidth: TrackBandwidthLimit = TrackBandwidthLimit.BandwidthLimit(0)
55
57
 
56
- var screencastMetadata: Map<String, Any> = mutableMapOf()
58
+ var screenShareMetadata: Map<String, Any> = mutableMapOf()
57
59
 
58
60
  private var mediaProjectionIntent: Intent? = null
59
61
 
@@ -103,16 +105,16 @@ class RNFishjamClient(
103
105
  data: Intent?
104
106
  ) {
105
107
  coroutineScope.launch(Dispatchers.Main) {
106
- if (requestCode != SCREENCAST_REQUEST) return@launch
108
+ if (requestCode != SCREENSHARE_REQUEST) return@launch
107
109
  if (resultCode != Activity.RESULT_OK) {
108
- screencastPermissionPromise?.resolve("denied")
109
- screencastPermissionPromise = null
110
+ screenSharePermissionPromise?.resolve("denied")
111
+ screenSharePermissionPromise = null
110
112
  return@launch
111
113
  }
112
114
 
113
115
  mediaProjectionIntent = data
114
- screencastPermissionPromise?.resolve("granted")
115
- screencastPermissionPromise = null
116
+ screenSharePermissionPromise?.resolve("granted")
117
+ screenSharePermissionPromise = null
116
118
  }
117
119
  }
118
120
 
@@ -167,7 +169,7 @@ class RNFishjamClient(
167
169
  }
168
170
  videoParameters =
169
171
  videoParameters.copy(
170
- dimensions = if (createOptions.flipVideo) videoParameters.dimensions.flip() else videoParameters.dimensions,
172
+ dimensions = if (createOptions.flipDimensions) videoParameters.dimensions.flip() else videoParameters.dimensions,
171
173
  simulcastConfig = getSimulcastConfigFromOptions(createOptions.simulcastConfig),
172
174
  maxBitrate = videoMaxBandwidth
173
175
  )
@@ -190,12 +192,12 @@ class RNFishjamClient(
190
192
  .filterIsInstance<LocalAudioTrack>()
191
193
  .firstOrNull()
192
194
 
193
- private fun getLocalScreencastTrack(): LocalScreencastTrack? =
195
+ private fun getLocalScreenShareTrack(): LocalScreenShareTrack? =
194
196
  fishjamClient
195
197
  .getLocalEndpoint()
196
198
  .tracks
197
199
  .values
198
- .filterIsInstance<LocalScreencastTrack>()
200
+ .filterIsInstance<LocalScreenShareTrack>()
199
201
  .firstOrNull()
200
202
 
201
203
  private fun ensureConnected() {
@@ -216,9 +218,9 @@ class RNFishjamClient(
216
218
  }
217
219
  }
218
220
 
219
- private fun ensureScreencastTrack() {
220
- if (getLocalScreencastTrack() == null) {
221
- throw NoScreencastTrackError()
221
+ private fun ensureScreenShareTrack() {
222
+ if (getLocalScreenShareTrack() == null) {
223
+ throw NoScreenShareTrackError()
222
224
  }
223
225
  }
224
226
 
@@ -253,20 +255,26 @@ class RNFishjamClient(
253
255
  }
254
256
 
255
257
  fun leaveRoom() {
256
- if (isScreencastOn) {
257
- stopScreencast()
258
+ if (isScreenShareOn) {
259
+ stopScreenShare()
258
260
  }
259
261
  isMicrophoneOn = false
260
262
  isCameraOn = false
261
- isScreencastOn = false
263
+ isScreenShareOn = false
262
264
  isConnected = false
265
+ isCameraInitialized = false
263
266
  fishjamClient.leave()
264
267
  }
265
268
 
266
269
  suspend fun startCamera(config: CameraConfig) {
270
+ if (isCameraInitialized) {
271
+ emitWarning("Camera already started. You may only call startCamera once before leaveRoom is called.")
272
+ return
273
+ }
267
274
  val cameraTrack = createCameraTrack(config)
268
275
  setCameraTrackState(cameraTrack, config.cameraEnabled)
269
276
  emitEndpoints()
277
+ isCameraInitialized = true
270
278
  }
271
279
 
272
280
  private suspend fun createCameraTrack(config: CameraConfig): LocalVideoTrack {
@@ -338,9 +346,9 @@ class RNFishjamClient(
338
346
  return isMicrophoneOn
339
347
  }
340
348
 
341
- fun handleScreencastPermission(promise: Promise) {
342
- screencastPermissionPromise = promise
343
- if (!isScreencastOn) {
349
+ fun handleScreenSharePermission(promise: Promise) {
350
+ screenSharePermissionPromise = promise
351
+ if (!isScreenShareOn) {
344
352
  ensureConnected()
345
353
  val currentActivity = appContext?.currentActivity ?: throw ActivityNotFoundException()
346
354
 
@@ -349,25 +357,25 @@ class RNFishjamClient(
349
357
  AppCompatActivity.MEDIA_PROJECTION_SERVICE
350
358
  ) as MediaProjectionManager
351
359
  val intent = mediaProjectionManager.createScreenCaptureIntent()
352
- currentActivity.startActivityForResult(intent, SCREENCAST_REQUEST)
360
+ currentActivity.startActivityForResult(intent, SCREENSHARE_REQUEST)
353
361
  }
354
362
  }
355
363
 
356
- suspend fun toggleScreencast(screencastOptions: ScreencastOptions) {
357
- this.screencastMetadata = screencastOptions.screencastMetadata
358
- this.screencastQuality = screencastOptions.quality
359
- this.screencastSimulcastConfig =
360
- getSimulcastConfigFromOptions(screencastOptions.simulcastConfig)
361
- this.screencastMaxBandwidth =
364
+ suspend fun toggleScreenShare(screenShareOptions: ScreenShareOptions) {
365
+ this.screenShareMetadata = screenShareOptions.screenShareMetadata
366
+ this.screenShareQuality = screenShareOptions.quality
367
+ this.screenShareSimulcastConfig =
368
+ getSimulcastConfigFromOptions(screenShareOptions.simulcastConfig)
369
+ this.screenShareMaxBandwidth =
362
370
  getMaxBandwidthFromOptions(
363
- screencastOptions.maxBandwidthMap,
364
- screencastOptions.maxBandwidthInt
371
+ screenShareOptions.maxBandwidthMap,
372
+ screenShareOptions.maxBandwidthInt
365
373
  )
366
- if (!isScreencastOn) {
374
+ if (!isScreenShareOn) {
367
375
  ensureConnected()
368
- startScreencast()
376
+ startScreenShare()
369
377
  } else {
370
- stopScreencast()
378
+ stopScreenShare()
371
379
  }
372
380
  }
373
381
 
@@ -405,7 +413,7 @@ class RNFishjamClient(
405
413
  "metadata" to track.metadata
406
414
  )
407
415
 
408
- is LocalScreencastTrack ->
416
+ is LocalScreenShareTrack ->
409
417
  mapOf(
410
418
  "id" to track.id(),
411
419
  "type" to "Video",
@@ -470,9 +478,9 @@ class RNFishjamClient(
470
478
  }
471
479
  }
472
480
 
473
- fun updateLocalScreencastTrackMetadata(metadata: Metadata) {
474
- ensureScreencastTrack()
475
- getLocalScreencastTrack()?.let {
481
+ fun updateLocalScreenShareTrackMetadata(metadata: Metadata) {
482
+ ensureScreenShareTrack()
483
+ getLocalScreenShareTrack()?.let {
476
484
  updateTrackMetadata(it.id(), metadata)
477
485
  }
478
486
  }
@@ -523,27 +531,27 @@ class RNFishjamClient(
523
531
  )
524
532
  }
525
533
 
526
- fun toggleScreencastTrackEncoding(encoding: String): Map<String, Any> {
527
- ensureScreencastTrack()
528
- getLocalScreencastTrack()?.let {
529
- screencastSimulcastConfig = toggleTrackEncoding(encoding, it.id(), screencastSimulcastConfig)
534
+ fun toggleScreenShareTrackEncoding(encoding: String): Map<String, Any> {
535
+ ensureScreenShareTrack()
536
+ getLocalScreenShareTrack()?.let {
537
+ screenShareSimulcastConfig = toggleTrackEncoding(encoding, it.id(), screenShareSimulcastConfig)
530
538
  }
531
- return getSimulcastConfigAsRNMap(screencastSimulcastConfig)
539
+ return getSimulcastConfigAsRNMap(screenShareSimulcastConfig)
532
540
  }
533
541
 
534
- fun setScreencastTrackBandwidth(bandwidth: Int) {
535
- ensureScreencastTrack()
536
- getLocalScreencastTrack()?.let {
542
+ fun setScreenShareTrackBandwidth(bandwidth: Int) {
543
+ ensureScreenShareTrack()
544
+ getLocalScreenShareTrack()?.let {
537
545
  fishjamClient.setTrackBandwidth(it.id(), TrackBandwidthLimit.BandwidthLimit(bandwidth))
538
546
  }
539
547
  }
540
548
 
541
- fun setScreencastTrackEncodingBandwidth(
549
+ fun setScreenShareTrackEncodingBandwidth(
542
550
  encoding: String,
543
551
  bandwidth: Int
544
552
  ) {
545
- ensureScreencastTrack()
546
- getLocalScreencastTrack()?.let {
553
+ ensureScreenShareTrack()
554
+ getLocalScreenShareTrack()?.let {
547
555
  fishjamClient.setEncodingBandwidth(
548
556
  it.id(),
549
557
  encoding,
@@ -661,25 +669,25 @@ class RNFishjamClient(
661
669
  return newMap
662
670
  }
663
671
 
664
- private suspend fun startScreencast() {
665
- val videoParameters = getScreencastVideoParameters()
672
+ private suspend fun startScreenShare() {
673
+ val videoParameters = getScreenShareVideoParameters()
666
674
  if (mediaProjectionIntent == null) {
667
- throw MissingScreencastPermission()
675
+ throw MissingScreenSharePermission()
668
676
  }
669
- fishjamClient.createScreencastTrack(
677
+ fishjamClient.createScreenShareTrack(
670
678
  mediaProjectionIntent!!,
671
679
  videoParameters,
672
- screencastMetadata
680
+ screenShareMetadata
673
681
  )
674
682
  mediaProjectionIntent = null
675
683
 
676
- setScreencastTrackState(true)
684
+ setScreenShareTrackState(true)
677
685
  emitEndpoints()
678
686
  }
679
687
 
680
- private fun getScreencastVideoParameters(): VideoParameters {
688
+ private fun getScreenShareVideoParameters(): VideoParameters {
681
689
  val videoParameters =
682
- when (screencastQuality) {
690
+ when (screenShareQuality) {
683
691
  "VGA" -> VideoParameters.presetScreenShareVGA
684
692
  "HD5" -> VideoParameters.presetScreenShareHD5
685
693
  "HD15" -> VideoParameters.presetScreenShareHD15
@@ -690,28 +698,28 @@ class RNFishjamClient(
690
698
  val dimensions = videoParameters.dimensions.flip()
691
699
  return videoParameters.copy(
692
700
  dimensions = dimensions,
693
- simulcastConfig = screencastSimulcastConfig,
694
- maxBitrate = screencastMaxBandwidth
701
+ simulcastConfig = screenShareSimulcastConfig,
702
+ maxBitrate = screenShareMaxBandwidth
695
703
  )
696
704
  }
697
705
 
698
- private fun setScreencastTrackState(isEnabled: Boolean) {
699
- isScreencastOn = isEnabled
700
- val eventName = EmitableEvents.IsScreencastOn
706
+ private fun setScreenShareTrackState(isEnabled: Boolean) {
707
+ isScreenShareOn = isEnabled
708
+ val eventName = EmitableEvents.IsScreenShareOn
701
709
  emitEvent(eventName, mapOf(eventName to isEnabled))
702
710
  }
703
711
 
704
- private fun stopScreencast() {
705
- ensureScreencastTrack()
712
+ private fun stopScreenShare() {
713
+ ensureScreenShareTrack()
706
714
  coroutineScope.launch {
707
- val screencastTrack =
715
+ val screenShareTrack =
708
716
  fishjamClient.getLocalEndpoint().tracks.values.first { track ->
709
- track is LocalScreencastTrack
710
- } as? LocalScreencastTrack
711
- if (screencastTrack != null) {
712
- fishjamClient.removeTrack(screencastTrack.id())
717
+ track is LocalScreenShareTrack
718
+ } as? LocalScreenShareTrack
719
+ if (screenShareTrack != null) {
720
+ fishjamClient.removeTrack(screenShareTrack.id())
713
721
  }
714
- setScreencastTrackState(false)
722
+ setScreenShareTrackState(false)
715
723
  emitEndpoints()
716
724
  }
717
725
  }
@@ -723,6 +731,11 @@ class RNFishjamClient(
723
731
  sendEvent(eventName, data)
724
732
  }
725
733
 
734
+ private fun emitWarning(warning: String) {
735
+ val eventName = EmitableEvents.Warning
736
+ emitEvent(eventName, mapOf("message" to warning))
737
+ }
738
+
726
739
  private fun emitEndpoints() {
727
740
  val eventName = EmitableEvents.PeersUpdate
728
741
  val map = mapOf(eventName to getPeers())
@@ -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()
@@ -109,7 +109,7 @@ class RNFishjamClientModule : Module() {
109
109
  Events(
110
110
  "IsCameraOn",
111
111
  "IsMicrophoneOn",
112
- "IsScreencastOn",
112
+ "IsScreenShareOn",
113
113
  "SimulcastConfigUpdate",
114
114
  "PeersUpdate",
115
115
  "AudioDeviceUpdate",
@@ -117,7 +117,8 @@ class RNFishjamClientModule : Module() {
117
117
  "BandwidthEstimation",
118
118
  "ReconnectionRetriesLimitReached",
119
119
  "ReconnectionStarted",
120
- "Reconnected"
120
+ "Reconnected",
121
+ "Warning"
121
122
  )
122
123
 
123
124
  val rnFishjamClient =
@@ -199,15 +200,15 @@ class RNFishjamClientModule : Module() {
199
200
  }
200
201
  }
201
202
 
202
- AsyncFunction("handleScreencastPermission") { promise: Promise ->
203
+ AsyncFunction("handleScreenSharePermission") { promise: Promise ->
203
204
  CoroutineScope(Dispatchers.Main).launch {
204
- rnFishjamClient.handleScreencastPermission(promise)
205
+ rnFishjamClient.handleScreenSharePermission(promise)
205
206
  }
206
207
  }
207
208
 
208
- AsyncFunction("toggleScreencast") Coroutine { screencastOptions: ScreencastOptions ->
209
+ AsyncFunction("toggleScreenShare") Coroutine { screenShareOptions: ScreenShareOptions ->
209
210
  withContext(Dispatchers.Main) {
210
- rnFishjamClient.toggleScreencast(screencastOptions)
211
+ rnFishjamClient.toggleScreenShare(screenShareOptions)
211
212
  }
212
213
  }
213
214
 
@@ -215,8 +216,8 @@ class RNFishjamClientModule : Module() {
215
216
  return@Property rnFishjamClient.getCaptureDevices()
216
217
  }
217
218
 
218
- Property("isScreencastOn") {
219
- return@Property rnFishjamClient.isScreencastOn
219
+ Property("isScreenShareOn") {
220
+ return@Property rnFishjamClient.isScreenShareOn
220
221
  }
221
222
 
222
223
  AsyncFunction("getPeers") Coroutine { ->
@@ -243,9 +244,9 @@ class RNFishjamClientModule : Module() {
243
244
  }
244
245
  }
245
246
 
246
- AsyncFunction("updateScreencastTrackMetadata") Coroutine { metadata: Map<String, Any> ->
247
+ AsyncFunction("updateScreenShareTrackMetadata") Coroutine { metadata: Map<String, Any> ->
247
248
  withContext(Dispatchers.Main) {
248
- rnFishjamClient.updateLocalScreencastTrackMetadata(metadata)
249
+ rnFishjamClient.updateLocalScreenShareTrackMetadata(metadata)
249
250
  }
250
251
  }
251
252
 
@@ -261,21 +262,21 @@ class RNFishjamClientModule : Module() {
261
262
  rnFishjamClient.stopAudioSwitcher()
262
263
  }
263
264
 
264
- AsyncFunction("toggleScreencastTrackEncoding") Coroutine { encoding: String ->
265
+ AsyncFunction("toggleScreenShareTrackEncoding") Coroutine { encoding: String ->
265
266
  withContext(Dispatchers.Main) {
266
- rnFishjamClient.toggleScreencastTrackEncoding(encoding)
267
+ rnFishjamClient.toggleScreenShareTrackEncoding(encoding)
267
268
  }
268
269
  }
269
270
 
270
- AsyncFunction("setScreencastTrackBandwidth") Coroutine { bandwidth: Int ->
271
+ AsyncFunction("setScreenShareTrackBandwidth") Coroutine { bandwidth: Int ->
271
272
  withContext(Dispatchers.Main) {
272
- rnFishjamClient.setScreencastTrackBandwidth(bandwidth)
273
+ rnFishjamClient.setScreenShareTrackBandwidth(bandwidth)
273
274
  }
274
275
  }
275
276
 
276
- AsyncFunction("setScreencastTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
277
+ AsyncFunction("setScreenShareTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
277
278
  withContext(Dispatchers.Main) {
278
- rnFishjamClient.setScreencastTrackEncodingBandwidth(encoding, bandwidth)
279
+ rnFishjamClient.setScreenShareTrackEncodingBandwidth(encoding, bandwidth)
279
280
  }
280
281
  }
281
282
 
@@ -1,9 +1,10 @@
1
+ import { EventEmitter } from 'expo-modules-core';
1
2
  import { NativeModule } from 'react-native';
2
3
  import type { RTCStats } from './stats/types';
3
4
  import type { ForegroundServiceOptions, SimulcastConfig } from './types';
4
5
  import type { CameraConfigInternal, Camera } from './hooks/useCamera';
5
6
  import type { Participant } from './hooks/useParticipants';
6
- import type { ScreencastOptionsInternal } from './hooks/useScreencast';
7
+ import type { ScreenShareOptionsInternal } from './hooks/useScreenShare';
7
8
  import type { ConnectionConfig } from './common/client';
8
9
  type Metadata = {
9
10
  [key: string]: any;
@@ -19,22 +20,22 @@ type RNFishjamClient = {
19
20
  flipCamera: () => Promise<void>;
20
21
  switchCamera: (cameraId: string) => Promise<void>;
21
22
  cameras: ReadonlyArray<Camera>;
22
- handleScreencastPermission: () => Promise<'granted' | 'denied'>;
23
- toggleScreencast: (screencastOptions: Partial<ScreencastOptionsInternal>) => Promise<void>;
24
- isScreencastOn: boolean;
23
+ handleScreenSharePermission: () => Promise<'granted' | 'denied'>;
24
+ toggleScreenShare: (screenShareOptions: Partial<ScreenShareOptionsInternal>) => Promise<void>;
25
+ isScreenShareOn: boolean;
25
26
  getPeers: <PeerMetadataType extends Metadata>() => Promise<Participant<PeerMetadataType>[]>;
26
27
  updatePeerMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
27
28
  updateVideoTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
28
29
  updateAudioTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
29
- updateScreencastTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
30
+ updateScreenShareTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
30
31
  setOutputAudioDevice: (audioDevice: string) => Promise<void>;
31
32
  startAudioSwitcher: () => Promise<void>;
32
33
  stopAudioSwitcher: () => Promise<void>;
33
34
  selectAudioSessionMode: (sessionMode: string) => Promise<void>;
34
35
  showAudioRoutePicker: () => Promise<void>;
35
- toggleScreencastTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
36
- setScreencastTrackBandwidth: (bandwidth: number) => Promise<void>;
37
- setScreencastTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
36
+ toggleScreenShareTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
37
+ setScreenShareTrackBandwidth: (bandwidth: number) => Promise<void>;
38
+ setScreenShareTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
38
39
  setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;
39
40
  toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
40
41
  setVideoTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
@@ -44,6 +45,7 @@ type RNFishjamClient = {
44
45
  startForegroundService: (options: ForegroundServiceOptions) => void;
45
46
  stopForegroundService: () => void;
46
47
  };
48
+ export declare const nativeModuleEventEmitter: EventEmitter;
47
49
  declare const _default: RNFishjamClient & NativeModule;
48
50
  export default _default;
49
51
  //# sourceMappingURL=RNFishjamClientModule.d.ts.map
@@ -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,4 +1,5 @@
1
- import { requireNativeModule } from 'expo-modules-core';
1
+ import { EventEmitter, requireNativeModule } from 'expo-modules-core';
2
2
  const nativeModule = requireNativeModule('RNFishjamClient');
3
+ export const nativeModuleEventEmitter = new EventEmitter(nativeModule);
3
4
  export default nativeModule;
4
5
  //# sourceMappingURL=RNFishjamClientModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAwExD,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAE5D,eAAe,YAA8C,CAAC","sourcesContent":["import { 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');\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;AA0EtE,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 { ScreenShareOptionsInternal } from './hooks/useScreenShare';\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 handleScreenSharePermission: () => Promise<'granted' | 'denied'>;\n toggleScreenShare: (\n screenShareOptions: Partial<ScreenShareOptionsInternal>,\n ) => Promise<void>;\n isScreenShareOn: 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 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"]}
@@ -15,12 +15,15 @@ export type ConnectionConfig = {
15
15
  };
16
16
  };
17
17
  /**
18
- *
19
18
  * @param url fishjam Url
20
- * @param participantToken
21
- * @param participantMetadata
22
- * @param config
19
+ * @param participantToken token received from server (or Room Manager)
20
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
21
+ * @param config additional connection configuration
22
+ * @category Connection
23
+ */
24
+ export declare function joinRoom<ParticipantMetadata extends GenericMetadata = GenericMetadata>(url: string, participantToken: string, participantMetadata?: ParticipantMetadata, config?: ConnectionConfig): Promise<void>;
25
+ /**
26
+ * @category Connection
23
27
  */
24
- export declare function joinRoom<ParticipantMetadata extends GenericMetadata = GenericMetadata>(url: string, participantToken: string, participantMetadata: ParticipantMetadata, config?: ConnectionConfig): Promise<void>;
25
28
  export declare function leaveRoom(): Promise<void>;
26
29
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;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;AAED,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,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAE7D,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,MAAM,CAAC,EAAE,gBAAgB,iBAQ1B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
@@ -1,14 +1,17 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
- *
4
3
  * @param url fishjam Url
5
- * @param participantToken
6
- * @param participantMetadata
7
- * @param config
4
+ * @param participantToken token received from server (or Room Manager)
5
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
6
+ * @param config additional connection configuration
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, participantToken, participantMetadata, config) {
10
+ await RNFishjamClientModule.joinRoom(url, participantToken, participantMetadata ?? {}, config ?? {});
11
11
  }
12
+ /**
13
+ * @category Connection
14
+ */
12
15
  export async function leaveRoom() {
13
16
  await RNFishjamClientModule.leaveRoom();
14
17
  }
@@ -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;AAED,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 *\n * @param url fishjam Url\n * @param participantToken\n * @param participantMetadata\n * @param config\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\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,gBAAwB,EACxB,mBAAyC,EACzC,MAAyB;IAEzB,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,gBAAgB,EAChB,mBAAmB,IAAI,EAAE,EACzB,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 participantToken token received from server (or Room Manager)\n * @param participantMetadata string indexed record with metadata, that will be available to all other participants\n * @param config additional connection configuration\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,7 +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 participants
4
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
5
+ * @category Connection
5
6
  */
6
- export declare function updatePeerMetadata<ParticipantMetadata extends GenericMetadata = GenericMetadata>(metadata: ParticipantMetadata): Promise<void>;
7
+ export declare function updatePeerMetadata<ParticipantMetadata extends GenericMetadata = GenericMetadata>(participantMetadata: ParticipantMetadata): Promise<void>;
7
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;;;GAGG;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,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAC7D,mBAAmB,EAAE,mBAAmB,iBAEzC"}
@@ -1,9 +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 participants
4
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
5
+ * @category Connection
5
6
  */
6
- export async function updatePeerMetadata(metadata) {
7
- await RNFishjamClientModule.updatePeerMetadata(metadata);
7
+ export async function updatePeerMetadata(participantMetadata) {
8
+ await RNFishjamClientModule.updatePeerMetadata(participantMetadata);
8
9
  }
9
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;;;GAGG;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 */\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,mBAAwC;IACxC,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * Updates metadata send to other participants\n * @param participantMetadata string indexed record with metadata, that will be available to all other participants\n * @category Connection\n */\nexport async function updatePeerMetadata<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(participantMetadata: ParticipantMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(participantMetadata);\n}\n"]}