@100mslive/react-native-hms 1.10.5 → 1.10.6-beta.1
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/local.properties +1 -8
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +14 -0
- package/ios/HMSDecoder.swift +1 -1
- package/ios/HMSHelper.swift +28 -2
- package/ios/HMSManager.m +22 -0
- package/ios/HMSManager.swift +46 -0
- package/ios/HMSRNInteractivityCenter.swift +1 -1
- package/ios/HMSRNSDK.swift +201 -3
- package/lib/commonjs/classes/HMSSessionStore.js +1 -1
- package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +3 -2
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSSessionStore.js +1 -1
- package/lib/module/classes/HMSSessionStore.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +3 -2
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +11 -0
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSSessionStore.ts +0 -3
- package/src/classes/HMSVideoTrackSettings.ts +15 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
package/android/local.properties
CHANGED
|
@@ -1,8 +1 @@
|
|
|
1
|
-
|
|
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
|
|
1
|
+
sdk.dir=/Users/yogesh/Library/Android/sdk
|
|
@@ -1607,6 +1607,20 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
1607
1607
|
}
|
|
1608
1608
|
// endregion
|
|
1609
1609
|
|
|
1610
|
+
// region Warning on JS side
|
|
1611
|
+
@ReactMethod
|
|
1612
|
+
fun addListener(eventName: String) {
|
|
1613
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
1614
|
+
// Fixes Warning - `new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
@ReactMethod
|
|
1618
|
+
fun removeListeners(count: Int) {
|
|
1619
|
+
// Keep: Required for RN built in Event Emitter Calls.
|
|
1620
|
+
// Fixes Warning - `new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.
|
|
1621
|
+
}
|
|
1622
|
+
// endregion
|
|
1623
|
+
|
|
1610
1624
|
// region ActivityLifecycleCallbacks
|
|
1611
1625
|
|
|
1612
1626
|
override fun onActivityCreated(
|
package/ios/HMSDecoder.swift
CHANGED
|
@@ -461,7 +461,7 @@ class HMSDecoder: NSObject {
|
|
|
461
461
|
"unmute": permissions.unmute ?? false,
|
|
462
462
|
"changeRole": permissions.changeRole ?? false,
|
|
463
463
|
"pollRead": permissions.pollRead ?? false,
|
|
464
|
-
"pollWrite": permissions.pollWrite ?? false
|
|
464
|
+
"pollWrite": permissions.pollWrite ?? false
|
|
465
465
|
]
|
|
466
466
|
if let whiteboardPermissions = permissions.whiteboard {
|
|
467
467
|
permissionsDict["whiteboard"] = [
|
package/ios/HMSHelper.swift
CHANGED
|
@@ -167,7 +167,7 @@ class HMSHelper: NSObject {
|
|
|
167
167
|
isPrebuilt: isPrebuilt)
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
static func getLocalVideoSettings(_ settings: NSDictionary?) -> HMSVideoTrackSettings? {
|
|
170
|
+
static func getLocalVideoSettings(_ settings: NSDictionary?, _ videoPlugin: HMSVideoPlugin?) -> HMSVideoTrackSettings? {
|
|
171
171
|
if settings === nil {
|
|
172
172
|
return nil
|
|
173
173
|
}
|
|
@@ -180,6 +180,7 @@ class HMSHelper: NSObject {
|
|
|
180
180
|
let cameraFacingEncoded = HMSHelper.getCameraFacing(cameraFacing)
|
|
181
181
|
let initialState = settings?.value(forKey: "initialState") as? String
|
|
182
182
|
let initialStateEncoded = HMSHelper.getHMSTrackSettingsInitState(initialState)
|
|
183
|
+
let videoPlugins: [HMSVideoPlugin]? = if let videoPlugin = videoPlugin { [videoPlugin] } else { nil }
|
|
183
184
|
let hmsTrackSettings = HMSVideoTrackSettings(codec: codec,
|
|
184
185
|
resolution: resolution,
|
|
185
186
|
maxBitrate: maxBitrate,
|
|
@@ -188,7 +189,7 @@ class HMSHelper: NSObject {
|
|
|
188
189
|
simulcastSettings: nil,
|
|
189
190
|
trackDescription: trackDescription,
|
|
190
191
|
initialMuteState: initialStateEncoded,
|
|
191
|
-
videoPlugins:
|
|
192
|
+
videoPlugins: videoPlugins)
|
|
192
193
|
return hmsTrackSettings
|
|
193
194
|
}
|
|
194
195
|
|
|
@@ -291,6 +292,31 @@ class HMSHelper: NSObject {
|
|
|
291
292
|
return nil
|
|
292
293
|
}
|
|
293
294
|
|
|
295
|
+
static func getHMSVideoPlugin(_ videoPluginData: NSDictionary?) -> HMSVideoPlugin? {
|
|
296
|
+
guard let videoPluginDict = videoPluginData else {
|
|
297
|
+
print(#function, "No Video Plugin data passed!")
|
|
298
|
+
return nil
|
|
299
|
+
}
|
|
300
|
+
guard let videoPluginType = videoPluginDict.value(forKey: "type") as? String else {
|
|
301
|
+
print(#function, "No HMSVideoPlugin `type` passed!")
|
|
302
|
+
return nil
|
|
303
|
+
}
|
|
304
|
+
switch videoPluginType {
|
|
305
|
+
case "HMSVirtualBackgroundPlugin":
|
|
306
|
+
if #available(iOS 15.0, *) {
|
|
307
|
+
return HMSVirtualBackgroundPlugin(backgroundImage: nil, blurRadius: 100)
|
|
308
|
+
} else {
|
|
309
|
+
print(#function, "HMSVirtualBackgroundPlugin is not available below iOS 15.0")
|
|
310
|
+
return nil
|
|
311
|
+
}
|
|
312
|
+
case "HMSVideoFilterPlugin":
|
|
313
|
+
return HMSVideoFilterPlugin()
|
|
314
|
+
default:
|
|
315
|
+
print(#function, "Unknown HMSVideoPlugin `type` passed!")
|
|
316
|
+
return nil
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
294
320
|
static func getAudioMixerSourceMap() -> [String: HMSAudioNode]? {
|
|
295
321
|
return self.audioMixerSourceHashMap
|
|
296
322
|
}
|
package/ios/HMSManager.m
CHANGED
|
@@ -353,6 +353,28 @@ RCT_EXTERN_METHOD(isNoiseCancellationPluginAvailable
|
|
|
353
353
|
: (RCTPromiseResolveBlock)resolve
|
|
354
354
|
: (RCTPromiseRejectBlock)reject)
|
|
355
355
|
|
|
356
|
+
#pragma mark - Noise Cancellation Plugin
|
|
357
|
+
|
|
358
|
+
RCT_EXTERN_METHOD(enableVideoPlugin
|
|
359
|
+
: (NSDictionary)data
|
|
360
|
+
: (RCTPromiseResolveBlock)resolve
|
|
361
|
+
: (RCTPromiseRejectBlock)reject)
|
|
362
|
+
|
|
363
|
+
RCT_EXTERN_METHOD(disableVideoPlugin
|
|
364
|
+
: (NSDictionary)data
|
|
365
|
+
: (RCTPromiseResolveBlock)resolve
|
|
366
|
+
: (RCTPromiseRejectBlock)reject)
|
|
367
|
+
|
|
368
|
+
RCT_EXTERN_METHOD(changeVirtualBackground
|
|
369
|
+
: (NSDictionary)data
|
|
370
|
+
: (RCTPromiseResolveBlock)resolve
|
|
371
|
+
: (RCTPromiseRejectBlock)reject)
|
|
372
|
+
|
|
373
|
+
RCT_EXTERN_METHOD(setVideoFilterParameter
|
|
374
|
+
: (NSDictionary)data
|
|
375
|
+
: (RCTPromiseResolveBlock)resolve
|
|
376
|
+
: (RCTPromiseRejectBlock)reject)
|
|
377
|
+
|
|
356
378
|
#pragma mark - Interactivity Center - Whiteboard
|
|
357
379
|
|
|
358
380
|
RCT_EXTERN_METHOD(startWhiteboard
|
package/ios/HMSManager.swift
CHANGED
|
@@ -763,6 +763,52 @@ class HMSManager: RCTEventEmitter {
|
|
|
763
763
|
rnsdk.isNoiseCancellationPluginAvailable(data, resolve, reject)
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
+
// MARK: - Video Plugin Functions
|
|
767
|
+
|
|
768
|
+
@objc
|
|
769
|
+
func enableVideoPlugin( _ data: NSDictionary,
|
|
770
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
771
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
772
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection) else {
|
|
773
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
774
|
+
return
|
|
775
|
+
}
|
|
776
|
+
rnsdk.enableVideoPlugin(data, resolve, reject)
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
@objc
|
|
780
|
+
func disableVideoPlugin(_ data: NSDictionary,
|
|
781
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
782
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
783
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection) else {
|
|
784
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
785
|
+
return
|
|
786
|
+
}
|
|
787
|
+
rnsdk.disableVideoPlugin(data, resolve, reject)
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
@objc
|
|
791
|
+
func changeVirtualBackground(_ data: NSDictionary,
|
|
792
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
793
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
794
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection) else {
|
|
795
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
796
|
+
return
|
|
797
|
+
}
|
|
798
|
+
rnsdk.changeVirtualBackground(data, resolve, reject)
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
@objc
|
|
802
|
+
func setVideoFilterParameter(_ data: NSDictionary,
|
|
803
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
804
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
805
|
+
guard let rnsdk = HMSHelper.getHms(data, hmsCollection) else {
|
|
806
|
+
reject?("6004", "HMSRNSDK instance not found!", nil)
|
|
807
|
+
return
|
|
808
|
+
}
|
|
809
|
+
rnsdk.setVideoFilterParameter(data, resolve, reject)
|
|
810
|
+
}
|
|
811
|
+
|
|
766
812
|
// MARK: - Interactivity Center - Whiteboard
|
|
767
813
|
@objc
|
|
768
814
|
func startWhiteboard(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
@@ -138,7 +138,7 @@ class HMSRNInteractivityCenter {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
// MARK: - Whiteboard Methods
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
func startWhiteboard(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
143
143
|
self.hmssdk?.interactivityCenter.startWhiteboard { success, error in
|
|
144
144
|
if let error = error {
|
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -33,6 +33,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
33
33
|
private var peerListIterators = [String: HMSPeerListIterator]()
|
|
34
34
|
private var roomMutedLocally = false
|
|
35
35
|
private var noiseCancellationPlugin: HMSNoiseCancellationPlugin?
|
|
36
|
+
private var videoFilterPlugin: HMSVideoFilterPlugin?
|
|
37
|
+
private var virtualBackgroundPlugin: HMSVideoPlugin?
|
|
36
38
|
|
|
37
39
|
// MARK: - Setup
|
|
38
40
|
init(data: NSDictionary?, delegate manager: HMSManager?, uid id: String) {
|
|
@@ -41,19 +43,42 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
41
43
|
self.id = id
|
|
42
44
|
DispatchQueue.main.async { [weak self] in
|
|
43
45
|
var noiseCancellationPlugin: HMSNoiseCancellationPlugin?
|
|
46
|
+
var videoFilterPlugin: HMSVideoFilterPlugin?
|
|
47
|
+
var virtualBackgroundPlugin: HMSVideoPlugin?
|
|
44
48
|
|
|
45
49
|
self?.hms = HMSSDK.build { sdk in
|
|
46
50
|
sdk.appGroup = data?.value(forKey: "appGroup") as? String
|
|
47
51
|
sdk.frameworkInfo = HMSHelper.getFrameworkInfo(data?.value(forKey: "frameworkInfo") as? NSDictionary)
|
|
48
|
-
let
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
let trackSettingsDict = data?.value(forKey: "trackSettings") as? NSDictionary
|
|
53
|
+
|
|
54
|
+
// Video track settings
|
|
55
|
+
let videoSettingsDict = trackSettingsDict?.value(forKey: "video") as? NSDictionary
|
|
56
|
+
let videoPluginDict = videoSettingsDict?.value(forKey: "videoPlugin") as? NSDictionary
|
|
57
|
+
let videoPlugin = HMSHelper.getHMSVideoPlugin(videoPluginDict)
|
|
58
|
+
|
|
59
|
+
if let asVideoFilterPlugin = videoPlugin as? HMSVideoFilterPlugin {
|
|
60
|
+
videoFilterPlugin = asVideoFilterPlugin
|
|
61
|
+
} else if #available(iOS 15.0, *) {
|
|
62
|
+
let asVirtualBGPlugin = videoPlugin as? HMSVirtualBackgroundPlugin
|
|
63
|
+
virtualBackgroundPlugin = asVirtualBGPlugin
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
let videoSettings = HMSHelper.getLocalVideoSettings(videoSettingsDict, videoPlugin)
|
|
67
|
+
|
|
68
|
+
// Audio track settings
|
|
69
|
+
let audioSettingsDict = trackSettingsDict?.value(forKey: "audio") as? NSDictionary
|
|
70
|
+
|
|
51
71
|
let value = audioSettingsDict?.value(forKey: "noiseCancellationPlugin") as? NSDictionary
|
|
52
72
|
noiseCancellationPlugin = HMSHelper.getHMSNoiseCancellationPlugin(value)
|
|
73
|
+
|
|
53
74
|
let audioSettings = HMSHelper.getLocalAudioSettings(audioSettingsDict, noiseCancellationPlugin, sdk, self?.delegate, id)
|
|
75
|
+
|
|
76
|
+
// Track Settings
|
|
54
77
|
sdk.trackSettings = HMSTrackSettings(videoSettings: videoSettings, audioSettings: audioSettings)
|
|
55
78
|
}
|
|
56
79
|
self?.noiseCancellationPlugin = noiseCancellationPlugin
|
|
80
|
+
self?.virtualBackgroundPlugin = virtualBackgroundPlugin
|
|
81
|
+
self?.videoFilterPlugin = videoFilterPlugin
|
|
57
82
|
if let hms = self?.hms {
|
|
58
83
|
self?.interactivity = HMSRNInteractivityCenter(
|
|
59
84
|
hmssdk: hms,
|
|
@@ -2153,6 +2178,179 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
2153
2178
|
resolve?(isAvailable)
|
|
2154
2179
|
}
|
|
2155
2180
|
|
|
2181
|
+
// MARK: - Video Plugins Functions
|
|
2182
|
+
|
|
2183
|
+
func enableVideoPlugin(_ data: NSDictionary,
|
|
2184
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
2185
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
2186
|
+
guard let videoPluginType = data.value(forKey: "type") as? String else {
|
|
2187
|
+
let errorMessage = "\(#function) HMSVideoPlugin type not passed!"
|
|
2188
|
+
reject?("6004", errorMessage, nil)
|
|
2189
|
+
return
|
|
2190
|
+
}
|
|
2191
|
+
switch videoPluginType {
|
|
2192
|
+
case "HMSVirtualBackgroundPlugin":
|
|
2193
|
+
if #available(iOS 15.0, *) {
|
|
2194
|
+
guard let virtualBackgroundPlugin = self.virtualBackgroundPlugin as? HMSVirtualBackgroundPlugin else {
|
|
2195
|
+
let errorMessage = "\(#function) Unable to cast `var virtualBackgroundPlugin` to type `HMSVirtualBackgroundPlugin`, It is \(String(describing: virtualBackgroundPlugin))"
|
|
2196
|
+
reject?("6004", errorMessage, nil)
|
|
2197
|
+
return
|
|
2198
|
+
}
|
|
2199
|
+
virtualBackgroundPlugin.activate()
|
|
2200
|
+
resolve?(true)
|
|
2201
|
+
} else {
|
|
2202
|
+
let errorMessage = "\(#function) HMSVirtualBackgroundPlugin not available below iOS 15.0"
|
|
2203
|
+
reject?("6004", errorMessage, nil)
|
|
2204
|
+
return
|
|
2205
|
+
}
|
|
2206
|
+
case "HMSVideoFilterPlugin":
|
|
2207
|
+
guard let videoFilterPlugin = self.videoFilterPlugin else {
|
|
2208
|
+
let errorMessage = "\(#function) `videoFilterPlugin` is `nil`, Make sure you are passing `HMSVideoFilterPlugin` instance to `videoTrackSettings` in `HMSSDK.build`"
|
|
2209
|
+
reject?("6004", errorMessage, nil)
|
|
2210
|
+
return
|
|
2211
|
+
}
|
|
2212
|
+
videoFilterPlugin.activate()
|
|
2213
|
+
resolve?(true)
|
|
2214
|
+
default:
|
|
2215
|
+
let errorMessage = "\(#function) Unknown HMSVideoPlugin type passed!"
|
|
2216
|
+
reject?("6004", errorMessage, nil)
|
|
2217
|
+
return
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
func disableVideoPlugin(_ data: NSDictionary,
|
|
2222
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
2223
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
2224
|
+
guard let videoPluginType = data.value(forKey: "type") as? String else {
|
|
2225
|
+
let errorMessage = "\(#function) HMSVideoPlugin `type` not passed!"
|
|
2226
|
+
reject?("6004", errorMessage, nil)
|
|
2227
|
+
return
|
|
2228
|
+
}
|
|
2229
|
+
switch videoPluginType {
|
|
2230
|
+
case "HMSVirtualBackgroundPlugin":
|
|
2231
|
+
if #available(iOS 15.0, *) {
|
|
2232
|
+
guard let virtualBackgroundPlugin = self.virtualBackgroundPlugin as? HMSVirtualBackgroundPlugin else {
|
|
2233
|
+
let errorMessage = "\(#function) Unable to cast `var virtualBackgroundPlugin` to type `HMSVirtualBackgroundPlugin`, It is \(String(describing: virtualBackgroundPlugin))"
|
|
2234
|
+
reject?("6004", errorMessage, nil)
|
|
2235
|
+
return
|
|
2236
|
+
}
|
|
2237
|
+
virtualBackgroundPlugin.deactivate()
|
|
2238
|
+
resolve?(true)
|
|
2239
|
+
} else {
|
|
2240
|
+
let errorMessage = "\(#function) HMSVirtualBackgroundPlugin not available below iOS 15.0"
|
|
2241
|
+
reject?("6004", errorMessage, nil)
|
|
2242
|
+
return
|
|
2243
|
+
}
|
|
2244
|
+
case "HMSVideoFilterPlugin":
|
|
2245
|
+
guard let videoFilterPlugin = self.videoFilterPlugin else {
|
|
2246
|
+
let errorMessage = "\(#function) `videoFilterPlugin` is `nil`, Make sure you are passing `HMSVideoFilterPlugin` instance to `videoTrackSettings` in `HMSSDK.build`"
|
|
2247
|
+
reject?("6004", errorMessage, nil)
|
|
2248
|
+
return
|
|
2249
|
+
}
|
|
2250
|
+
videoFilterPlugin.deactivate()
|
|
2251
|
+
resolve?(true)
|
|
2252
|
+
default:
|
|
2253
|
+
let errorMessage = "\(#function) Unknown HMSVideoPlugin `type` passed!"
|
|
2254
|
+
reject?("6004", errorMessage, nil)
|
|
2255
|
+
return
|
|
2256
|
+
}
|
|
2257
|
+
}
|
|
2258
|
+
|
|
2259
|
+
func changeVirtualBackground(_ data: NSDictionary,
|
|
2260
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
2261
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
2262
|
+
if #available(iOS 15.0, *) {
|
|
2263
|
+
guard let backgroundDict = data.value(forKey: "background") as? NSDictionary
|
|
2264
|
+
else {
|
|
2265
|
+
let errorMessage = "\(#function) No background object passed!"
|
|
2266
|
+
reject?("6004", errorMessage, nil)
|
|
2267
|
+
return
|
|
2268
|
+
}
|
|
2269
|
+
guard let backgroundType = backgroundDict.value(forKey: "type") as? String
|
|
2270
|
+
else {
|
|
2271
|
+
let errorMessage = "\(#function) No background `type` passed!"
|
|
2272
|
+
reject?("6004", errorMessage, nil)
|
|
2273
|
+
return
|
|
2274
|
+
}
|
|
2275
|
+
guard let virtualBackgroundPlugin = self.virtualBackgroundPlugin as? HMSVirtualBackgroundPlugin else {
|
|
2276
|
+
let errorMessage = "\(#function) Unable to cast `var virtualBackgroundPlugin` to type `HMSVirtualBackgroundPlugin`, It is \(String(describing: virtualBackgroundPlugin))"
|
|
2277
|
+
reject?("6004", errorMessage, nil)
|
|
2278
|
+
return
|
|
2279
|
+
}
|
|
2280
|
+
switch backgroundType {
|
|
2281
|
+
case "blur":
|
|
2282
|
+
virtualBackgroundPlugin.backgroundImage = nil
|
|
2283
|
+
resolve?(true)
|
|
2284
|
+
case "image":
|
|
2285
|
+
guard let imageSource = backgroundDict.value(forKey: "source") as? NSDictionary else {
|
|
2286
|
+
let errorMessage = "\(#function) No background `source` passed for image!"
|
|
2287
|
+
reject?("6004", errorMessage, nil)
|
|
2288
|
+
return
|
|
2289
|
+
}
|
|
2290
|
+
DispatchQueue.main.async {
|
|
2291
|
+
guard let image = RCTConvert.uiImage(imageSource) else {
|
|
2292
|
+
let errorMessage = "\(#function) Unable to create `UIImage` from given background `source` object!"
|
|
2293
|
+
reject?("6004", errorMessage, nil)
|
|
2294
|
+
return
|
|
2295
|
+
}
|
|
2296
|
+
virtualBackgroundPlugin.backgroundImage = image
|
|
2297
|
+
resolve?(true)
|
|
2298
|
+
}
|
|
2299
|
+
default:
|
|
2300
|
+
let errorMessage = "\(#function) Unknown background `type` passed!"
|
|
2301
|
+
reject?("6004", errorMessage, nil)
|
|
2302
|
+
return
|
|
2303
|
+
}
|
|
2304
|
+
} else {
|
|
2305
|
+
let errorMessage = "\(#function) HMSVirtualBackgroundPlugin not available below iOS 15.0"
|
|
2306
|
+
reject?("6004", errorMessage, nil)
|
|
2307
|
+
return
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
|
|
2311
|
+
func setVideoFilterParameter(_ data: NSDictionary,
|
|
2312
|
+
_ resolve: RCTPromiseResolveBlock?,
|
|
2313
|
+
_ reject: RCTPromiseRejectBlock?) {
|
|
2314
|
+
guard let videoFilterPlugin = self.videoFilterPlugin else {
|
|
2315
|
+
let errorMessage = "\(#function) `videoFilterPlugin` is `nil`, Make sure you are passing `HMSVideoFilterPlugin` instance to `videoTrackSettings` in `HMSSDK.build`"
|
|
2316
|
+
reject?("6004", errorMessage, nil)
|
|
2317
|
+
return
|
|
2318
|
+
}
|
|
2319
|
+
guard let filterType = data.value(forKey: "filter") as? String else {
|
|
2320
|
+
let errorMessage = "\(#function) `filter` property not passed!"
|
|
2321
|
+
reject?("6004", errorMessage, nil)
|
|
2322
|
+
return
|
|
2323
|
+
}
|
|
2324
|
+
guard let filterValue = data.value(forKey: "value") as? NSNumber else {
|
|
2325
|
+
let errorMessage = "\(#function) `value` property not passed!"
|
|
2326
|
+
reject?("6004", errorMessage, nil)
|
|
2327
|
+
return
|
|
2328
|
+
}
|
|
2329
|
+
switch filterType {
|
|
2330
|
+
case "brightness":
|
|
2331
|
+
videoFilterPlugin.brightness = CGFloat(truncating: filterValue)
|
|
2332
|
+
case "contrast":
|
|
2333
|
+
videoFilterPlugin.contrast = CGFloat(truncating: filterValue)
|
|
2334
|
+
case "exposure":
|
|
2335
|
+
videoFilterPlugin.exposure = CGFloat(truncating: filterValue)
|
|
2336
|
+
case "hue":
|
|
2337
|
+
videoFilterPlugin.hue = CGFloat(truncating: filterValue)
|
|
2338
|
+
case "redness":
|
|
2339
|
+
videoFilterPlugin.redness = CGFloat(truncating: filterValue)
|
|
2340
|
+
case "saturation":
|
|
2341
|
+
videoFilterPlugin.saturation = CGFloat(truncating: filterValue)
|
|
2342
|
+
case "sharpness":
|
|
2343
|
+
videoFilterPlugin.sharpness = CGFloat(truncating: filterValue)
|
|
2344
|
+
case "smoothness":
|
|
2345
|
+
videoFilterPlugin.smoothness = CGFloat(truncating: filterValue)
|
|
2346
|
+
default:
|
|
2347
|
+
let errorMessage = "\(#function) Unknown `filter` type passed!"
|
|
2348
|
+
reject?("6004", errorMessage, nil)
|
|
2349
|
+
return
|
|
2350
|
+
}
|
|
2351
|
+
resolve?(true)
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2156
2354
|
// MARK: - Helper Functions
|
|
2157
2355
|
|
|
2158
2356
|
// Handle resetting states and data cleanup
|
|
@@ -147,7 +147,7 @@ class HMSSessionStore {
|
|
|
147
147
|
this._addedKeyChangeListenerCount -= 1;
|
|
148
148
|
if (this._addedKeyChangeListenerCount <= 0) {
|
|
149
149
|
this._addedKeyChangeListenerCount = 0;
|
|
150
|
-
if (this._deviceEventEmitterSubscription &&
|
|
150
|
+
if (this._deviceEventEmitterSubscription && typeof this._deviceEventEmitterSubscription.remove === 'function') {
|
|
151
151
|
this._deviceEventEmitterSubscription.remove();
|
|
152
152
|
} else {
|
|
153
153
|
_reactNative.DeviceEventEmitter.removeListener(_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","getOwnPropertyNames","includes","removeListener","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by everyone in the room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value\n * @param {string} key\n * @returns {Promise}\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * This method returns the value of any specified key on session store.\n * Note that you will not get updates for any change in value of the specified key,\n * It returns the latest value at the time it was called.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key\n * @returns {Promise}\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * This method registers a callback function for listening to value changes of a particular key.\n * Registered Callback function will be called initially with latest value and whenever the value updates\n *\n * @param {string[]} forKeys\n * @param {Function} callback\n * @returns {Object} subscription object\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n Object.getOwnPropertyNames(\n this._deviceEventEmitterSubscription\n ).includes('remove') &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by everyone in the room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value\n * @param {string} key\n * @returns {Promise}\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * This method returns the value of any specified key on session store.\n * Note that you will not get updates for any change in value of the specified key,\n * It returns the latest value at the time it was called.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key\n * @returns {Promise}\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * This method registers a callback function for listening to value changes of a particular key.\n * Registered Callback function will be called initially with latest value and whenever the value updates\n *\n * @param {string[]} forKeys\n * @param {Function} callback\n * @returns {Object} subscription object\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,8 +13,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
13
13
|
* Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}
|
|
14
14
|
*/
|
|
15
15
|
class HMSVideoTrackSettings {
|
|
16
|
-
// android only
|
|
17
|
-
|
|
18
16
|
constructor(params) {
|
|
19
17
|
_defineProperty(this, "simulcastSettings", void 0);
|
|
20
18
|
_defineProperty(this, "initialState", void 0);
|
|
@@ -22,11 +20,14 @@ class HMSVideoTrackSettings {
|
|
|
22
20
|
_defineProperty(this, "forceSoftwareDecoder", void 0);
|
|
23
21
|
// android only
|
|
24
22
|
_defineProperty(this, "disableAutoResize", void 0);
|
|
23
|
+
// android only
|
|
24
|
+
_defineProperty(this, "videoPlugin", void 0);
|
|
25
25
|
this.simulcastSettings = params.simulcastSettings;
|
|
26
26
|
this.initialState = params.initialState;
|
|
27
27
|
this.cameraFacing = params.cameraFacing;
|
|
28
28
|
this.forceSoftwareDecoder = params.forceSoftwareDecoder;
|
|
29
29
|
this.disableAutoResize = params.disableAutoResize;
|
|
30
|
+
this.videoPlugin = params.videoPlugin;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
exports.HMSVideoTrackSettings = HMSVideoTrackSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HMSVideoTrackSettings","constructor","params","_defineProperty","simulcastSettings","initialState","cameraFacing","forceSoftwareDecoder","disableAutoResize","exports"],"sources":["HMSVideoTrackSettings.ts"],"sourcesContent":["import type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';\nimport type { HMSCameraFacing } from './HMSCameraFacing';\nimport type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';\n\n/**\n * Customize local peer's Video track settings before Joining the Room.\n *\n * Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}\n */\nexport class HMSVideoTrackSettings {\n readonly simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean; // android only\n disableAutoResize?: boolean; // android only\n\n constructor(params: {\n simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean;\n disableAutoResize?: boolean;\n }) {\n this.simulcastSettings = params.simulcastSettings;\n this.initialState = params.initialState;\n this.cameraFacing = params.cameraFacing;\n this.forceSoftwareDecoder = params.forceSoftwareDecoder;\n this.disableAutoResize = params.disableAutoResize;\n }\n}\n"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"names":["HMSVideoTrackSettings","constructor","params","_defineProperty","simulcastSettings","initialState","cameraFacing","forceSoftwareDecoder","disableAutoResize","videoPlugin","exports"],"sources":["HMSVideoTrackSettings.ts"],"sourcesContent":["import type { ImageURISource, ImageRequireSource } from 'react-native';\nimport type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';\nimport type { HMSCameraFacing } from './HMSCameraFacing';\nimport type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';\n\nexport declare class HMSVirtualBackgroundPlugin {\n static NAME: string;\n constructor();\n enable(): Promise<boolean>;\n disable(): Promise<boolean>;\n setBlur(blurRadius: number): Promise<boolean>;\n setBackground(\n backgroundImage: ImageURISource | ImageRequireSource\n ): Promise<boolean>;\n}\n\n/**\n * Customize local peer's Video track settings before Joining the Room.\n *\n * Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}\n */\nexport class HMSVideoTrackSettings {\n readonly simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean; // android only\n disableAutoResize?: boolean; // android only\n videoPlugin?: HMSVirtualBackgroundPlugin;\n\n constructor(params: {\n simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean;\n disableAutoResize?: boolean;\n videoPlugin?: HMSVirtualBackgroundPlugin;\n }) {\n this.simulcastSettings = params.simulcastSettings;\n this.initialState = params.initialState;\n this.cameraFacing = params.cameraFacing;\n this.forceSoftwareDecoder = params.forceSoftwareDecoder;\n this.disableAutoResize = params.disableAutoResize;\n this.videoPlugin = params.videoPlugin;\n }\n}\n"],"mappings":";;;;;;;;;AAgBA;AACA;AACA;AACA;AACA;AACO,MAAMA,qBAAqB,CAAC;EAQjCC,WAAWA,CAACC,MAOX,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAX6B;IAAAA,eAAA;IACH;IAAAA,eAAA;IAW3B,IAAI,CAACC,iBAAiB,GAAGF,MAAM,CAACE,iBAAiB;IACjD,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACG,YAAY;IACvC,IAAI,CAACC,YAAY,GAAGJ,MAAM,CAACI,YAAY;IACvC,IAAI,CAACC,oBAAoB,GAAGL,MAAM,CAACK,oBAAoB;IACvD,IAAI,CAACC,iBAAiB,GAAGN,MAAM,CAACM,iBAAiB;IACjD,IAAI,CAACC,WAAW,GAAGP,MAAM,CAACO,WAAW;EACvC;AACF;AAACC,OAAA,CAAAV,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -140,7 +140,7 @@ export class HMSSessionStore {
|
|
|
140
140
|
this._addedKeyChangeListenerCount -= 1;
|
|
141
141
|
if (this._addedKeyChangeListenerCount <= 0) {
|
|
142
142
|
this._addedKeyChangeListenerCount = 0;
|
|
143
|
-
if (this._deviceEventEmitterSubscription &&
|
|
143
|
+
if (this._deviceEventEmitterSubscription && typeof this._deviceEventEmitterSubscription.remove === 'function') {
|
|
144
144
|
this._deviceEventEmitterSubscription.remove();
|
|
145
145
|
} else {
|
|
146
146
|
DeviceEventEmitter.removeListener(HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","Object","getOwnPropertyNames","includes","removeListener","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by everyone in the room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value\n * @param {string} key\n * @returns {Promise}\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * This method returns the value of any specified key on session store.\n * Note that you will not get updates for any change in value of the specified key,\n * It returns the latest value at the time it was called.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key\n * @returns {Promise}\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * This method registers a callback function for listening to value changes of a particular key.\n * Registered Callback function will be called initially with latest value and whenever the value updates\n *\n * @param {string[]} forKeys\n * @param {Function} callback\n * @returns {Object} subscription object\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n Object.getOwnPropertyNames(\n this._deviceEventEmitterSubscription\n ).includes('remove') &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by everyone in the room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value\n * @param {string} key\n * @returns {Promise}\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * This method returns the value of any specified key on session store.\n * Note that you will not get updates for any change in value of the specified key,\n * It returns the latest value at the time it was called.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key\n * @returns {Promise}\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * This method registers a callback function for listening to value changes of a particular key.\n * Registered Callback function will be called initially with latest value and whenever the value updates\n *\n * @param {string[]} forKeys\n * @param {Function} callback\n * @returns {Object} subscription object\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,8 +7,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
7
7
|
* Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}
|
|
8
8
|
*/
|
|
9
9
|
export class HMSVideoTrackSettings {
|
|
10
|
-
// android only
|
|
11
|
-
|
|
12
10
|
constructor(params) {
|
|
13
11
|
_defineProperty(this, "simulcastSettings", void 0);
|
|
14
12
|
_defineProperty(this, "initialState", void 0);
|
|
@@ -16,11 +14,14 @@ export class HMSVideoTrackSettings {
|
|
|
16
14
|
_defineProperty(this, "forceSoftwareDecoder", void 0);
|
|
17
15
|
// android only
|
|
18
16
|
_defineProperty(this, "disableAutoResize", void 0);
|
|
17
|
+
// android only
|
|
18
|
+
_defineProperty(this, "videoPlugin", void 0);
|
|
19
19
|
this.simulcastSettings = params.simulcastSettings;
|
|
20
20
|
this.initialState = params.initialState;
|
|
21
21
|
this.cameraFacing = params.cameraFacing;
|
|
22
22
|
this.forceSoftwareDecoder = params.forceSoftwareDecoder;
|
|
23
23
|
this.disableAutoResize = params.disableAutoResize;
|
|
24
|
+
this.videoPlugin = params.videoPlugin;
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=HMSVideoTrackSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HMSVideoTrackSettings","constructor","params","_defineProperty","simulcastSettings","initialState","cameraFacing","forceSoftwareDecoder","disableAutoResize"],"sources":["HMSVideoTrackSettings.ts"],"sourcesContent":["import type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';\nimport type { HMSCameraFacing } from './HMSCameraFacing';\nimport type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';\n\n/**\n * Customize local peer's Video track settings before Joining the Room.\n *\n * Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}\n */\nexport class HMSVideoTrackSettings {\n readonly simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean; // android only\n disableAutoResize?: boolean; // android only\n\n constructor(params: {\n simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean;\n disableAutoResize?: boolean;\n }) {\n this.simulcastSettings = params.simulcastSettings;\n this.initialState = params.initialState;\n this.cameraFacing = params.cameraFacing;\n this.forceSoftwareDecoder = params.forceSoftwareDecoder;\n this.disableAutoResize = params.disableAutoResize;\n }\n}\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"names":["HMSVideoTrackSettings","constructor","params","_defineProperty","simulcastSettings","initialState","cameraFacing","forceSoftwareDecoder","disableAutoResize","videoPlugin"],"sources":["HMSVideoTrackSettings.ts"],"sourcesContent":["import type { ImageURISource, ImageRequireSource } from 'react-native';\nimport type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';\nimport type { HMSCameraFacing } from './HMSCameraFacing';\nimport type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';\n\nexport declare class HMSVirtualBackgroundPlugin {\n static NAME: string;\n constructor();\n enable(): Promise<boolean>;\n disable(): Promise<boolean>;\n setBlur(blurRadius: number): Promise<boolean>;\n setBackground(\n backgroundImage: ImageURISource | ImageRequireSource\n ): Promise<boolean>;\n}\n\n/**\n * Customize local peer's Video track settings before Joining the Room.\n *\n * Checkout Track Settings docs for more details {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings}\n */\nexport class HMSVideoTrackSettings {\n readonly simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean; // android only\n disableAutoResize?: boolean; // android only\n videoPlugin?: HMSVirtualBackgroundPlugin;\n\n constructor(params: {\n simulcastSettings?: HMSSimulcastLayerSettings[];\n initialState?: HMSTrackSettingsInitState;\n cameraFacing?: HMSCameraFacing;\n forceSoftwareDecoder?: boolean;\n disableAutoResize?: boolean;\n videoPlugin?: HMSVirtualBackgroundPlugin;\n }) {\n this.simulcastSettings = params.simulcastSettings;\n this.initialState = params.initialState;\n this.cameraFacing = params.cameraFacing;\n this.forceSoftwareDecoder = params.forceSoftwareDecoder;\n this.disableAutoResize = params.disableAutoResize;\n this.videoPlugin = params.videoPlugin;\n }\n}\n"],"mappings":";;;AAgBA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,qBAAqB,CAAC;EAQjCC,WAAWA,CAACC,MAOX,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAX6B;IAAAA,eAAA;IACH;IAAAA,eAAA;IAW3B,IAAI,CAACC,iBAAiB,GAAGF,MAAM,CAACE,iBAAiB;IACjD,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACG,YAAY;IACvC,IAAI,CAACC,YAAY,GAAGJ,MAAM,CAACI,YAAY;IACvC,IAAI,CAACC,oBAAoB,GAAGL,MAAM,CAACK,oBAAoB;IACvD,IAAI,CAACC,iBAAiB,GAAGN,MAAM,CAACM,iBAAiB;IACjD,IAAI,CAACC,WAAW,GAAGP,MAAM,CAACO,WAAW;EACvC;AACF","ignoreList":[]}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import type { ImageURISource, ImageRequireSource } from 'react-native';
|
|
1
2
|
import type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';
|
|
2
3
|
import type { HMSCameraFacing } from './HMSCameraFacing';
|
|
3
4
|
import type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';
|
|
5
|
+
export declare class HMSVirtualBackgroundPlugin {
|
|
6
|
+
static NAME: string;
|
|
7
|
+
constructor();
|
|
8
|
+
enable(): Promise<boolean>;
|
|
9
|
+
disable(): Promise<boolean>;
|
|
10
|
+
setBlur(blurRadius: number): Promise<boolean>;
|
|
11
|
+
setBackground(backgroundImage: ImageURISource | ImageRequireSource): Promise<boolean>;
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
14
|
* Customize local peer's Video track settings before Joining the Room.
|
|
6
15
|
*
|
|
@@ -12,11 +21,13 @@ export declare class HMSVideoTrackSettings {
|
|
|
12
21
|
cameraFacing?: HMSCameraFacing;
|
|
13
22
|
forceSoftwareDecoder?: boolean;
|
|
14
23
|
disableAutoResize?: boolean;
|
|
24
|
+
videoPlugin?: HMSVirtualBackgroundPlugin;
|
|
15
25
|
constructor(params: {
|
|
16
26
|
simulcastSettings?: HMSSimulcastLayerSettings[];
|
|
17
27
|
initialState?: HMSTrackSettingsInitState;
|
|
18
28
|
cameraFacing?: HMSCameraFacing;
|
|
19
29
|
forceSoftwareDecoder?: boolean;
|
|
20
30
|
disableAutoResize?: boolean;
|
|
31
|
+
videoPlugin?: HMSVirtualBackgroundPlugin;
|
|
21
32
|
});
|
|
22
33
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@100mslive/react-native-hms",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.6-beta.1",
|
|
4
4
|
"description": "Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms React Native SDK. With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/sdk-versions.json
CHANGED
|
@@ -171,9 +171,6 @@ export class HMSSessionStore {
|
|
|
171
171
|
this._addedKeyChangeListenerCount = 0;
|
|
172
172
|
if (
|
|
173
173
|
this._deviceEventEmitterSubscription &&
|
|
174
|
-
Object.getOwnPropertyNames(
|
|
175
|
-
this._deviceEventEmitterSubscription
|
|
176
|
-
).includes('remove') &&
|
|
177
174
|
typeof this._deviceEventEmitterSubscription.remove === 'function'
|
|
178
175
|
) {
|
|
179
176
|
this._deviceEventEmitterSubscription.remove();
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
import type { ImageURISource, ImageRequireSource } from 'react-native';
|
|
1
2
|
import type { HMSSimulcastLayerSettings } from './HMSSimulcastLayerSettings';
|
|
2
3
|
import type { HMSCameraFacing } from './HMSCameraFacing';
|
|
3
4
|
import type { HMSTrackSettingsInitState } from './HMSTrackSettingsInitState';
|
|
4
5
|
|
|
6
|
+
export declare class HMSVirtualBackgroundPlugin {
|
|
7
|
+
static NAME: string;
|
|
8
|
+
constructor();
|
|
9
|
+
enable(): Promise<boolean>;
|
|
10
|
+
disable(): Promise<boolean>;
|
|
11
|
+
setBlur(blurRadius: number): Promise<boolean>;
|
|
12
|
+
setBackground(
|
|
13
|
+
backgroundImage: ImageURISource | ImageRequireSource
|
|
14
|
+
): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
|
|
5
17
|
/**
|
|
6
18
|
* Customize local peer's Video track settings before Joining the Room.
|
|
7
19
|
*
|
|
@@ -13,6 +25,7 @@ export class HMSVideoTrackSettings {
|
|
|
13
25
|
cameraFacing?: HMSCameraFacing;
|
|
14
26
|
forceSoftwareDecoder?: boolean; // android only
|
|
15
27
|
disableAutoResize?: boolean; // android only
|
|
28
|
+
videoPlugin?: HMSVirtualBackgroundPlugin;
|
|
16
29
|
|
|
17
30
|
constructor(params: {
|
|
18
31
|
simulcastSettings?: HMSSimulcastLayerSettings[];
|
|
@@ -20,11 +33,13 @@ export class HMSVideoTrackSettings {
|
|
|
20
33
|
cameraFacing?: HMSCameraFacing;
|
|
21
34
|
forceSoftwareDecoder?: boolean;
|
|
22
35
|
disableAutoResize?: boolean;
|
|
36
|
+
videoPlugin?: HMSVirtualBackgroundPlugin;
|
|
23
37
|
}) {
|
|
24
38
|
this.simulcastSettings = params.simulcastSettings;
|
|
25
39
|
this.initialState = params.initialState;
|
|
26
40
|
this.cameraFacing = params.cameraFacing;
|
|
27
41
|
this.forceSoftwareDecoder = params.forceSoftwareDecoder;
|
|
28
42
|
this.disableAutoResize = params.disableAutoResize;
|
|
43
|
+
this.videoPlugin = params.videoPlugin;
|
|
29
44
|
}
|
|
30
45
|
}
|
|
Binary file
|
package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SchemeUserState</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Hmssdk.xcscheme_^#shared#^_</key>
|
|
8
|
-
<dict>
|
|
9
|
-
<key>orderHint</key>
|
|
10
|
-
<integer>0</integer>
|
|
11
|
-
</dict>
|
|
12
|
-
</dict>
|
|
13
|
-
</dict>
|
|
14
|
-
</plist>
|