@fishjam-cloud/react-native-client 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +6 -6
  2. package/android/build.gradle +6 -2
  3. package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +4 -2
  4. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +41 -39
  5. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +7 -17
  6. package/build/RNFishjamClientModule.d.ts +24 -8
  7. package/build/RNFishjamClientModule.d.ts.map +1 -1
  8. package/build/RNFishjamClientModule.js +0 -1
  9. package/build/RNFishjamClientModule.js.map +1 -1
  10. package/build/common/client.d.ts +4 -4
  11. package/build/common/client.d.ts.map +1 -1
  12. package/build/common/client.js +4 -4
  13. package/build/common/client.js.map +1 -1
  14. package/build/common/metadata.d.ts +1 -0
  15. package/build/common/metadata.d.ts.map +1 -1
  16. package/build/common/metadata.js +1 -0
  17. package/build/common/metadata.js.map +1 -1
  18. package/build/components/FishjamRoom/index.d.ts +21 -0
  19. package/build/components/FishjamRoom/index.d.ts.map +1 -1
  20. package/build/components/FishjamRoom/index.js +16 -1
  21. package/build/components/FishjamRoom/index.js.map +1 -1
  22. package/build/components/VideoPreviewView.d.ts +7 -3
  23. package/build/components/VideoPreviewView.d.ts.map +1 -1
  24. package/build/components/VideoPreviewView.js +5 -1
  25. package/build/components/VideoPreviewView.js.map +1 -1
  26. package/build/components/VideoRendererView.d.ts +13 -0
  27. package/build/components/VideoRendererView.d.ts.map +1 -1
  28. package/build/components/VideoRendererView.js +13 -0
  29. package/build/components/VideoRendererView.js.map +1 -1
  30. package/build/hooks/internal/useFishjamEvent.d.ts +3 -2
  31. package/build/hooks/internal/useFishjamEvent.d.ts.map +1 -1
  32. package/build/hooks/internal/useFishjamEvent.js +25 -1
  33. package/build/hooks/internal/useFishjamEvent.js.map +1 -1
  34. package/build/hooks/internal/useFishjamEventState.d.ts +2 -2
  35. package/build/hooks/internal/useFishjamEventState.d.ts.map +1 -1
  36. package/build/hooks/internal/useFishjamEventState.js.map +1 -1
  37. package/build/hooks/useAppScreenShare.d.ts +9 -0
  38. package/build/hooks/useAppScreenShare.d.ts.map +1 -1
  39. package/build/hooks/useAppScreenShare.js +9 -7
  40. package/build/hooks/useAppScreenShare.js.map +1 -1
  41. package/build/hooks/useAudioSettings.d.ts +4 -0
  42. package/build/hooks/useAudioSettings.d.ts.map +1 -1
  43. package/build/hooks/useAudioSettings.js.map +1 -1
  44. package/build/hooks/useBandwidthEstimation.d.ts +3 -0
  45. package/build/hooks/useBandwidthEstimation.d.ts.map +1 -1
  46. package/build/hooks/useBandwidthEstimation.js +6 -1
  47. package/build/hooks/useBandwidthEstimation.js.map +1 -1
  48. package/build/hooks/useCamera.d.ts +11 -33
  49. package/build/hooks/useCamera.d.ts.map +1 -1
  50. package/build/hooks/useCamera.js +11 -60
  51. package/build/hooks/useCamera.js.map +1 -1
  52. package/build/hooks/useConnection.d.ts +29 -13
  53. package/build/hooks/useConnection.d.ts.map +1 -1
  54. package/build/hooks/useConnection.js +11 -5
  55. package/build/hooks/useConnection.js.map +1 -1
  56. package/build/hooks/useForegroundService.d.ts +20 -11
  57. package/build/hooks/useForegroundService.d.ts.map +1 -1
  58. package/build/hooks/useForegroundService.js +2 -3
  59. package/build/hooks/useForegroundService.js.map +1 -1
  60. package/build/hooks/useMicrophone.js.map +1 -1
  61. package/build/hooks/usePeerStatus.d.ts +2 -10
  62. package/build/hooks/usePeerStatus.d.ts.map +1 -1
  63. package/build/hooks/usePeerStatus.js +1 -0
  64. package/build/hooks/usePeerStatus.js.map +1 -1
  65. package/build/hooks/usePeers.d.ts +19 -22
  66. package/build/hooks/usePeers.d.ts.map +1 -1
  67. package/build/hooks/usePeers.js +17 -5
  68. package/build/hooks/usePeers.js.map +1 -1
  69. package/build/hooks/useReconnection.d.ts +2 -2
  70. package/build/hooks/useReconnection.d.ts.map +1 -1
  71. package/build/hooks/useReconnection.js +1 -0
  72. package/build/hooks/useReconnection.js.map +1 -1
  73. package/build/hooks/useScreenShare.d.ts +2 -23
  74. package/build/hooks/useScreenShare.d.ts.map +1 -1
  75. package/build/hooks/useScreenShare.js +1 -36
  76. package/build/hooks/useScreenShare.js.map +1 -1
  77. package/build/index.d.ts +4 -6
  78. package/build/index.d.ts.map +1 -1
  79. package/build/index.js +0 -2
  80. package/build/index.js.map +1 -1
  81. package/build/types.d.ts +0 -19
  82. package/build/types.d.ts.map +1 -1
  83. package/build/types.js.map +1 -1
  84. package/build/utils/eventPayloadValidator.d.ts +3 -0
  85. package/build/utils/eventPayloadValidator.d.ts.map +1 -0
  86. package/build/utils/eventPayloadValidator.js +94 -0
  87. package/build/utils/eventPayloadValidator.js.map +1 -0
  88. package/ios/Events.swift +4 -1
  89. package/ios/RNFishjamClient.podspec +1 -1
  90. package/ios/RNFishjamClient.swift +31 -39
  91. package/ios/RNFishjamClientModule.swift +5 -10
  92. package/package.json +18 -9
  93. package/plugin/build/withFishjamIos.js +17 -7
  94. package/build/common/webRTC.d.ts +0 -14
  95. package/build/common/webRTC.d.ts.map +0 -1
  96. package/build/common/webRTC.js +0 -15
  97. package/build/common/webRTC.js.map +0 -1
  98. /package/{LICENSE → LICENSE.txt} +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- <img src="../../.github/images/fishjam-card.png" width="100%">
1
+ <img src="../../.github/images/fishjam-card.png" width="100%" />
2
2
 
3
- # Fishjam Cloud React Native client
3
+ # Fishjam React Native client
4
4
 
5
5
  `@fishjam-cloud/react-native-client` is an easiest way to add video streaming to your React Native app.
6
6
 
@@ -10,9 +10,9 @@ Check out the [installation](https://docs.fishjam.io/react-native/installation)
10
10
 
11
11
  # Documentation
12
12
 
13
- Check out our [documentation](https://docs.fishjam.io/) on how Fishjam Cloud work and how to integrate our service with your app.
13
+ Check out our [documentation](https://docs.fishjam.io/) on how Fishjam work and how to integrate our service with your app.
14
14
 
15
- There is also [API documentation](https://fishjam-cloud.github.io/mobile-client-sdk/modules/_fishjam_cloud_react_native_client.html) available.
15
+ There is also [API documentation](https://docs.fishjam.io/category/api) available.
16
16
 
17
17
  # Examples
18
18
 
@@ -20,9 +20,9 @@ There is simple example app, that allows you to test our service. To run it loca
20
20
 
21
21
  ## License
22
22
 
23
- Licensed under the [Apache License, Version 2.0](LICENSE)
23
+ Licensed under the [Apache License, Version 2.0](./LICENSE.txt)
24
24
 
25
- ## Fishjam Cloud is created by Software Mansion
25
+ ## Fishjam is created by Software Mansion
26
26
 
27
27
  Since 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help you build your next dream product – [Hire us](https://swmansion.com/contact/projects?utm_source=fishjam&utm_medium=mobile-readme).
28
28
 
@@ -1,8 +1,12 @@
1
+ import groovy.json.JsonSlurper
2
+
1
3
  apply plugin: 'com.android.library'
2
4
  apply plugin: 'kotlin-android'
3
5
  apply plugin: 'maven-publish'
4
6
 
5
- def packageVersion = '0.6.0'
7
+ def inputFile = new File("$projectDir/../../../package.json")
8
+ def packageJson = new JsonSlurper().parseText(inputFile.text)
9
+ def packageVersion = packageJson["version"]
6
10
 
7
11
  group = 'io.fishjam.reactnative'
8
12
  version = "${packageVersion}"
@@ -63,6 +67,7 @@ android {
63
67
  versionCode 1
64
68
  versionName "${packageVersion}"
65
69
  }
70
+
66
71
  lintOptions {
67
72
  abortOnError false
68
73
  }
@@ -83,7 +88,6 @@ dependencies {
83
88
  if (findProject(':fishjam-cloud-android-client')) {
84
89
  implementation project(':fishjam-cloud-android-client')
85
90
  } else {
86
- // update version number when releasing
87
91
  implementation "com.github.fishjam-cloud:mobile-client-sdk:${packageVersion}"
88
92
  }
89
93
  implementation 'com.twilio:audioswitch:1.2.0'
@@ -53,12 +53,14 @@ class EmitableEvent private constructor(
53
53
 
54
54
  fun currentCameraChanged(
55
55
  localCamera: LocalCamera?,
56
- isCameraOn: Boolean
56
+ isCameraOn: Boolean,
57
+ isCameraInitialized: Boolean
57
58
  ) = EmitableEvent(
58
59
  EventName.CurrentCameraChanged,
59
60
  mapOf(
60
61
  "currentCamera" to localCamera,
61
- "isCameraOn" to isCameraOn
62
+ "isCameraOn" to isCameraOn,
63
+ "isCameraInitialized" to isCameraInitialized
62
64
  )
63
65
  )
64
66
 
@@ -25,6 +25,7 @@ import com.fishjamcloud.client.models.RTCOutboundStats
25
25
  import com.fishjamcloud.client.models.ReconnectConfig
26
26
  import com.fishjamcloud.client.models.SimulcastConfig
27
27
  import com.fishjamcloud.client.models.TrackBandwidthLimit
28
+ import com.fishjamcloud.client.models.TrackEncoding
28
29
  import com.fishjamcloud.client.models.VideoParameters
29
30
  import com.twilio.audioswitch.AudioDevice
30
31
  import expo.modules.kotlin.AppContext
@@ -54,7 +55,17 @@ class RNFishjamClient(
54
55
  var isScreenShareOn = false
55
56
  var isConnected = false
56
57
 
57
- private var isCameraInitialized = false
58
+ var isCameraInitialized = false
59
+ private set(value) {
60
+ field = value
61
+ emitEvent(
62
+ EmitableEvent.currentCameraChanged(
63
+ getCurrentCaptureDevice(),
64
+ isCameraOn,
65
+ value
66
+ )
67
+ )
68
+ }
58
69
 
59
70
  private var connectPromise: Promise? = null
60
71
  private var screenSharePermissionPromise: Promise? = null
@@ -64,7 +75,6 @@ class RNFishjamClient(
64
75
 
65
76
  var screenShareQuality: String? = null
66
77
  var screenShareSimulcastConfig: SimulcastConfig = SimulcastConfig()
67
- var screenShareMaxBandwidth: TrackBandwidthLimit = TrackBandwidthLimit.BandwidthLimit(0)
68
78
 
69
79
  var screenShareMetadata: Map<String, Any> = mutableMapOf()
70
80
 
@@ -141,27 +151,13 @@ class RNFishjamClient(
141
151
 
142
152
  private fun getSimulcastConfigFromOptions(simulcastConfigMap: io.fishjam.reactnative.SimulcastConfig): SimulcastConfig {
143
153
  val simulcastEnabled = simulcastConfigMap.enabled
144
- val activeEncodings = simulcastConfigMap.activeEncodings.map { e -> e.toTrackEncoding() }
154
+ val activeEncodings = listOf(TrackEncoding.L, TrackEncoding.M, TrackEncoding.H)
145
155
  return SimulcastConfig(
146
156
  enabled = simulcastEnabled,
147
157
  activeEncodings = activeEncodings
148
158
  )
149
159
  }
150
160
 
151
- private fun getMaxBandwidthFromOptions(
152
- maxBandwidthMap: Map<String, Int>?,
153
- maxBandwidthInt: Int
154
- ): TrackBandwidthLimit {
155
- if (maxBandwidthMap != null) {
156
- val maxBandwidthSimulcast = mutableMapOf<String, TrackBandwidthLimit.BandwidthLimit>()
157
- maxBandwidthMap.forEach {
158
- maxBandwidthSimulcast[it.key] = TrackBandwidthLimit.BandwidthLimit(it.value)
159
- }
160
- return TrackBandwidthLimit.SimulcastBandwidthLimit(maxBandwidthSimulcast)
161
- }
162
- return TrackBandwidthLimit.BandwidthLimit(maxBandwidthInt)
163
- }
164
-
165
161
  private fun create() {
166
162
  audioSwitchManager = AudioSwitchManager(appContext?.reactContext!!)
167
163
  fishjamClient =
@@ -172,8 +168,6 @@ class RNFishjamClient(
172
168
  }
173
169
 
174
170
  private fun getVideoParametersFromOptions(createOptions: CameraConfig): VideoParameters {
175
- val videoMaxBandwidth =
176
- getMaxBandwidthFromOptions(createOptions.maxBandwidthMap, createOptions.maxBandwidthInt)
177
171
  var videoParameters =
178
172
  when (createOptions.quality) {
179
173
  "QVGA169" -> VideoParameters.presetQVGA169
@@ -192,7 +186,7 @@ class RNFishjamClient(
192
186
  videoParameters.copy(
193
187
  dimensions = if (createOptions.flipDimensions) videoParameters.dimensions.flip() else videoParameters.dimensions,
194
188
  simulcastConfig = getSimulcastConfigFromOptions(createOptions.simulcastConfig),
195
- maxBitrate = videoMaxBandwidth
189
+ maxBitrate = videoParameters.maxBitrate
196
190
  )
197
191
  return videoParameters
198
192
  }
@@ -293,7 +287,6 @@ class RNFishjamClient(
293
287
 
294
288
  suspend fun startCamera(config: CameraConfig): Boolean {
295
289
  if (isCameraInitialized) {
296
- emitEvent(EmitableEvent.warning("Camera already started. You may only call startCamera once before leaveRoom is called."))
297
290
  return true
298
291
  }
299
292
  if (!PermissionUtils.requestCameraPermission(appContext)) {
@@ -325,7 +318,13 @@ class RNFishjamClient(
325
318
  ) {
326
319
  cameraTrack.setEnabled(isEnabled)
327
320
  isCameraOn = isEnabled
328
- emitEvent(EmitableEvent.currentCameraChanged(cameraTrack.getCaptureDevice()?.toLocalCamera(), isEnabled))
321
+ emitEvent(
322
+ EmitableEvent.currentCameraChanged(
323
+ cameraTrack.getCaptureDevice()?.toLocalCamera(),
324
+ isEnabled,
325
+ isCameraInitialized
326
+ )
327
+ )
329
328
  localCameraTracksChangedListenersManager.notifyListeners()
330
329
  }
331
330
 
@@ -355,7 +354,7 @@ class RNFishjamClient(
355
354
  return
356
355
  }
357
356
 
358
- val microphoneTrack = fishjamClient.createAudioTrack(emptyMap())
357
+ val microphoneTrack = fishjamClient.createAudioTrack(getMicrophoneTrackMetadata())
359
358
  setMicrophoneTrackState(microphoneTrack, true)
360
359
  emitEndpoints()
361
360
  }
@@ -376,17 +375,18 @@ class RNFishjamClient(
376
375
  getLocalAudioTrack()?.let { setMicrophoneTrackState(it, !isMicrophoneOn) }
377
376
  }
378
377
 
379
- updateLocalAudioTrackMetadata(
380
- mapOf(
381
- "active" to isMicrophoneOn,
382
- "paused" to !isMicrophoneOn, // TODO: FCE-711,
383
- "type" to "microphone"
384
- )
385
- )
378
+ updateLocalAudioTrackMetadata(getMicrophoneTrackMetadata())
386
379
 
387
380
  return isMicrophoneOn
388
381
  }
389
382
 
383
+ private fun getMicrophoneTrackMetadata(): Map<String, Any> =
384
+ mapOf(
385
+ "active" to isMicrophoneOn,
386
+ "paused" to !isMicrophoneOn, // TODO: FCE-711,
387
+ "type" to "microphone"
388
+ )
389
+
390
390
  fun handleScreenSharePermission(promise: Promise) {
391
391
  screenSharePermissionPromise = promise
392
392
  if (!isScreenShareOn) {
@@ -416,11 +416,6 @@ class RNFishjamClient(
416
416
  this.screenShareQuality = screenShareOptions.quality
417
417
  this.screenShareSimulcastConfig =
418
418
  getSimulcastConfigFromOptions(screenShareOptions.simulcastConfig)
419
- this.screenShareMaxBandwidth =
420
- getMaxBandwidthFromOptions(
421
- screenShareOptions.maxBandwidthMap,
422
- screenShareOptions.maxBandwidthInt
423
- )
424
419
 
425
420
  if (!isScreenShareOn) {
426
421
  ensureConnected()
@@ -704,9 +699,10 @@ class RNFishjamClient(
704
699
  return res
705
700
  }
706
701
 
707
- fun getStatistics(): MutableMap<String, Map<String, Any?>> {
702
+ suspend fun getStatistics(): Map<String, Map<String, Any?>> {
708
703
  val newMap = mutableMapOf<String, Map<String, Any?>>()
709
- fishjamClient.getStats().forEach { entry ->
704
+ val stats = fishjamClient.getStats()
705
+ stats.forEach { entry ->
710
706
  newMap[entry.key] =
711
707
  if (entry.value is RTCInboundStats) {
712
708
  rtcInboundStatsToRNMap(
@@ -753,7 +749,7 @@ class RNFishjamClient(
753
749
  return videoParameters.copy(
754
750
  dimensions = dimensions,
755
751
  simulcastConfig = screenShareSimulcastConfig,
756
- maxBitrate = screenShareMaxBandwidth
752
+ maxBitrate = videoParameters.maxBitrate
757
753
  )
758
754
  }
759
755
 
@@ -904,6 +900,12 @@ class RNFishjamClient(
904
900
  }
905
901
 
906
902
  override fun onCaptureDeviceChanged(captureDevice: CaptureDevice?) {
907
- emitEvent(EmitableEvent.currentCameraChanged(captureDevice?.toLocalCamera(), isCameraOn))
903
+ emitEvent(
904
+ EmitableEvent.currentCameraChanged(
905
+ captureDevice?.toLocalCamera(),
906
+ isCameraOn,
907
+ isCameraInitialized
908
+ )
909
+ )
908
910
  }
909
911
  }
@@ -16,9 +16,6 @@ import kotlinx.coroutines.withContext
16
16
  class SimulcastConfig : Record {
17
17
  @Field
18
18
  val enabled: Boolean = false
19
-
20
- @Field
21
- val activeEncodings: List<String> = emptyList()
22
19
  }
23
20
 
24
21
  class CameraConfig : Record {
@@ -34,13 +31,6 @@ class CameraConfig : Record {
34
31
  @Field
35
32
  val simulcastConfig: SimulcastConfig = SimulcastConfig()
36
33
 
37
- // expo-modules on Android don't support Either type
38
- @Field
39
- val maxBandwidthMap: Map<String, Int> = emptyMap()
40
-
41
- @Field
42
- val maxBandwidthInt: Int = 0
43
-
44
34
  @Field
45
35
  val cameraEnabled: Boolean = true
46
36
 
@@ -57,12 +47,6 @@ class ScreenShareOptions : Record {
57
47
 
58
48
  @Field
59
49
  val simulcastConfig: SimulcastConfig = SimulcastConfig()
60
-
61
- @Field
62
- val maxBandwidthMap: Map<String, Int> = emptyMap()
63
-
64
- @Field
65
- val maxBandwidthInt: Int = 0
66
50
  }
67
51
 
68
52
  class ReconnectConfig : Record {
@@ -159,6 +143,10 @@ class RNFishjamClientModule : Module() {
159
143
  return@Property rnFishjamClient.reconnectionStatus.status
160
144
  }
161
145
 
146
+ Property("isCameraInitialized") {
147
+ return@Property rnFishjamClient.isCameraInitialized
148
+ }
149
+
162
150
  Function("getPeers") {
163
151
  return@Function rnFishjamClient.getPeers()
164
152
  }
@@ -301,7 +289,9 @@ class RNFishjamClientModule : Module() {
301
289
  }
302
290
  }
303
291
 
304
- AsyncFunction("getStatistics") { rnFishjamClient.getStatistics() }
292
+ AsyncFunction("getStatistics") Coroutine { ->
293
+ return@Coroutine rnFishjamClient.getStatistics()
294
+ }
305
295
 
306
296
  AsyncFunction("startForegroundService") Coroutine { config: ForegroundServiceConfig ->
307
297
  rnFishjamClient.startForegroundService(config)
@@ -1,13 +1,13 @@
1
1
  import type { NativeModule } from 'expo-modules-core/types';
2
+ import type { ConnectionConfig } from './common/client';
2
3
  import type { RTCStats } from './debug/stats/types';
3
- import type { GenericMetadata, SimulcastConfig } from './types';
4
- import type { CameraConfigInternal, Camera } from './hooks/useCamera';
4
+ import type { OnAudioDeviceEvent } from './hooks/useAudioSettings';
5
+ import type { Camera, CameraConfigInternal, CurrentCameraChangedType } from './hooks/useCamera';
6
+ import type { PeerStatus, ReconnectionStatus } from './hooks/useConnection';
7
+ import type { ForegroundServiceConfig } from './hooks/useForegroundService';
5
8
  import type { Peer } from './hooks/usePeers';
6
9
  import type { ScreenShareOptionsInternal } from './hooks/useScreenShare';
7
- import type { ConnectionConfig } from './common/client';
8
- import { PeerStatus } from './hooks/usePeerStatus';
9
- import { ForegroundServiceConfig } from './hooks/useForegroundService';
10
- import { ReconnectionStatus } from './hooks/useReconnection';
10
+ import type { GenericMetadata, SimulcastConfig } from './types';
11
11
  type Metadata = {
12
12
  [key: string]: unknown;
13
13
  };
@@ -20,6 +20,7 @@ type RNFishjamClient = {
20
20
  currentCamera: Camera | null;
21
21
  peerStatus: PeerStatus;
22
22
  reconnectionStatus: ReconnectionStatus;
23
+ isCameraInitialized: boolean;
23
24
  getPeers: <PeerMetadataType extends Metadata, ServerMetadata extends Metadata = GenericMetadata>() => Peer<PeerMetadataType, ServerMetadata>[];
24
25
  joinRoom: (url: string, peerToken: string, peerMetadata: Metadata, config: ConnectionConfig) => Promise<void>;
25
26
  leaveRoom: () => Promise<void>;
@@ -58,7 +59,6 @@ export declare const ReceivableEvents: {
58
59
  readonly SimulcastConfigUpdate: "SimulcastConfigUpdate";
59
60
  readonly PeersUpdate: "PeersUpdate";
60
61
  readonly AudioDeviceUpdate: "AudioDeviceUpdate";
61
- readonly SendMediaEvent: "SendMediaEvent";
62
62
  readonly BandwidthEstimation: "BandwidthEstimation";
63
63
  readonly ReconnectionRetriesLimitReached: "ReconnectionRetriesLimitReached";
64
64
  readonly ReconnectionStarted: "ReconnectionStarted";
@@ -68,6 +68,22 @@ export declare const ReceivableEvents: {
68
68
  readonly ReconnectionStatusChanged: "ReconnectionStatusChanged";
69
69
  readonly CurrentCameraChanged: "CurrentCameraChanged";
70
70
  };
71
- declare const _default: RNFishjamClient & NativeModule<Record<keyof typeof ReceivableEvents, <T>(...args: T[]) => void>>;
71
+ export type ReceivableEventPayloads = {
72
+ [ReceivableEvents.IsMicrophoneOn]: boolean;
73
+ [ReceivableEvents.IsScreenShareOn]: boolean;
74
+ [ReceivableEvents.IsAppScreenShareOn]: boolean;
75
+ [ReceivableEvents.SimulcastConfigUpdate]: SimulcastConfig;
76
+ [ReceivableEvents.PeersUpdate]: Peer<GenericMetadata, GenericMetadata>[];
77
+ [ReceivableEvents.AudioDeviceUpdate]: OnAudioDeviceEvent;
78
+ [ReceivableEvents.BandwidthEstimation]: number | null;
79
+ [ReceivableEvents.ReconnectionRetriesLimitReached]: void;
80
+ [ReceivableEvents.ReconnectionStarted]: void;
81
+ [ReceivableEvents.Reconnected]: void;
82
+ [ReceivableEvents.Warning]: string;
83
+ [ReceivableEvents.PeerStatusChanged]: PeerStatus;
84
+ [ReceivableEvents.ReconnectionStatusChanged]: ReconnectionStatus;
85
+ [ReceivableEvents.CurrentCameraChanged]: CurrentCameraChangedType;
86
+ };
87
+ declare const _default: RNFishjamClient & NativeModule<Record<keyof typeof ReceivableEvents, (payload: ReceivableEventPayloads) => void>>;
72
88
  export default _default;
73
89
  //# 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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"}
@@ -6,7 +6,6 @@ export const ReceivableEvents = {
6
6
  SimulcastConfigUpdate: 'SimulcastConfigUpdate',
7
7
  PeersUpdate: 'PeersUpdate',
8
8
  AudioDeviceUpdate: 'AudioDeviceUpdate',
9
- SendMediaEvent: 'SendMediaEvent',
10
9
  BandwidthEstimation: 'BandwidthEstimation',
11
10
  ReconnectionRetriesLimitReached: 'ReconnectionRetriesLimitReached',
12
11
  ReconnectionStarted: 'ReconnectionStarted',
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAoFxD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB,EAAE,eAAe;IACzD,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,+BAA+B,EAAE,iCAAiC;IAClE,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAEX,eAAe,mBAAmB,CAAC,iBAAiB,CAIjD,CAAC","sourcesContent":["import { requireNativeModule } from 'expo-modules-core';\n\nimport type { NativeModule } from 'expo-modules-core/types';\nimport type { RTCStats } from './debug/stats/types';\nimport type { GenericMetadata, 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';\nimport { ForegroundServiceConfig } from './hooks/useForegroundService';\nimport { ReconnectionStatus } from './hooks/useReconnection';\n\ntype Metadata = { [key: string]: unknown };\n\ntype RNFishjamClient = {\n isMicrophoneOn: boolean;\n isCameraOn: boolean;\n isScreenShareOn: boolean;\n isAppScreenShareOn: boolean; // only available on ios\n cameras: ReadonlyArray<Camera>;\n currentCamera: Camera | null;\n peerStatus: PeerStatus;\n reconnectionStatus: ReconnectionStatus;\n\n getPeers: <\n PeerMetadataType extends Metadata,\n ServerMetadata extends Metadata = GenericMetadata,\n >() => Peer<PeerMetadataType, ServerMetadata>[];\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<boolean>;\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 toggleAppScreenShare: (\n screenShareOptions: Partial<ScreenShareOptionsInternal>,\n ) => Promise<void>;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <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: (config: ForegroundServiceConfig) => Promise<void>;\n stopForegroundService: () => void;\n};\n\nexport const ReceivableEvents = {\n IsMicrophoneOn: 'IsMicrophoneOn',\n IsScreenShareOn: 'IsScreenShareOn',\n IsAppScreenShareOn: 'IsAppScreenShareOn', // only for iOS\n SimulcastConfigUpdate: 'SimulcastConfigUpdate',\n PeersUpdate: 'PeersUpdate',\n AudioDeviceUpdate: 'AudioDeviceUpdate',\n SendMediaEvent: 'SendMediaEvent',\n BandwidthEstimation: 'BandwidthEstimation',\n ReconnectionRetriesLimitReached: 'ReconnectionRetriesLimitReached',\n ReconnectionStarted: 'ReconnectionStarted',\n Reconnected: 'Reconnected',\n Warning: 'Warning',\n PeerStatusChanged: 'PeerStatusChanged',\n ReconnectionStatusChanged: 'ReconnectionStatusChanged',\n CurrentCameraChanged: 'CurrentCameraChanged',\n} as const;\n\nexport default requireNativeModule('RNFishjamClient') as RNFishjamClient &\n NativeModule<\n // TODO: Make event arguments typesafe instead of generic.\n Record<keyof typeof ReceivableEvents, <T>(...args: T[]) => void>\n >;\n"]}
1
+ {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAyFxD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB,EAAE,eAAe;IACzD,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,+BAA+B,EAAE,iCAAiC;IAClE,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAmBX,eAAe,mBAAmB,CAAC,iBAAiB,CAMjD,CAAC","sourcesContent":["import { requireNativeModule } from 'expo-modules-core';\n\nimport type { NativeModule } from 'expo-modules-core/types';\nimport type { ConnectionConfig } from './common/client';\nimport type { RTCStats } from './debug/stats/types';\nimport type { OnAudioDeviceEvent } from './hooks/useAudioSettings';\nimport type {\n Camera,\n CameraConfigInternal,\n CurrentCameraChangedType,\n} from './hooks/useCamera';\nimport type { PeerStatus, ReconnectionStatus } from './hooks/useConnection';\nimport type { ForegroundServiceConfig } from './hooks/useForegroundService';\nimport type { Peer } from './hooks/usePeers';\nimport type { ScreenShareOptionsInternal } from './hooks/useScreenShare';\nimport type { GenericMetadata, SimulcastConfig } from './types';\n\ntype Metadata = { [key: string]: unknown };\n\ntype RNFishjamClient = {\n isMicrophoneOn: boolean;\n isCameraOn: boolean;\n isScreenShareOn: boolean;\n isAppScreenShareOn: boolean; // only available on ios\n cameras: ReadonlyArray<Camera>;\n currentCamera: Camera | null;\n peerStatus: PeerStatus;\n reconnectionStatus: ReconnectionStatus;\n isCameraInitialized: boolean;\n\n getPeers: <\n PeerMetadataType extends Metadata,\n ServerMetadata extends Metadata = GenericMetadata,\n >() => Peer<PeerMetadataType, ServerMetadata>[];\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<boolean>;\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 toggleAppScreenShare: (\n screenShareOptions: Partial<ScreenShareOptionsInternal>,\n ) => Promise<void>;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <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: (config: ForegroundServiceConfig) => Promise<void>;\n stopForegroundService: () => void;\n};\n\nexport const ReceivableEvents = {\n IsMicrophoneOn: 'IsMicrophoneOn',\n IsScreenShareOn: 'IsScreenShareOn',\n IsAppScreenShareOn: 'IsAppScreenShareOn', // only for iOS\n SimulcastConfigUpdate: 'SimulcastConfigUpdate',\n PeersUpdate: 'PeersUpdate',\n AudioDeviceUpdate: 'AudioDeviceUpdate',\n BandwidthEstimation: 'BandwidthEstimation',\n ReconnectionRetriesLimitReached: 'ReconnectionRetriesLimitReached',\n ReconnectionStarted: 'ReconnectionStarted',\n Reconnected: 'Reconnected',\n Warning: 'Warning',\n PeerStatusChanged: 'PeerStatusChanged',\n ReconnectionStatusChanged: 'ReconnectionStatusChanged',\n CurrentCameraChanged: 'CurrentCameraChanged',\n} as const;\n\nexport type ReceivableEventPayloads = {\n [ReceivableEvents.IsMicrophoneOn]: boolean;\n [ReceivableEvents.IsScreenShareOn]: boolean;\n [ReceivableEvents.IsAppScreenShareOn]: boolean;\n [ReceivableEvents.SimulcastConfigUpdate]: SimulcastConfig;\n [ReceivableEvents.PeersUpdate]: Peer<GenericMetadata, GenericMetadata>[];\n [ReceivableEvents.AudioDeviceUpdate]: OnAudioDeviceEvent;\n [ReceivableEvents.BandwidthEstimation]: number | null;\n [ReceivableEvents.ReconnectionRetriesLimitReached]: void;\n [ReceivableEvents.ReconnectionStarted]: void;\n [ReceivableEvents.Reconnected]: void;\n [ReceivableEvents.Warning]: string;\n [ReceivableEvents.PeerStatusChanged]: PeerStatus;\n [ReceivableEvents.ReconnectionStatusChanged]: ReconnectionStatus;\n [ReceivableEvents.CurrentCameraChanged]: CurrentCameraChangedType;\n};\n\nexport default requireNativeModule('RNFishjamClient') as RNFishjamClient &\n NativeModule<\n Record<\n keyof typeof ReceivableEvents,\n (payload: ReceivableEventPayloads) => void\n >\n >;\n"]}
@@ -15,11 +15,11 @@ export type ConnectionConfig = {
15
15
  };
16
16
  };
17
17
  /**
18
- * @param url fishjam Url
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
18
+ * @ignore
22
19
  */
23
20
  export declare function joinRoom<PeerMetadata extends GenericMetadata = GenericMetadata>(url: string, peerToken: string, peerMetadata?: PeerMetadata, config?: ConnectionConfig): Promise<void>;
21
+ /**
22
+ * @ignore
23
+ */
24
24
  export declare function leaveRoom(): Promise<void>;
25
25
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;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;;;;;GAKG;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;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;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,YAAY,SAAS,eAAe,GAAG,eAAe,EAEtD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,gBAAgB,iBAQ1B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
@@ -1,13 +1,13 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
- * @param url fishjam Url
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
3
+ * @ignore
7
4
  */
8
5
  export async function joinRoom(url, peerToken, peerMetadata, config) {
9
6
  await RNFishjamClientModule.joinRoom(url, peerToken, peerMetadata ?? {}, config ?? {});
10
7
  }
8
+ /**
9
+ * @ignore
10
+ */
11
11
  export async function leaveRoom() {
12
12
  await RNFishjamClientModule.leaveRoom();
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;;;;GAKG;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;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 * @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 */\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\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;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EACX,SAAiB,EACjB,YAA2B,EAC3B,MAAyB;IAEzB,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,SAAS,EACT,YAAY,IAAI,EAAE,EAClB,MAAM,IAAI,EAAE,CACb,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,qBAAqB,CAAC,SAAS,EAAE,CAAC;AAC1C,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nexport type ConnectionConfig = {\n /**\n * Configuration for automatic reconnection\n * sdk uses a linear backoff algorithm, that is the formula\n * for the delay of the nth attempt is\n * n * delayMs + initialDelayMs\n *\n * Pass 0 for maxAttempts to disable automatic reconnection\n */\n reconnectConfig?: {\n maxAttempts?: number;\n initialDelayMs?: number;\n delayMs?: number;\n };\n};\n\n/**\n * @ignore\n */\nexport async function joinRoom<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(\n url: string,\n peerToken: string,\n peerMetadata?: PeerMetadata,\n config?: ConnectionConfig,\n) {\n await RNFishjamClientModule.joinRoom(\n url,\n peerToken,\n peerMetadata ?? {},\n config ?? {},\n );\n}\n/**\n * @ignore\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
@@ -3,6 +3,7 @@ import { GenericMetadata } from '../types';
3
3
  * Updates metadata send to other peers
4
4
  * @param peerMetadata string indexed record with metadata, that will be available to all other peers
5
5
  * @deprecated
6
+ * @ignore
6
7
  */
7
8
  export declare function updatePeerMetadata<PeerMetadata extends GenericMetadata = GenericMetadata>(peerMetadata: PeerMetadata): Promise<void>;
8
9
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,YAAY,EAAE,YAAY,iBAE3B"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,SAAS,eAAe,GAAG,eAAe,EACtD,YAAY,EAAE,YAAY,iBAE3B"}
@@ -3,6 +3,7 @@ import RNFishjamClientModule from '../RNFishjamClientModule';
3
3
  * Updates metadata send to other peers
4
4
  * @param peerMetadata string indexed record with metadata, that will be available to all other peers
5
5
  * @deprecated
6
+ * @ignore
6
7
  */
7
8
  export async function updatePeerMetadata(peerMetadata) {
8
9
  await RNFishjamClientModule.updatePeerMetadata(peerMetadata);
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;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 * @deprecated\n */\nexport async function updatePeerMetadata<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(peerMetadata: PeerMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(peerMetadata);\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAEtC,YAA0B;IAC1B,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * Updates metadata send to other peers\n * @param peerMetadata string indexed record with metadata, that will be available to all other peers\n * @deprecated\n * @ignore\n */\nexport async function updatePeerMetadata<\n PeerMetadata extends GenericMetadata = GenericMetadata,\n>(peerMetadata: PeerMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(peerMetadata);\n}\n"]}
@@ -1,6 +1,27 @@
1
1
  export type FishjamRoomProps = {
2
+ /**
3
+ * URL to your fishjam instance
4
+ */
2
5
  fishjamUrl: string;
6
+ /**
7
+ * Peer Token
8
+ */
3
9
  peerToken: string;
4
10
  };
11
+ /**
12
+ * Simple component that enables your camera and show all tracks
13
+ *
14
+ * Example usage:
15
+ * ```tsx
16
+ * <FishjamRoom
17
+ * fishjamUrl={FISHJAM_URL}
18
+ * peerToken={PEER_TOKEN}
19
+ * />
20
+ * ```
21
+ * @category Components
22
+ * @param {object} props
23
+ * @param {string} props.fishjamUrl
24
+ * @param {string} props.peerToken
25
+ */
5
26
  export declare const FishjamRoom: ({ fishjamUrl, peerToken }: FishjamRoomProps) => import("react").JSX.Element;
6
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA+B,gBAAgB,gCA0BtE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,8BAA+B,gBAAgB,gCA0BtE,CAAC"}
@@ -3,12 +3,27 @@ import { joinRoom, leaveRoom } from '../../common/client';
3
3
  import { useCamera } from '../../hooks/useCamera';
4
4
  import { VideosGrid } from './VideosGrid';
5
5
  import { SafeAreaView } from 'react-native';
6
+ /**
7
+ * Simple component that enables your camera and show all tracks
8
+ *
9
+ * Example usage:
10
+ * ```tsx
11
+ * <FishjamRoom
12
+ * fishjamUrl={FISHJAM_URL}
13
+ * peerToken={PEER_TOKEN}
14
+ * />
15
+ * ```
16
+ * @category Components
17
+ * @param {object} props
18
+ * @param {string} props.fishjamUrl
19
+ * @param {string} props.peerToken
20
+ */
6
21
  export const FishjamRoom = ({ fishjamUrl, peerToken }) => {
7
22
  const { prepareCamera } = useCamera();
8
23
  useEffect(() => {
9
24
  const join = async () => {
10
25
  await prepareCamera({
11
- simulcastEnabled: false,
26
+ simulcastEnabled: true,
12
27
  quality: 'HD169',
13
28
  cameraEnabled: true,
14
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAoB,EAAE,EAAE;IACzE,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,aAAa,CAAC;gBAClB,gBAAgB,EAAE,KAAK;gBACvB,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;gBACpC,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,CAAC,YAAY,CACX;MAAA,CAAC,UAAU,CAAC,AAAD,EACb;IAAA,EAAE,YAAY,CAAC,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { joinRoom, leaveRoom } from '../../common/client';\nimport { useCamera } from '../../hooks/useCamera';\nimport { VideosGrid } from './VideosGrid';\nimport { SafeAreaView } from 'react-native';\n\nexport type FishjamRoomProps = {\n fishjamUrl: string;\n peerToken: string;\n};\n\nexport const FishjamRoom = ({ fishjamUrl, peerToken }: FishjamRoomProps) => {\n const { prepareCamera } = useCamera();\n\n useEffect(() => {\n const join = async () => {\n await prepareCamera({\n simulcastEnabled: false,\n quality: 'HD169',\n cameraEnabled: true,\n });\n await joinRoom(fishjamUrl, peerToken, {\n peer: {},\n server: {},\n });\n };\n join();\n return () => {\n leaveRoom();\n };\n }, [fishjamUrl, peerToken, prepareCamera]);\n\n return (\n <SafeAreaView>\n <VideosGrid />\n </SafeAreaView>\n );\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FishjamRoom/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAa5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAoB,EAAE,EAAE;IACzE,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,aAAa,CAAC;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;gBACpC,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,CAAC,YAAY,CACX;MAAA,CAAC,UAAU,CAAC,AAAD,EACb;IAAA,EAAE,YAAY,CAAC,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { joinRoom, leaveRoom } from '../../common/client';\nimport { useCamera } from '../../hooks/useCamera';\nimport { VideosGrid } from './VideosGrid';\nimport { SafeAreaView } from 'react-native';\n\nexport type FishjamRoomProps = {\n /**\n * URL to your fishjam instance\n */\n fishjamUrl: string;\n /**\n * Peer Token\n */\n peerToken: string;\n};\n\n/**\n * Simple component that enables your camera and show all tracks\n *\n * Example usage:\n * ```tsx\n * <FishjamRoom\n * fishjamUrl={FISHJAM_URL}\n * peerToken={PEER_TOKEN}\n * />\n * ```\n * @category Components\n * @param {object} props\n * @param {string} props.fishjamUrl\n * @param {string} props.peerToken\n */\nexport const FishjamRoom = ({ fishjamUrl, peerToken }: FishjamRoomProps) => {\n const { prepareCamera } = useCamera();\n\n useEffect(() => {\n const join = async () => {\n await prepareCamera({\n simulcastEnabled: true,\n quality: 'HD169',\n cameraEnabled: true,\n });\n await joinRoom(fishjamUrl, peerToken, {\n peer: {},\n server: {},\n });\n };\n join();\n return () => {\n leaveRoom();\n };\n }, [fishjamUrl, peerToken, prepareCamera]);\n\n return (\n <SafeAreaView>\n <VideosGrid />\n </SafeAreaView>\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { ViewStyle } from 'react-native';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
3
  import { VideoLayout } from '../types';
4
4
  import { CameraId } from '../hooks/useCamera';
5
5
  export type VideoPreviewViewProps = {
@@ -8,7 +8,7 @@ export type VideoPreviewViewProps = {
8
8
  * @default `FILL`
9
9
  */
10
10
  videoLayout?: VideoLayout;
11
- style?: ViewStyle;
11
+ style?: StyleProp<ViewStyle>;
12
12
  /**
13
13
  * Id of the camera used for preview. Get available cameras with `cameras` property.
14
14
  * @default the first front camera
@@ -17,8 +17,12 @@ export type VideoPreviewViewProps = {
17
17
  };
18
18
  /**
19
19
  * Render camera preview.
20
- * Allows to display camera preview beofre streaming is started
20
+ * Allows to display camera preview before streaming is started
21
+ *
22
+ *
21
23
  * @category Components
24
+ * @param {object} props
25
+ * @param {string} props.cameraId
22
26
  */
23
27
  export declare const VideoPreviewView: React.ForwardRefExoticComponent<VideoPreviewViewProps & React.RefAttributes<React.ComponentType<VideoPreviewViewProps>>>;
24
28
  //# sourceMappingURL=VideoPreviewView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPreviewView.d.ts","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0HAM3B,CAAC"}
1
+ {"version":3,"file":"VideoPreviewView.d.ts","sourceRoot":"","sources":["../../src/components/VideoPreviewView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAKF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,0HAM3B,CAAC"}