@100mslive/react-native-hms 1.5.0 → 1.6.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/src/main/java/com/reactnativehmssdk/HMSManager.kt +52 -24
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +245 -62
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +15 -6
- package/ios/HMSConstants.swift +3 -1
- package/ios/HMSDecoder.swift +1 -1
- package/ios/HMSHelper.swift +44 -7
- package/ios/HMSManager.m +8 -0
- package/ios/HMSManager.swift +35 -1
- package/ios/HMSRNSDK.swift +268 -38
- package/lib/commonjs/classes/HMSAudioTrackSettings.js +14 -0
- package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +2 -1
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +13 -0
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +50 -0
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSSessionStore.js +173 -0
- package/lib/commonjs/classes/HMSSessionStore.js.map +1 -0
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +8 -0
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +5 -0
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/emitter/EventEmitter.js +162 -0
- package/lib/commonjs/utils/emitter/EventEmitter.js.map +1 -0
- package/lib/commonjs/utils/emitter/_EmitterSubscription.js +46 -0
- package/lib/commonjs/utils/emitter/_EmitterSubscription.js.map +1 -0
- package/lib/commonjs/utils/emitter/_EventSubscription.js +36 -0
- package/lib/commonjs/utils/emitter/_EventSubscription.js.map +1 -0
- package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js +90 -0
- package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js.map +1 -0
- package/lib/commonjs/utils/index.js +17 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/module/classes/HMSAudioTrackSettings.js +14 -0
- package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +2 -1
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSIOSAudioMode.js +6 -0
- package/lib/module/classes/HMSIOSAudioMode.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +50 -0
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSSessionStore.js +166 -0
- package/lib/module/classes/HMSSessionStore.js.map +1 -0
- package/lib/module/classes/HMSUpdateListenerActions.js +8 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +5 -0
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/emitter/EventEmitter.js +151 -0
- package/lib/module/utils/emitter/EventEmitter.js.map +1 -0
- package/lib/module/utils/emitter/_EmitterSubscription.js +39 -0
- package/lib/module/utils/emitter/_EmitterSubscription.js.map +1 -0
- package/lib/module/utils/emitter/_EventSubscription.js +29 -0
- package/lib/module/utils/emitter/_EventSubscription.js.map +1 -0
- package/lib/module/utils/emitter/_EventSubscriptionVendor.js +83 -0
- package/lib/module/utils/emitter/_EventSubscriptionVendor.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +14 -0
- package/lib/typescript/classes/HMSIOSAudioMode.d.ts +4 -0
- package/lib/typescript/classes/HMSSDK.d.ts +16 -0
- package/lib/typescript/classes/HMSSessionStore.d.ts +63 -0
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +9 -1
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +5 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/utils/emitter/EventEmitter.d.ts +91 -0
- package/lib/typescript/utils/emitter/_EmitterSubscription.d.ts +29 -0
- package/lib/typescript/utils/emitter/_EventSubscription.d.ts +19 -0
- package/lib/typescript/utils/emitter/_EventSubscriptionVendor.d.ts +44 -0
- package/lib/typescript/utils/index.d.ts +1 -0
- package/package.json +21 -2
- package/sdk-versions.json +2 -2
- package/src/classes/HMSAudioTrackSettings.ts +16 -0
- package/src/classes/HMSEncoder.ts +1 -0
- package/src/classes/HMSIOSAudioMode.ts +4 -0
- package/src/classes/HMSSDK.tsx +70 -4
- package/src/classes/HMSSessionStore.ts +209 -0
- package/src/classes/HMSUpdateListenerActions.ts +8 -0
- package/src/classes/HMSVideoTrackSettings.ts +5 -0
- package/src/index.ts +5 -0
- package/src/utils/emitter/EventEmitter.ts +160 -0
- package/src/utils/emitter/_EmitterSubscription.ts +44 -0
- package/src/utils/emitter/_EventSubscription.ts +28 -0
- package/src/utils/emitter/_EventSubscriptionVendor.ts +89 -0
- package/src/utils/index.ts +1 -0
|
@@ -3,6 +3,7 @@ package com.reactnativehmssdk
|
|
|
3
3
|
import android.annotation.SuppressLint
|
|
4
4
|
import android.content.Context
|
|
5
5
|
import android.os.Build
|
|
6
|
+
import android.util.Log
|
|
6
7
|
import android.view.LayoutInflater
|
|
7
8
|
import android.widget.FrameLayout
|
|
8
9
|
import androidx.annotation.RequiresApi
|
|
@@ -56,12 +57,20 @@ class HMSView(context: ReactContext) : FrameLayout(context) {
|
|
|
56
57
|
|
|
57
58
|
override fun onAttachedToWindow() {
|
|
58
59
|
super.onAttachedToWindow()
|
|
59
|
-
|
|
60
|
-
if
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
|
|
61
|
+
videoTrack?.let { // Safe Call Operator to check if videoTrack is not null
|
|
62
|
+
hmsVideoView.addTrack(it) // add the videoTrack to the hmsVideoView
|
|
63
|
+
if (!scaleTypeApplied) { // check if the scaleTypeApplied flag is false
|
|
64
|
+
if (currentScaleType != RendererCommon.ScalingType.SCALE_ASPECT_FILL) { // check if the currentScaleType is not SCALE_ASPECT_FILL
|
|
65
|
+
onReceiveNativeEvent() // call the onReceiveNativeEvent function
|
|
66
|
+
}
|
|
67
|
+
scaleTypeApplied = true // set the scaleTypeApplied flag to true
|
|
63
68
|
}
|
|
64
|
-
|
|
69
|
+
} ?: run { // Elvis Operator to handle the case when videoTrack is null
|
|
70
|
+
Log.e(
|
|
71
|
+
"HMSView",
|
|
72
|
+
"HMSView attached to window, but it's videoTrack is null",
|
|
73
|
+
) // log an error message
|
|
65
74
|
}
|
|
66
75
|
}
|
|
67
76
|
|
|
@@ -101,7 +110,7 @@ class HMSView(context: ReactContext) : FrameLayout(context) {
|
|
|
101
110
|
id: String?,
|
|
102
111
|
trackId: String?,
|
|
103
112
|
hmsCollection: MutableMap<String, HMSRNSDK>,
|
|
104
|
-
mirror: Boolean
|
|
113
|
+
mirror: Boolean?,
|
|
105
114
|
) {
|
|
106
115
|
if (id != null) {
|
|
107
116
|
sdkId = id
|
package/ios/HMSConstants.swift
CHANGED
|
@@ -16,7 +16,7 @@ struct HMSConstants {
|
|
|
16
16
|
static let ON_PEER_UPDATE = "3"
|
|
17
17
|
static let ON_TRACK_UPDATE = "ON_TRACK_UPDATE"
|
|
18
18
|
static let ON_ROLE_CHANGE_REQUEST = "ON_ROLE_CHANGE_REQUEST"
|
|
19
|
-
static let ON_CHANGE_TRACK_STATE_REQUEST = "ON_CHANGE_TRACK_STATE_REQUEST"
|
|
19
|
+
static let ON_CHANGE_TRACK_STATE_REQUEST = "ON_CHANGE_TRACK_STATE_REQUEST"
|
|
20
20
|
static let ON_REMOVED_FROM_ROOM = "ON_REMOVED_FROM_ROOM"
|
|
21
21
|
static let ON_ERROR = "ON_ERROR"
|
|
22
22
|
static let ON_MESSAGE = "ON_MESSAGE"
|
|
@@ -28,4 +28,6 @@ struct HMSConstants {
|
|
|
28
28
|
static let ON_LOCAL_VIDEO_STATS = "ON_LOCAL_VIDEO_STATS"
|
|
29
29
|
static let ON_REMOTE_AUDIO_STATS = "ON_REMOTE_AUDIO_STATS"
|
|
30
30
|
static let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
|
|
31
|
+
static let ON_SESSION_STORE_AVAILABLE = "ON_SESSION_STORE_AVAILABLE"
|
|
32
|
+
static let ON_SESSION_STORE_CHANGED = "ON_SESSION_STORE_CHANGED"
|
|
31
33
|
}
|
package/ios/HMSDecoder.swift
CHANGED
|
@@ -278,7 +278,7 @@ class HMSDecoder: NSObject {
|
|
|
278
278
|
return ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "type": type, "kind": type]
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
|
|
281
|
+
static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any?] {
|
|
282
282
|
|
|
283
283
|
guard let settings = hmsAudioTrackSettings else { return [String: Any]() }
|
|
284
284
|
|
package/ios/HMSHelper.swift
CHANGED
|
@@ -172,15 +172,21 @@ class HMSHelper: NSObject {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
static func getLocalAudioSettings(_ settings: NSDictionary?, _ hms: HMSSDK?, _ delegate: HMSManager?, _ id: String) -> HMSAudioTrackSettings? {
|
|
175
|
-
|
|
175
|
+
|
|
176
|
+
guard let settings = settings
|
|
177
|
+
else {
|
|
178
|
+
print(#function, "No Local Audio Settings passed.")
|
|
176
179
|
return nil
|
|
177
180
|
}
|
|
178
|
-
|
|
181
|
+
|
|
182
|
+
let initialState = settings.value(forKey: "initialState") as? String
|
|
179
183
|
let initialStateEncoded = HMSHelper.getHMSTrackSettingsInitState(initialState)
|
|
180
184
|
|
|
185
|
+
let audioMode = getAudioMode(from: settings["audioMode"] as? String)
|
|
186
|
+
|
|
181
187
|
if #available(iOS 13.0, *) {
|
|
182
188
|
var audioMixerSourceMap: [String: HMSAudioNode]?
|
|
183
|
-
if let playerNode = settings
|
|
189
|
+
if let playerNode = settings.value(forKey: "audioSource") as? [String] {
|
|
184
190
|
audioMixerSourceMap = [String: HMSAudioNode]()
|
|
185
191
|
for node in playerNode {
|
|
186
192
|
if audioMixerSourceMap?[node] == nil {
|
|
@@ -190,7 +196,7 @@ class HMSHelper: NSObject {
|
|
|
190
196
|
do {
|
|
191
197
|
audioMixerSourceMap?["screen_broadcast_audio_receiver_node"] = try hms?.screenBroadcastAudioReceiverNode()
|
|
192
198
|
} catch {
|
|
193
|
-
delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
199
|
+
delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
|
|
194
200
|
}
|
|
195
201
|
} else {
|
|
196
202
|
audioMixerSourceMap?[node] = HMSAudioFilePlayerNode()
|
|
@@ -203,15 +209,33 @@ class HMSHelper: NSObject {
|
|
|
203
209
|
do {
|
|
204
210
|
self.audioMixerSourceHashMap = audioMixerSourceMap
|
|
205
211
|
let audioMixerSource = try HMSAudioMixerSource(nodes: audioMixerSourceMap.values.map {$0})
|
|
206
|
-
|
|
212
|
+
|
|
213
|
+
return HMSAudioTrackSettings.build { builder in
|
|
214
|
+
|
|
215
|
+
builder.initialMuteState = initialStateEncoded
|
|
216
|
+
|
|
217
|
+
builder.audioSource = audioMixerSource
|
|
218
|
+
|
|
219
|
+
if let audioMode = audioMode {
|
|
220
|
+
builder.audioMode = audioMode
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
207
224
|
} catch {
|
|
208
|
-
delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
|
|
225
|
+
delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
|
|
209
226
|
return nil
|
|
210
227
|
}
|
|
211
228
|
}
|
|
212
229
|
}
|
|
213
230
|
|
|
214
|
-
return HMSAudioTrackSettings
|
|
231
|
+
return HMSAudioTrackSettings.build { builder in
|
|
232
|
+
|
|
233
|
+
builder.initialMuteState = initialStateEncoded
|
|
234
|
+
|
|
235
|
+
if let audioMode = audioMode {
|
|
236
|
+
builder.audioMode = audioMode
|
|
237
|
+
}
|
|
238
|
+
}
|
|
215
239
|
}
|
|
216
240
|
|
|
217
241
|
static func getAudioMixerSourceMap() -> [String: HMSAudioNode]? {
|
|
@@ -318,4 +342,17 @@ class HMSHelper: NSObject {
|
|
|
318
342
|
}
|
|
319
343
|
return nil
|
|
320
344
|
}
|
|
345
|
+
|
|
346
|
+
private static func getAudioMode(from mode: String?) -> HMSAudioMode? {
|
|
347
|
+
switch mode {
|
|
348
|
+
case "voice":
|
|
349
|
+
return .voice
|
|
350
|
+
|
|
351
|
+
case "music":
|
|
352
|
+
return .music
|
|
353
|
+
|
|
354
|
+
default:
|
|
355
|
+
return nil
|
|
356
|
+
}
|
|
357
|
+
}
|
|
321
358
|
}
|
package/ios/HMSManager.m
CHANGED
|
@@ -72,4 +72,12 @@ RCT_EXTERN_METHOD(setVideoTrackLayer: (NSDictionary) data :(RCTPromiseResolveBlo
|
|
|
72
72
|
#pragma mark - Advanced Camera Controls
|
|
73
73
|
|
|
74
74
|
RCT_EXTERN_METHOD(captureImageAtMaxSupportedResolution: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
75
|
+
|
|
76
|
+
#pragma mark - Session Store
|
|
77
|
+
|
|
78
|
+
RCT_EXTERN_METHOD(getSessionMetadataForKey: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
79
|
+
RCT_EXTERN_METHOD(setSessionMetadataForKey: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
80
|
+
RCT_EXTERN_METHOD(addKeyChangeListener: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
81
|
+
RCT_EXTERN_METHOD(removeKeyChangeListener: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
|
|
82
|
+
|
|
75
83
|
@end
|
package/ios/HMSManager.swift
CHANGED
|
@@ -36,7 +36,7 @@ class HMSManager: RCTEventEmitter {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
override func supportedEvents() -> [String]! {
|
|
39
|
-
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED]
|
|
39
|
+
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED]
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// MARK: - HMS SDK Delegate Callbacks
|
|
@@ -551,4 +551,38 @@ class HMSManager: RCTEventEmitter {
|
|
|
551
551
|
|
|
552
552
|
hms?.captureImageAtMaxSupportedResolution(data, resolve, reject)
|
|
553
553
|
}
|
|
554
|
+
|
|
555
|
+
// MARK: - Session Store
|
|
556
|
+
|
|
557
|
+
@objc
|
|
558
|
+
func getSessionMetadataForKey(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
559
|
+
|
|
560
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
561
|
+
|
|
562
|
+
hms?.getSessionMetadataForKey(data, resolve, reject)
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@objc
|
|
566
|
+
func setSessionMetadataForKey(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
567
|
+
|
|
568
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
569
|
+
|
|
570
|
+
hms?.setSessionMetadataForKey(data, resolve, reject)
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
@objc
|
|
574
|
+
func addKeyChangeListener(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
575
|
+
|
|
576
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
577
|
+
|
|
578
|
+
hms?.addKeyChangeListener(data, resolve, reject)
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
@objc
|
|
582
|
+
func removeKeyChangeListener(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
583
|
+
|
|
584
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
585
|
+
|
|
586
|
+
hms?.removeKeyChangeListener(data, resolve, reject)
|
|
587
|
+
}
|
|
554
588
|
}
|