@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.
- package/README.md +6 -6
- package/android/build.gradle +6 -2
- package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +4 -2
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +41 -39
- package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +7 -17
- package/build/RNFishjamClientModule.d.ts +24 -8
- package/build/RNFishjamClientModule.d.ts.map +1 -1
- package/build/RNFishjamClientModule.js +0 -1
- package/build/RNFishjamClientModule.js.map +1 -1
- package/build/common/client.d.ts +4 -4
- package/build/common/client.d.ts.map +1 -1
- package/build/common/client.js +4 -4
- package/build/common/client.js.map +1 -1
- package/build/common/metadata.d.ts +1 -0
- package/build/common/metadata.d.ts.map +1 -1
- package/build/common/metadata.js +1 -0
- package/build/common/metadata.js.map +1 -1
- package/build/components/FishjamRoom/index.d.ts +21 -0
- package/build/components/FishjamRoom/index.d.ts.map +1 -1
- package/build/components/FishjamRoom/index.js +16 -1
- package/build/components/FishjamRoom/index.js.map +1 -1
- package/build/components/VideoPreviewView.d.ts +7 -3
- package/build/components/VideoPreviewView.d.ts.map +1 -1
- package/build/components/VideoPreviewView.js +5 -1
- package/build/components/VideoPreviewView.js.map +1 -1
- package/build/components/VideoRendererView.d.ts +13 -0
- package/build/components/VideoRendererView.d.ts.map +1 -1
- package/build/components/VideoRendererView.js +13 -0
- package/build/components/VideoRendererView.js.map +1 -1
- package/build/hooks/internal/useFishjamEvent.d.ts +3 -2
- package/build/hooks/internal/useFishjamEvent.d.ts.map +1 -1
- package/build/hooks/internal/useFishjamEvent.js +25 -1
- package/build/hooks/internal/useFishjamEvent.js.map +1 -1
- package/build/hooks/internal/useFishjamEventState.d.ts +2 -2
- package/build/hooks/internal/useFishjamEventState.d.ts.map +1 -1
- package/build/hooks/internal/useFishjamEventState.js.map +1 -1
- package/build/hooks/useAppScreenShare.d.ts +9 -0
- package/build/hooks/useAppScreenShare.d.ts.map +1 -1
- package/build/hooks/useAppScreenShare.js +9 -7
- package/build/hooks/useAppScreenShare.js.map +1 -1
- package/build/hooks/useAudioSettings.d.ts +4 -0
- package/build/hooks/useAudioSettings.d.ts.map +1 -1
- package/build/hooks/useAudioSettings.js.map +1 -1
- package/build/hooks/useBandwidthEstimation.d.ts +3 -0
- package/build/hooks/useBandwidthEstimation.d.ts.map +1 -1
- package/build/hooks/useBandwidthEstimation.js +6 -1
- package/build/hooks/useBandwidthEstimation.js.map +1 -1
- package/build/hooks/useCamera.d.ts +11 -33
- package/build/hooks/useCamera.d.ts.map +1 -1
- package/build/hooks/useCamera.js +11 -60
- package/build/hooks/useCamera.js.map +1 -1
- package/build/hooks/useConnection.d.ts +29 -13
- package/build/hooks/useConnection.d.ts.map +1 -1
- package/build/hooks/useConnection.js +11 -5
- package/build/hooks/useConnection.js.map +1 -1
- package/build/hooks/useForegroundService.d.ts +20 -11
- package/build/hooks/useForegroundService.d.ts.map +1 -1
- package/build/hooks/useForegroundService.js +2 -3
- package/build/hooks/useForegroundService.js.map +1 -1
- package/build/hooks/useMicrophone.js.map +1 -1
- package/build/hooks/usePeerStatus.d.ts +2 -10
- package/build/hooks/usePeerStatus.d.ts.map +1 -1
- package/build/hooks/usePeerStatus.js +1 -0
- package/build/hooks/usePeerStatus.js.map +1 -1
- package/build/hooks/usePeers.d.ts +19 -22
- package/build/hooks/usePeers.d.ts.map +1 -1
- package/build/hooks/usePeers.js +17 -5
- package/build/hooks/usePeers.js.map +1 -1
- package/build/hooks/useReconnection.d.ts +2 -2
- package/build/hooks/useReconnection.d.ts.map +1 -1
- package/build/hooks/useReconnection.js +1 -0
- package/build/hooks/useReconnection.js.map +1 -1
- package/build/hooks/useScreenShare.d.ts +2 -23
- package/build/hooks/useScreenShare.d.ts.map +1 -1
- package/build/hooks/useScreenShare.js +1 -36
- package/build/hooks/useScreenShare.js.map +1 -1
- package/build/index.d.ts +4 -6
- package/build/index.d.ts.map +1 -1
- package/build/index.js +0 -2
- package/build/index.js.map +1 -1
- package/build/types.d.ts +0 -19
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils/eventPayloadValidator.d.ts +3 -0
- package/build/utils/eventPayloadValidator.d.ts.map +1 -0
- package/build/utils/eventPayloadValidator.js +94 -0
- package/build/utils/eventPayloadValidator.js.map +1 -0
- package/ios/Events.swift +4 -1
- package/ios/RNFishjamClient.podspec +1 -1
- package/ios/RNFishjamClient.swift +31 -39
- package/ios/RNFishjamClientModule.swift +5 -10
- package/package.json +18 -9
- package/plugin/build/withFishjamIos.js +17 -7
- package/build/common/webRTC.d.ts +0 -14
- package/build/common/webRTC.d.ts.map +0 -1
- package/build/common/webRTC.js +0 -15
- package/build/common/webRTC.js.map +0 -1
- /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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
package/android/build.gradle
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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(
|
|
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(
|
|
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():
|
|
702
|
+
suspend fun getStatistics(): Map<String, Map<String, Any?>> {
|
|
708
703
|
val newMap = mutableMapOf<String, Map<String, Any?>>()
|
|
709
|
-
fishjamClient.getStats()
|
|
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 =
|
|
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(
|
|
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") {
|
|
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 {
|
|
4
|
-
import type { CameraConfigInternal,
|
|
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 {
|
|
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
|
-
|
|
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":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,
|
|
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;
|
|
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"]}
|
package/build/common/client.d.ts
CHANGED
|
@@ -15,11 +15,11 @@ export type ConnectionConfig = {
|
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
|
-
* @
|
|
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
|
|
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"}
|
package/build/common/client.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import RNFishjamClientModule from '../RNFishjamClientModule';
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
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
|
|
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
|
|
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"}
|
package/build/common/metadata.js
CHANGED
|
@@ -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
|
|
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:
|
|
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;
|
|
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
|
|
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;
|
|
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"}
|