@100mslive/react-native-hms 1.8.0 → 1.9.1-beta.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/android/build.gradle +3 -3
- package/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +15 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +4 -3
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +43 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +147 -47
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +419 -248
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +24 -4
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -1
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +16 -5
- package/ios/HMSHLSPlayerManager.swift +20 -11
- package/ios/HMSHelper.swift +33 -4
- package/ios/HMSManager.m +66 -10
- package/ios/HMSManager.swift +65 -21
- package/ios/HMSRNSDK.swift +244 -100
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
- package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
- package/lib/commonjs/classes/HMSConstants.js +1 -2
- package/lib/commonjs/classes/HMSConstants.js.map +1 -1
- package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
- package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSLayer.js +1 -2
- package/lib/commonjs/classes/HMSLayer.js.map +1 -1
- package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
- package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/commonjs/classes/HMSLogLevel.js +1 -2
- package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +1 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSManagerModule.js +1 -2
- package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
- package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
- package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPConfig.js +4 -0
- package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +15 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
- package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPeersCache.js +8 -2
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
- package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomCache.js +1 -2
- package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +152 -8
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSource.js +1 -2
- package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +1 -2
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
- package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
- package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +17 -5
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +11 -9
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +11 -11
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js +8 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/commonjs/hooks/hmsviews.js +17 -0
- package/lib/commonjs/hooks/hmsviews.js.map +1 -0
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
- package/lib/commonjs/index.js +10 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-playback-slice.js +4 -0
- package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
- package/lib/commonjs/stores/hms-store.js +4 -3
- package/lib/commonjs/stores/hms-store.js.map +1 -1
- package/lib/commonjs/stores/hmsviews-slice.js +19 -0
- package/lib/commonjs/stores/hmsviews-slice.js.map +1 -0
- package/lib/commonjs/stores/types.js +9 -0
- package/lib/commonjs/stores/types.js.map +1 -1
- package/lib/commonjs/types.js +4 -7
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSPIPConfig.js +2 -0
- package/lib/module/classes/HMSPIPConfig.js.map +1 -0
- package/lib/module/classes/HMSPIPListenerActions.js +1 -0
- package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +15 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerListIterator.js +58 -0
- package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/module/classes/HMSPeerUpdate.js +2 -1
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPeersCache.js +7 -0
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +153 -10
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/classes/HmsView.js +14 -1
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +9 -6
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/hooks.js +4 -0
- package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/module/hooks/hmsviews.js +12 -0
- package/lib/module/hooks/hmsviews.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/hls-player-playback-slice.js +4 -0
- package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/module/stores/hms-store.js +3 -1
- package/lib/module/stores/hms-store.js.map +1 -1
- package/lib/module/stores/hmsviews-slice.js +12 -0
- package/lib/module/stores/hmsviews-slice.js.map +1 -0
- package/lib/module/stores/types.js +9 -0
- package/lib/module/stores/types.js.map +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/classes/HMSPIPConfig.d.ts +7 -0
- package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
- package/lib/typescript/classes/HMSPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
- package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
- package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
- package/lib/typescript/classes/HMSSDK.d.ts +47 -8
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
- package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +2 -0
- package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
- package/lib/typescript/hooks/hmsviews.d.ts +3 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/stores/hms-store.d.ts +4 -3
- package/lib/typescript/stores/hmsviews-slice.d.ts +5 -0
- package/lib/typescript/stores/types.d.ts +14 -2
- package/lib/typescript/types.d.ts +9 -5
- package/package.json +3 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSPIPConfig.ts +7 -0
- package/src/classes/HMSPIPListenerActions.ts +1 -0
- package/src/classes/HMSPeer.ts +25 -0
- package/src/classes/HMSPeerListIterator.ts +60 -0
- package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPeersCache.ts +7 -0
- package/src/classes/HMSSDK.tsx +188 -13
- package/src/classes/HMSUpdateListenerActions.ts +1 -0
- package/src/classes/HmsView.tsx +16 -2
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +11 -5
- package/src/components/HMSHLSPlayer/hooks.ts +7 -0
- package/src/components/HMSHLSPlayer/index.ts +1 -0
- package/src/hooks/hmsviews.ts +13 -0
- package/src/index.ts +2 -0
- package/src/stores/hls-player-playback-slice.ts +3 -0
- package/src/stores/hms-store.ts +2 -0
- package/src/stores/hmsviews-slice.ts +20 -0
- package/src/stores/types.ts +20 -1
- package/src/types.ts +13 -3
- package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.7.1/gc.properties +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/configuration-cache/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
package/android/build.gradle
CHANGED
|
@@ -86,7 +86,7 @@ dependencies {
|
|
|
86
86
|
implementation "androidx.constraintlayout:constraintlayout:2.1.3"
|
|
87
87
|
implementation "androidx.appcompat:appcompat:1.3.1"
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
implementation "live.100ms:android-sdk:${sdkVersions["android"]}"
|
|
90
|
+
implementation "live.100ms:video-view:${sdkVersions["android"]}"
|
|
91
|
+
implementation "live.100ms:hls-player:${sdkVersions["android"]}"
|
|
92
92
|
}
|
package/android/local.properties
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
## This file must *NOT* be checked into Version Control Systems,
|
|
2
|
+
# as it contains information specific to your local configuration.
|
|
3
|
+
#
|
|
4
|
+
# Location of the SDK. This is only used by Gradle.
|
|
5
|
+
# For customization when using a Version Control System, please read the
|
|
6
|
+
# header note.
|
|
7
|
+
#Mon Nov 14 20:51:00 IST 2022
|
|
8
|
+
sdk.dir=/Users/jatinnagar/Library/Android/sdk
|
|
@@ -29,7 +29,7 @@ class HMSAudioshareActivity : ComponentActivity() {
|
|
|
29
29
|
override fun onSuccess() {
|
|
30
30
|
HMSManager.hmsCollection[id]?.isAudioSharing = true
|
|
31
31
|
HMSManager.hmsCollection[id]?.audioshareCallback?.resolve(
|
|
32
|
-
HMSManager.hmsCollection[id]?.
|
|
32
|
+
HMSManager.hmsCollection[id]?.getPromiseResolveData(),
|
|
33
33
|
)
|
|
34
34
|
finish()
|
|
35
35
|
}
|
|
@@ -172,6 +172,9 @@ object HMSDecoder {
|
|
|
172
172
|
HMSPeerUpdate.NAME_CHANGED -> {
|
|
173
173
|
print("$peerUpdateType received")
|
|
174
174
|
}
|
|
175
|
+
HMSPeerUpdate.HAND_RAISED_CHANGED -> {
|
|
176
|
+
peer.putBoolean("isHandRaised", hmsPeer.isHandRaised)
|
|
177
|
+
}
|
|
175
178
|
else -> {
|
|
176
179
|
print("Unhandled Peer Update Type received: $peerUpdateType")
|
|
177
180
|
}
|
|
@@ -205,6 +208,9 @@ object HMSDecoder {
|
|
|
205
208
|
HMSPeerUpdate.NAME_CHANGED -> {
|
|
206
209
|
print("$peerUpdateType received")
|
|
207
210
|
}
|
|
211
|
+
HMSPeerUpdate.HAND_RAISED_CHANGED -> {
|
|
212
|
+
peer.putBoolean("isHandRaised", hmsPeer.isHandRaised)
|
|
213
|
+
}
|
|
208
214
|
else -> {
|
|
209
215
|
print("Unhandled Peer Update Type received: $peerUpdateType")
|
|
210
216
|
}
|
|
@@ -231,6 +237,8 @@ object HMSDecoder {
|
|
|
231
237
|
|
|
232
238
|
peer.putMap("role", this.getHmsRole(hmsPeer.hmsRole))
|
|
233
239
|
|
|
240
|
+
peer.putBoolean("isHandRaised", hmsPeer.isHandRaised)
|
|
241
|
+
|
|
234
242
|
hmsPeer.networkQuality?.let {
|
|
235
243
|
peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
|
|
236
244
|
}
|
|
@@ -479,10 +487,12 @@ object HMSDecoder {
|
|
|
479
487
|
private fun getHmsAudioTrackSettings(hmsAudioTrackSettings: HMSAudioTrackSettings?): WritableMap {
|
|
480
488
|
val settings: WritableMap = Arguments.createMap()
|
|
481
489
|
if (hmsAudioTrackSettings != null) {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
490
|
+
hmsAudioTrackSettings.useHardwareAcousticEchoCanceler?.let {
|
|
491
|
+
settings.putBoolean(
|
|
492
|
+
"useHardwareAcousticEchoCanceler",
|
|
493
|
+
it,
|
|
494
|
+
)
|
|
495
|
+
}
|
|
486
496
|
settings.putString("initialState", hmsAudioTrackSettings.initialState.name)
|
|
487
497
|
}
|
|
488
498
|
return settings
|
|
@@ -625,7 +635,7 @@ object HMSDecoder {
|
|
|
625
635
|
fun getHMSBrowserRecordingState(data: HMSBrowserRecordingState?): ReadableMap {
|
|
626
636
|
val input = Arguments.createMap()
|
|
627
637
|
if (data !== null) {
|
|
628
|
-
input.putBoolean("initialising",
|
|
638
|
+
input.putBoolean("initialising", data.initialising)
|
|
629
639
|
|
|
630
640
|
input.putBoolean("running", data.running)
|
|
631
641
|
|
|
@@ -153,9 +153,9 @@ class HMSHLSPlayer(context: ReactContext) : FrameLayout(context) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
val data = Arguments.createMap()
|
|
156
|
-
data.
|
|
157
|
-
data.putDouble("
|
|
158
|
-
sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.
|
|
156
|
+
data.putDouble("width", width)
|
|
157
|
+
data.putDouble("height", height)
|
|
158
|
+
sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT, data)
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
},
|
|
@@ -285,6 +285,7 @@ object HMSHLSPlayerConstants {
|
|
|
285
285
|
const val ON_PLAYBACK_CUE_EVENT = "ON_PLAYBACK_CUE_EVENT"
|
|
286
286
|
const val ON_PLAYBACK_FAILURE_EVENT = "ON_PLAYBACK_FAILURE_EVENT"
|
|
287
287
|
const val ON_PLAYBACK_STATE_CHANGE_EVENT = "ON_PLAYBACK_STATE_CHANGE_EVENT"
|
|
288
|
+
const val ON_PLAYBACK_RESOLUTION_CHANGE_EVENT = "ON_PLAYBACK_RESOLUTION_CHANGE_EVENT"
|
|
288
289
|
|
|
289
290
|
// HLS Playback Stats Events
|
|
290
291
|
const val HMS_HLS_STATS_EVENT = "hmsHlsStatsEvent"
|
|
@@ -18,6 +18,8 @@ import live.hms.video.media.settings.*
|
|
|
18
18
|
import live.hms.video.media.tracks.HMSRemoteAudioTrack
|
|
19
19
|
import live.hms.video.media.tracks.HMSRemoteVideoTrack
|
|
20
20
|
import live.hms.video.media.tracks.HMSTrack
|
|
21
|
+
import live.hms.video.sdk.HMSSDK
|
|
22
|
+
import live.hms.video.sdk.listeners.PeerListResultListener
|
|
21
23
|
import live.hms.video.sdk.models.*
|
|
22
24
|
import live.hms.video.sdk.models.enums.AudioMixingMode
|
|
23
25
|
import live.hms.video.sdk.models.role.HMSRole
|
|
@@ -27,6 +29,10 @@ import live.hms.video.utils.HmsUtilities
|
|
|
27
29
|
import org.webrtc.SurfaceViewRenderer
|
|
28
30
|
import java.io.ByteArrayOutputStream
|
|
29
31
|
import java.util.*
|
|
32
|
+
import kotlin.collections.ArrayList
|
|
33
|
+
import kotlin.coroutines.resume
|
|
34
|
+
import kotlin.coroutines.resumeWithException
|
|
35
|
+
import kotlin.coroutines.suspendCoroutine
|
|
30
36
|
|
|
31
37
|
object HMSHelper {
|
|
32
38
|
fun areAllRequiredKeysAvailable(
|
|
@@ -105,14 +111,35 @@ object HMSHelper {
|
|
|
105
111
|
return null
|
|
106
112
|
}
|
|
107
113
|
|
|
108
|
-
fun getRemotePeerFromPeerId(
|
|
114
|
+
suspend fun getRemotePeerFromPeerId(
|
|
109
115
|
peerId: String?,
|
|
110
|
-
|
|
116
|
+
hmsSDK: HMSSDK?,
|
|
111
117
|
): HMSRemotePeer? {
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
return suspendCoroutine {
|
|
119
|
+
val room = hmsSDK?.getRoom()
|
|
120
|
+
|
|
121
|
+
if (peerId != null && room != null) {
|
|
122
|
+
val peerFromRoom = HmsUtilities.getPeer(peerId, room) as? HMSRemotePeer
|
|
123
|
+
if (peerFromRoom != null) {
|
|
124
|
+
it.resume(peerFromRoom)
|
|
125
|
+
} else {
|
|
126
|
+
val limit = 1
|
|
127
|
+
val peerIds = arrayListOf(peerId)
|
|
128
|
+
val peerListIterator = hmsSDK.getPeerListIterator(PeerListIteratorOptions(limit = limit, byPeerIds = peerIds))
|
|
129
|
+
peerListIterator.next(object : PeerListResultListener {
|
|
130
|
+
override fun onError(error: HMSException) {
|
|
131
|
+
it.resumeWithException(error)
|
|
132
|
+
}
|
|
133
|
+
override fun onSuccess(result: ArrayList<HMSPeer>) {
|
|
134
|
+
val peerFromIterator = result[0]
|
|
135
|
+
it.resume(peerFromIterator as? HMSRemotePeer)
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
it.resume(null)
|
|
141
|
+
}
|
|
114
142
|
}
|
|
115
|
-
return null
|
|
116
143
|
}
|
|
117
144
|
|
|
118
145
|
fun getRolesFromRoleNames(
|
|
@@ -668,4 +695,15 @@ object HMSHelper {
|
|
|
668
695
|
}
|
|
669
696
|
return HMSAudioManager.AudioDevice.SPEAKER_PHONE
|
|
670
697
|
}
|
|
698
|
+
|
|
699
|
+
fun getPeerListIteratorOptions(data: ReadableMap?): PeerListIteratorOptions? {
|
|
700
|
+
if (data == null) {
|
|
701
|
+
return null
|
|
702
|
+
}
|
|
703
|
+
val limit = data.getInt("limit")
|
|
704
|
+
val role = data.getString("byRoleName")
|
|
705
|
+
val peerIds = data.getArray("byPeerIds")?.toArrayList() as? ArrayList<String>
|
|
706
|
+
|
|
707
|
+
return PeerListIteratorOptions(null, role, peerIds, limit)
|
|
708
|
+
}
|
|
671
709
|
}
|
|
@@ -5,6 +5,7 @@ import android.app.Application
|
|
|
5
5
|
import android.app.PendingIntent
|
|
6
6
|
import android.content.Intent
|
|
7
7
|
import android.content.pm.PackageManager
|
|
8
|
+
import android.content.res.Configuration
|
|
8
9
|
import android.os.Build
|
|
9
10
|
import android.os.Bundle
|
|
10
11
|
import android.util.Rational
|
|
@@ -13,6 +14,7 @@ import com.facebook.react.bridge.*
|
|
|
13
14
|
import com.facebook.react.module.annotations.ReactModule
|
|
14
15
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
15
16
|
import com.reactnativehmssdk.HMSManager.Companion.REACT_CLASS
|
|
17
|
+
import live.hms.video.error.HMSException
|
|
16
18
|
import java.util.UUID
|
|
17
19
|
|
|
18
20
|
@ReactModule(name = REACT_CLASS)
|
|
@@ -21,6 +23,32 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
21
23
|
companion object {
|
|
22
24
|
const val REACT_CLASS = "HMSManager"
|
|
23
25
|
var hmsCollection = mutableMapOf<String, HMSRNSDK>()
|
|
26
|
+
|
|
27
|
+
var reactAppContext: ReactApplicationContext? = null
|
|
28
|
+
var pipParamConfig: PipParamConfig? = null;
|
|
29
|
+
var pipParamsUntyped: Any? = null;
|
|
30
|
+
var emitter: DeviceEventManagerModule.RCTDeviceEventEmitter? = null
|
|
31
|
+
|
|
32
|
+
fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) {
|
|
33
|
+
emitter?.let {
|
|
34
|
+
val data = Arguments.createMap()
|
|
35
|
+
data.putBoolean("isInPictureInPictureMode", isInPictureInPictureMode)
|
|
36
|
+
|
|
37
|
+
it.emit("ON_PIP_MODE_CHANGED", data)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fun onUserLeaveHint() {
|
|
42
|
+
val pipParams = pipParamsUntyped
|
|
43
|
+
if (
|
|
44
|
+
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
|
|
45
|
+
Build.VERSION.SDK_INT < Build.VERSION_CODES.S &&
|
|
46
|
+
pipParamConfig?.autoEnterPipMode == true &&
|
|
47
|
+
pipParams is android.app.PictureInPictureParams
|
|
48
|
+
) {
|
|
49
|
+
reactAppContext?.currentActivity?.enterPictureInPictureMode(pipParams)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
24
52
|
}
|
|
25
53
|
|
|
26
54
|
override fun getName(): String {
|
|
@@ -31,6 +59,21 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
31
59
|
return hmsCollection
|
|
32
60
|
}
|
|
33
61
|
|
|
62
|
+
private fun setupPip() {
|
|
63
|
+
if (emitter == null) {
|
|
64
|
+
reactAppContext = reactApplicationContext
|
|
65
|
+
|
|
66
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
67
|
+
currentActivity?.let {
|
|
68
|
+
pipReceiver?.register(it)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
emitter = reactApplicationContext
|
|
73
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
34
77
|
// Example method
|
|
35
78
|
// See https://reactnative.dev/docs/native-modules-android
|
|
36
79
|
@ReactMethod
|
|
@@ -38,22 +81,26 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
38
81
|
data: ReadableMap?,
|
|
39
82
|
callback: Promise?,
|
|
40
83
|
) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
84
|
+
try {
|
|
85
|
+
val hasItem = hmsCollection.containsKey("12345")
|
|
86
|
+
if (hasItem) {
|
|
87
|
+
val uuid = UUID.randomUUID()
|
|
88
|
+
val randomUUIDString = uuid.toString()
|
|
89
|
+
val sdkInstance = HMSRNSDK(data, this, randomUUIDString, reactApplicationContext)
|
|
46
90
|
|
|
47
|
-
|
|
91
|
+
hmsCollection[randomUUIDString] = sdkInstance
|
|
48
92
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
93
|
+
callback?.resolve(randomUUIDString)
|
|
94
|
+
} else {
|
|
95
|
+
val randomUUIDString = "12345"
|
|
96
|
+
val sdkInstance = HMSRNSDK(data, this, randomUUIDString, reactApplicationContext)
|
|
53
97
|
|
|
54
|
-
|
|
98
|
+
hmsCollection[randomUUIDString] = sdkInstance
|
|
55
99
|
|
|
56
|
-
|
|
100
|
+
callback?.resolve(randomUUIDString)
|
|
101
|
+
}
|
|
102
|
+
} catch (e: HMSException) {
|
|
103
|
+
callback?.reject(e.code.toString(), e.description)
|
|
57
104
|
}
|
|
58
105
|
}
|
|
59
106
|
|
|
@@ -254,10 +301,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
254
301
|
}
|
|
255
302
|
|
|
256
303
|
@ReactMethod
|
|
257
|
-
fun setPlaybackAllowed(data: ReadableMap) {
|
|
304
|
+
fun setPlaybackAllowed(data: ReadableMap, callback: Promise?) {
|
|
258
305
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
259
306
|
|
|
260
|
-
hms?.setPlaybackAllowed(data)
|
|
307
|
+
hms?.setPlaybackAllowed(data, callback)
|
|
261
308
|
}
|
|
262
309
|
|
|
263
310
|
@ReactMethod
|
|
@@ -301,10 +348,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
301
348
|
}
|
|
302
349
|
|
|
303
350
|
@ReactMethod
|
|
304
|
-
fun setVolume(data: ReadableMap) {
|
|
351
|
+
fun setVolume(data: ReadableMap, callback: Promise?) {
|
|
305
352
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
306
353
|
|
|
307
|
-
hms?.setVolume(data)
|
|
354
|
+
hms?.setVolume(data, callback)
|
|
308
355
|
}
|
|
309
356
|
|
|
310
357
|
@ReactMethod
|
|
@@ -318,10 +365,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
318
365
|
}
|
|
319
366
|
|
|
320
367
|
@ReactMethod
|
|
321
|
-
fun setPlaybackForAllAudio(data: ReadableMap) {
|
|
368
|
+
fun setPlaybackForAllAudio(data: ReadableMap, callback: Promise?) {
|
|
322
369
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
323
370
|
|
|
324
|
-
hms?.setPlaybackForAllAudio(data)
|
|
371
|
+
hms?.setPlaybackForAllAudio(data, callback)
|
|
325
372
|
}
|
|
326
373
|
|
|
327
374
|
@ReactMethod
|
|
@@ -533,17 +580,17 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
533
580
|
}
|
|
534
581
|
|
|
535
582
|
@ReactMethod
|
|
536
|
-
fun switchAudioOutput(data: ReadableMap) {
|
|
583
|
+
fun switchAudioOutput(data: ReadableMap, callback: Promise?) {
|
|
537
584
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
538
585
|
|
|
539
|
-
hms?.switchAudioOutput(data)
|
|
586
|
+
hms?.switchAudioOutput(data, callback)
|
|
540
587
|
}
|
|
541
588
|
|
|
542
589
|
@ReactMethod
|
|
543
|
-
fun setAudioMode(data: ReadableMap) {
|
|
590
|
+
fun setAudioMode(data: ReadableMap, callback: Promise?) {
|
|
544
591
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
545
592
|
|
|
546
|
-
hms?.setAudioMode(data)
|
|
593
|
+
hms?.setAudioMode(data, callback)
|
|
547
594
|
}
|
|
548
595
|
|
|
549
596
|
@ReactMethod
|
|
@@ -743,7 +790,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
743
790
|
}
|
|
744
791
|
// endregion
|
|
745
792
|
|
|
746
|
-
|
|
793
|
+
data class PipParamConfig(
|
|
794
|
+
val autoEnterPipMode: Boolean,
|
|
747
795
|
val aspectRatio: Pair<Int, Int>?,
|
|
748
796
|
val showEndButton: Boolean,
|
|
749
797
|
val showVideoButton: Boolean,
|
|
@@ -767,6 +815,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
767
815
|
}
|
|
768
816
|
|
|
769
817
|
try {
|
|
818
|
+
setupPip()
|
|
819
|
+
|
|
770
820
|
PipActionReceiver.sdkIdForPIP = data.getString("id")
|
|
771
821
|
|
|
772
822
|
when (action) {
|
|
@@ -774,8 +824,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
774
824
|
val result = isPipModeSupported()
|
|
775
825
|
promise?.resolve(result)
|
|
776
826
|
}
|
|
777
|
-
"
|
|
778
|
-
val result =
|
|
827
|
+
"enterPipMode" -> {
|
|
828
|
+
val result = enterPipMode(data)
|
|
779
829
|
promise?.resolve(result)
|
|
780
830
|
}
|
|
781
831
|
"setPictureInPictureParams" -> {
|
|
@@ -807,10 +857,9 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
807
857
|
)
|
|
808
858
|
}
|
|
809
859
|
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
// }
|
|
860
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
861
|
+
it.setAutoEnterEnabled(config.autoEnterPipMode)
|
|
862
|
+
}
|
|
814
863
|
|
|
815
864
|
// region Setting RemoteActions on PictureInPictureParams
|
|
816
865
|
val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
|
|
@@ -897,14 +946,12 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
897
946
|
return null
|
|
898
947
|
}
|
|
899
948
|
|
|
949
|
+
var autoEnterPipMode = false
|
|
900
950
|
var aspectRatio: Pair<Int, Int> = Pair(16, 9)
|
|
901
951
|
var showEndButton = false
|
|
902
952
|
var showAudioButton = false
|
|
903
953
|
var showVideoButton = false
|
|
904
954
|
|
|
905
|
-
// TODO:= We need compileSdkVersion >= 31 for autoEnterEnabled
|
|
906
|
-
// var autoEnterEnabled: Boolean? = null;
|
|
907
|
-
|
|
908
955
|
if (data !== null) {
|
|
909
956
|
if (data.hasKey("aspectRatio")) {
|
|
910
957
|
val aspectRatioArray = data.getArray("aspectRatio")
|
|
@@ -940,17 +987,17 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
940
987
|
showVideoButton = data.getBoolean("videoButton")
|
|
941
988
|
}
|
|
942
989
|
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
// }
|
|
990
|
+
if (data.hasKey("autoEnterPipMode")) {
|
|
991
|
+
val autoEnterPipModeType = data.getType("autoEnterPipMode")
|
|
992
|
+
|
|
993
|
+
if (autoEnterPipModeType === ReadableType.Boolean) {
|
|
994
|
+
autoEnterPipMode = data.getBoolean("autoEnterPipMode")
|
|
995
|
+
}
|
|
996
|
+
}
|
|
951
997
|
}
|
|
952
998
|
|
|
953
999
|
return PipParamConfig(
|
|
1000
|
+
autoEnterPipMode = autoEnterPipMode,
|
|
954
1001
|
aspectRatio = aspectRatio,
|
|
955
1002
|
showEndButton = showEndButton,
|
|
956
1003
|
showAudioButton = showAudioButton,
|
|
@@ -975,6 +1022,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
975
1022
|
if (pipParams !is android.app.PictureInPictureParams) {
|
|
976
1023
|
return false
|
|
977
1024
|
}
|
|
1025
|
+
|
|
1026
|
+
HMSManager.pipParamConfig = pipParamConfig
|
|
1027
|
+
HMSManager.pipParamsUntyped = pipParams
|
|
1028
|
+
|
|
978
1029
|
activity.setPictureInPictureParams(pipParams)
|
|
979
1030
|
return true
|
|
980
1031
|
} catch (e: Exception) {
|
|
@@ -991,7 +1042,7 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
991
1042
|
}
|
|
992
1043
|
|
|
993
1044
|
@RequiresApi(Build.VERSION_CODES.O)
|
|
994
|
-
private fun
|
|
1045
|
+
private fun enterPipMode(data: ReadableMap): Boolean {
|
|
995
1046
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
|
996
1047
|
return false
|
|
997
1048
|
}
|
|
@@ -1007,12 +1058,11 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
1007
1058
|
if (pipParams !is android.app.PictureInPictureParams) {
|
|
1008
1059
|
return false
|
|
1009
1060
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
return entered
|
|
1061
|
+
|
|
1062
|
+
HMSManager.pipParamConfig = pipParamConfig
|
|
1063
|
+
HMSManager.pipParamsUntyped = pipParams
|
|
1064
|
+
|
|
1065
|
+
return activity.enterPictureInPictureMode(pipParams)
|
|
1016
1066
|
} catch (e: Exception) {
|
|
1017
1067
|
throw e
|
|
1018
1068
|
}
|
|
@@ -1128,6 +1178,56 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
1128
1178
|
hms?.getRoomLayout(data, promise)
|
|
1129
1179
|
}
|
|
1130
1180
|
|
|
1181
|
+
@ReactMethod
|
|
1182
|
+
fun raiseLocalPeerHand(
|
|
1183
|
+
data: ReadableMap,
|
|
1184
|
+
promise: Promise?,
|
|
1185
|
+
) {
|
|
1186
|
+
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
1187
|
+
hms?.raiseLocalPeerHand(data, promise)
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
@ReactMethod
|
|
1191
|
+
fun lowerLocalPeerHand(
|
|
1192
|
+
data: ReadableMap,
|
|
1193
|
+
promise: Promise?,
|
|
1194
|
+
) {
|
|
1195
|
+
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
1196
|
+
hms?.lowerLocalPeerHand(data, promise)
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
fun lowerRemotePeerHand(
|
|
1200
|
+
data: ReadableMap,
|
|
1201
|
+
promise: Promise?,
|
|
1202
|
+
) {
|
|
1203
|
+
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
1204
|
+
hms?.lowerRemotePeerHand(data, promise)
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
1208
|
+
fun getPeerListIterator(data: ReadableMap): WritableMap? {
|
|
1209
|
+
val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
|
|
1210
|
+
return hms.getPeerListIterator(data)
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
@ReactMethod
|
|
1214
|
+
fun peerListIteratorHasNext(
|
|
1215
|
+
data: ReadableMap,
|
|
1216
|
+
promise: Promise?,
|
|
1217
|
+
) {
|
|
1218
|
+
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
1219
|
+
hms?.peerListIteratorHasNext(data, promise)
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
@ReactMethod
|
|
1223
|
+
fun peerListIteratorNext(
|
|
1224
|
+
data: ReadableMap,
|
|
1225
|
+
promise: Promise?,
|
|
1226
|
+
) {
|
|
1227
|
+
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
1228
|
+
hms?.peerListIteratorNext(data, promise)
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1131
1231
|
fun emitEvent(
|
|
1132
1232
|
event: String,
|
|
1133
1233
|
data: WritableMap,
|