@100mslive/react-native-hms 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -340
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +205 -75
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +127 -127
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +153 -115
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +147 -17
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +7 -7
- package/ios/HMSDecoder.swift +205 -129
- package/ios/HMSHelper.swift +3 -3
- package/ios/HMSManager.m +3 -0
- package/ios/HMSManager.swift +22 -1
- package/ios/HMSRNSDK.swift +228 -79
- package/ios/HMSView.m +2 -0
- package/ios/HMSView.swift +35 -3
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +133 -84
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalVideoTrack.js +0 -2
- package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSMessageRecipient.js +1 -1
- package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventEmitter.js +106 -0
- package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -0
- package/lib/commonjs/classes/HMSPeer.js +4 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPublishSettings.js +0 -6
- package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSRole.js +0 -6
- package/lib/commonjs/classes/HMSRole.js.map +1 -1
- package/lib/commonjs/classes/HMSRoleChangeRequest.js +3 -1
- package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +465 -137
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSSubscribeSettings.js +0 -2
- package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +133 -84
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
- package/lib/module/classes/HMSLocalVideoTrack.js +0 -2
- package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSMessageRecipient.js +1 -1
- package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
- package/lib/module/classes/HMSNativeEventEmitter.js +99 -0
- package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -0
- package/lib/module/classes/HMSPeer.js +4 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPublishSettings.js +0 -6
- package/lib/module/classes/HMSPublishSettings.js.map +1 -1
- package/lib/module/classes/HMSRole.js +0 -6
- package/lib/module/classes/HMSRole.js.map +1 -1
- package/lib/module/classes/HMSRoleChangeRequest.js +3 -1
- package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
- package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +466 -138
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/module/classes/HMSSubscribeSettings.js +0 -2
- package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -4
- package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -2
- package/lib/typescript/classes/HMSEncoder.d.ts +3 -0
- package/lib/typescript/classes/HMSHLSStreamingState.d.ts +2 -2
- package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +0 -2
- package/lib/typescript/classes/HMSMessageRecipient.d.ts +2 -2
- package/lib/typescript/classes/HMSNativeEventEmitter.d.ts +13 -0
- package/lib/typescript/classes/HMSPublishSettings.d.ts +8 -15
- package/lib/typescript/classes/HMSRole.d.ts +0 -6
- package/lib/typescript/classes/HMSRoleChangeRequest.d.ts +2 -2
- package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -4
- package/lib/typescript/classes/HMSSDK.d.ts +2 -12
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -2
- package/lib/typescript/classes/HMSSubscribeSettings.d.ts +0 -2
- package/lib/typescript/index.d.ts +1 -0
- package/package.json +6 -4
- package/react-native-hms.podspec +1 -1
- package/sdk-versions.json +5 -0
- package/src/classes/HMSBrowserRecordingState.ts +4 -4
- package/src/classes/HMSChangeTrackStateRequest.ts +2 -2
- package/src/classes/HMSEncoder.ts +186 -99
- package/src/classes/HMSHLSStreamingState.ts +2 -2
- package/src/classes/HMSLocalVideoTrack.ts +0 -2
- package/src/classes/HMSMessageRecipient.ts +3 -3
- package/src/classes/HMSNativeEventEmitter.ts +86 -0
- package/src/classes/HMSPeer.ts +4 -0
- package/src/classes/HMSPublishSettings.ts +8 -18
- package/src/classes/HMSRole.ts +0 -9
- package/src/classes/HMSRoleChangeRequest.ts +5 -3
- package/src/classes/HMSRtmpStreamingState.ts +4 -4
- package/src/classes/HMSSDK.tsx +629 -269
- package/src/classes/HMSServerRecordingState.ts +2 -2
- package/src/classes/HMSSubscribeSettings.ts +1 -7
- package/src/index.ts +1 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
|
|
1
3
|
import { HMSTrack } from './HMSTrack';
|
|
2
4
|
import { HMSAudioTrack } from './HMSAudioTrack';
|
|
3
5
|
import { HMSVideoTrack } from './HMSVideoTrack';
|
|
@@ -29,7 +31,19 @@ import { HMSMessage } from './HMSMessage';
|
|
|
29
31
|
import { HMSMessageRecipient } from './HMSMessageRecipient';
|
|
30
32
|
import { HMSException } from './HMSException';
|
|
31
33
|
|
|
34
|
+
const { HMSManager } = NativeModules;
|
|
35
|
+
|
|
36
|
+
interface InitialData {
|
|
37
|
+
roles: Record<string, HMSRole>;
|
|
38
|
+
}
|
|
39
|
+
|
|
32
40
|
export class HMSEncoder {
|
|
41
|
+
private static data: InitialData = { roles: {} };
|
|
42
|
+
|
|
43
|
+
static clearData() {
|
|
44
|
+
this.data = { roles: {} };
|
|
45
|
+
}
|
|
46
|
+
|
|
33
47
|
static encodeHmsRoom(room: HMSRoom, id: string) {
|
|
34
48
|
const encodedObj = {
|
|
35
49
|
id: room?.id,
|
|
@@ -71,19 +85,24 @@ export class HMSEncoder {
|
|
|
71
85
|
static encodeHmsPeer(peer: any, id: string) {
|
|
72
86
|
const encodedObj = {
|
|
73
87
|
peerID: peer?.peerID,
|
|
74
|
-
name: peer?.name,
|
|
88
|
+
name: peer?.name || '',
|
|
75
89
|
isLocal: peer?.isLocal,
|
|
76
90
|
customerUserID: peer?.customerUserID,
|
|
77
|
-
customerDescription: peer?.customerDescription,
|
|
91
|
+
customerDescription: peer?.customerDescription || undefined,
|
|
78
92
|
metadata: peer?.metadata,
|
|
79
93
|
role: HMSEncoder.encodeHmsRole(peer?.role),
|
|
80
|
-
networkQuality:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
peer?.
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
networkQuality: peer?.networkQuality
|
|
95
|
+
? HMSEncoder.encodeHMSNetworkQuality(peer?.networkQuality)
|
|
96
|
+
: undefined,
|
|
97
|
+
audioTrack: peer?.audioTrack
|
|
98
|
+
? HMSEncoder.encodeHmsAudioTrack(peer?.audioTrack, id)
|
|
99
|
+
: undefined,
|
|
100
|
+
videoTrack: peer?.videoTrack
|
|
101
|
+
? HMSEncoder.encodeHmsVideoTrack(peer?.videoTrack, id)
|
|
102
|
+
: undefined,
|
|
103
|
+
auxiliaryTracks: Array.isArray(peer?.auxiliaryTracks)
|
|
104
|
+
? HMSEncoder.encodeHmsAuxiliaryTracks(peer?.auxiliaryTracks, id)
|
|
105
|
+
: undefined,
|
|
87
106
|
};
|
|
88
107
|
|
|
89
108
|
return new HMSPeer(encodedObj);
|
|
@@ -139,42 +158,55 @@ export class HMSEncoder {
|
|
|
139
158
|
|
|
140
159
|
static encodeHmsLocalPeer(peer: any, id: string) {
|
|
141
160
|
const encodedObj = {
|
|
142
|
-
peerID: peer
|
|
143
|
-
name: peer
|
|
144
|
-
isLocal:
|
|
145
|
-
customerUserID: peer
|
|
146
|
-
customerDescription: peer
|
|
147
|
-
metadata: peer
|
|
161
|
+
peerID: peer?.peerID,
|
|
162
|
+
name: peer?.name,
|
|
163
|
+
isLocal: true,
|
|
164
|
+
customerUserID: peer?.customerUserID,
|
|
165
|
+
customerDescription: peer?.customerDescription || undefined,
|
|
166
|
+
metadata: peer?.metadata || undefined,
|
|
148
167
|
role: HMSEncoder.encodeHmsRole(peer?.role),
|
|
149
|
-
networkQuality:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
peer
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
168
|
+
networkQuality: peer?.networkQuality
|
|
169
|
+
? HMSEncoder.encodeHMSNetworkQuality(peer?.networkQuality)
|
|
170
|
+
: undefined,
|
|
171
|
+
audioTrack: peer?.audioTrack
|
|
172
|
+
? HMSEncoder.encodeHmsAudioTrack(peer?.audioTrack, id)
|
|
173
|
+
: undefined,
|
|
174
|
+
videoTrack: peer?.videoTrack
|
|
175
|
+
? HMSEncoder.encodeHmsVideoTrack(peer?.videoTrack, id)
|
|
176
|
+
: undefined,
|
|
177
|
+
auxiliaryTracks: Array.isArray(peer?.auxiliaryTracks)
|
|
178
|
+
? HMSEncoder.encodeHmsAuxiliaryTracks(peer?.auxiliaryTracks, id)
|
|
179
|
+
: undefined,
|
|
180
|
+
localAudioTrackData: peer?.localAudioTrackData?.trackId
|
|
181
|
+
? {
|
|
182
|
+
id: id,
|
|
183
|
+
trackId: peer?.localAudioTrackData?.trackId,
|
|
184
|
+
source: peer?.localAudioTrackData?.source,
|
|
185
|
+
trackDescription: peer?.localAudioTrackData?.trackDescription,
|
|
186
|
+
isMute: peer?.localAudioTrackData?.isMute,
|
|
187
|
+
settings: peer?.localAudioTrackData?.settings
|
|
188
|
+
? HMSEncoder.encodeHmsAudioTrackSettings(
|
|
189
|
+
peer?.localAudioTrackData?.settings
|
|
190
|
+
)
|
|
191
|
+
: undefined,
|
|
192
|
+
type: peer?.localAudioTrackData?.type,
|
|
193
|
+
}
|
|
194
|
+
: undefined,
|
|
195
|
+
localVideoTrackData: peer?.localVideoTrackData?.trackId
|
|
196
|
+
? {
|
|
197
|
+
id: id,
|
|
198
|
+
trackId: peer?.localVideoTrackData?.trackId,
|
|
199
|
+
source: peer?.localVideoTrackData?.source,
|
|
200
|
+
trackDescription: peer?.localVideoTrackData?.trackDescription,
|
|
201
|
+
isMute: peer?.localVideoTrackData?.isMute,
|
|
202
|
+
settings: peer?.localVideoTrackData?.settings
|
|
203
|
+
? HMSEncoder.encodeHmsVideoTrackSettings(
|
|
204
|
+
peer?.localVideoTrackData?.settings
|
|
205
|
+
)
|
|
206
|
+
: undefined,
|
|
207
|
+
type: peer?.localVideoTrackData?.type,
|
|
208
|
+
}
|
|
209
|
+
: undefined,
|
|
178
210
|
};
|
|
179
211
|
|
|
180
212
|
return new HMSLocalPeer(encodedObj);
|
|
@@ -217,7 +249,9 @@ export class HMSEncoder {
|
|
|
217
249
|
source: track?.source,
|
|
218
250
|
trackDescription: track?.trackDescription,
|
|
219
251
|
isMute: track?.isMute,
|
|
220
|
-
settings:
|
|
252
|
+
settings: track?.settings
|
|
253
|
+
? HMSEncoder.encodeHmsAudioTrackSettings(track?.settings)
|
|
254
|
+
: undefined,
|
|
221
255
|
type: track?.type,
|
|
222
256
|
};
|
|
223
257
|
|
|
@@ -231,7 +265,9 @@ export class HMSEncoder {
|
|
|
231
265
|
source: track?.source,
|
|
232
266
|
trackDescription: track?.trackDescription,
|
|
233
267
|
isMute: track?.isMute,
|
|
234
|
-
settings:
|
|
268
|
+
settings: track?.settings
|
|
269
|
+
? HMSEncoder.encodeHmsVideoTrackSettings(track?.settings)
|
|
270
|
+
: undefined,
|
|
235
271
|
type: track?.type,
|
|
236
272
|
};
|
|
237
273
|
|
|
@@ -252,37 +288,46 @@ export class HMSEncoder {
|
|
|
252
288
|
|
|
253
289
|
static encodeHmsRemotePeer(peer: any, id: string) {
|
|
254
290
|
const encodedObj = {
|
|
255
|
-
peerID: peer
|
|
256
|
-
name: peer
|
|
257
|
-
isLocal:
|
|
258
|
-
customerUserID: peer
|
|
291
|
+
peerID: peer?.peerID,
|
|
292
|
+
name: peer?.name,
|
|
293
|
+
isLocal: false,
|
|
294
|
+
customerUserID: peer?.customerUserID,
|
|
259
295
|
customerDescription: peer.customerDescription,
|
|
260
296
|
metadata: peer.metadata,
|
|
261
297
|
role: HMSEncoder.encodeHmsRole(peer?.role),
|
|
262
|
-
networkQuality:
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
peer
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
298
|
+
networkQuality: peer?.networkQuality
|
|
299
|
+
? HMSEncoder.encodeHMSNetworkQuality(peer?.networkQuality)
|
|
300
|
+
: undefined,
|
|
301
|
+
audioTrack: peer?.audioTrack
|
|
302
|
+
? HMSEncoder.encodeHmsAudioTrack(peer?.audioTrack, id)
|
|
303
|
+
: undefined,
|
|
304
|
+
videoTrack: peer?.videoTrack
|
|
305
|
+
? HMSEncoder.encodeHmsVideoTrack(peer.videoTrack, id)
|
|
306
|
+
: undefined,
|
|
307
|
+
auxiliaryTracks: Array.isArray(peer?.auxiliaryTracks)
|
|
308
|
+
? HMSEncoder.encodeHmsAuxiliaryTracks(peer?.auxiliaryTracks, id)
|
|
309
|
+
: undefined,
|
|
310
|
+
remoteAudioTrackData: peer?.remoteAudioTrackData?.trackId
|
|
311
|
+
? {
|
|
312
|
+
id: id,
|
|
313
|
+
trackId: peer?.remoteAudioTrackData?.trackId,
|
|
314
|
+
source: peer?.remoteAudioTrackData?.source,
|
|
315
|
+
trackDescription: peer?.remoteAudioTrackData?.trackDescription,
|
|
316
|
+
isMute: peer?.remoteAudioTrackData?.isMute,
|
|
317
|
+
playbackAllowed: peer?.remoteAudioTrackData?.playbackAllowed,
|
|
318
|
+
}
|
|
319
|
+
: undefined,
|
|
320
|
+
remoteVideoTrackData: peer?.remoteVideoTrackData?.trackId
|
|
321
|
+
? {
|
|
322
|
+
id: id,
|
|
323
|
+
trackId: peer?.remoteVideoTrackData?.trackId,
|
|
324
|
+
source: peer?.remoteVideoTrackData?.source,
|
|
325
|
+
trackDescription: peer?.remoteVideoTrackData?.trackDescription,
|
|
326
|
+
layer: peer?.remoteVideoTrackData?.layer,
|
|
327
|
+
isMute: peer?.remoteVideoTrackData?.isMute,
|
|
328
|
+
playbackAllowed: peer?.remoteVideoTrackData?.playbackAllowed,
|
|
329
|
+
}
|
|
330
|
+
: undefined,
|
|
286
331
|
};
|
|
287
332
|
|
|
288
333
|
return new HMSRemotePeer(encodedObj);
|
|
@@ -332,14 +377,37 @@ export class HMSEncoder {
|
|
|
332
377
|
}
|
|
333
378
|
|
|
334
379
|
static encodeHmsRole(role: any) {
|
|
335
|
-
|
|
380
|
+
if (!role) {
|
|
381
|
+
return new HMSRole(role);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
const rolesCache = this.data.roles;
|
|
385
|
+
|
|
386
|
+
const cachedRole = rolesCache[role.name];
|
|
387
|
+
|
|
388
|
+
// create new HMSRole instance, if cached role does not exist OR `role.publishSettings?.allowed` does not exist
|
|
389
|
+
if (!cachedRole || !cachedRole.publishSettings?.allowed) {
|
|
390
|
+
// Creating HMSRole object with data
|
|
391
|
+
const hmsRole = new HMSRole(role);
|
|
392
|
+
|
|
393
|
+
// saving the created HMSRole object into cache
|
|
394
|
+
rolesCache[role.name] = hmsRole;
|
|
336
395
|
|
|
337
|
-
|
|
396
|
+
// If the created HMSRole object is complete,
|
|
397
|
+
// sending notification to Native Side to stop sending data for this role
|
|
398
|
+
if (hmsRole.publishSettings?.allowed) {
|
|
399
|
+
HMSManager.restrictData({ id: "12345", roleName: hmsRole.name });
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
return rolesCache[role.name];
|
|
338
404
|
}
|
|
339
405
|
|
|
340
406
|
static encodeHmsRoleChangeRequest(data: any, id: string) {
|
|
341
407
|
const encodedRoleChangeRequest = {
|
|
342
|
-
requestedBy:
|
|
408
|
+
requestedBy: data.requestedBy
|
|
409
|
+
? HMSEncoder.encodeHmsPeer(data.requestedBy, id)
|
|
410
|
+
: undefined,
|
|
343
411
|
suggestedRole: HMSEncoder.encodeHmsRole(data.suggestedRole),
|
|
344
412
|
};
|
|
345
413
|
|
|
@@ -351,7 +419,9 @@ export class HMSEncoder {
|
|
|
351
419
|
id: string
|
|
352
420
|
) {
|
|
353
421
|
const encodedChangeTrackStateRequest = {
|
|
354
|
-
requestedBy:
|
|
422
|
+
requestedBy: data?.requestedBy
|
|
423
|
+
? HMSEncoder.encodeHmsPeer(data?.requestedBy, id)
|
|
424
|
+
: undefined,
|
|
355
425
|
trackType: data.trackType,
|
|
356
426
|
mute: data.mute,
|
|
357
427
|
};
|
|
@@ -399,44 +469,57 @@ export class HMSEncoder {
|
|
|
399
469
|
|
|
400
470
|
static encodeBrowserRecordingState(data: any) {
|
|
401
471
|
return new HMSBrowserRecordingState({
|
|
402
|
-
running: data?.running,
|
|
403
|
-
startedAt:
|
|
404
|
-
stoppedAt:
|
|
405
|
-
error: data?.error,
|
|
472
|
+
running: data?.running || false,
|
|
473
|
+
startedAt: HMSEncoder.encodeDate(data?.startedAt),
|
|
474
|
+
stoppedAt: HMSEncoder.encodeDate(data?.stoppedAt),
|
|
475
|
+
error: data?.error || undefined,
|
|
406
476
|
});
|
|
407
477
|
}
|
|
408
478
|
|
|
409
479
|
static encodeServerRecordingState(data: any) {
|
|
410
480
|
return new HMSServerRecordingState({
|
|
411
|
-
running: data?.running,
|
|
412
|
-
error: data?.error,
|
|
413
|
-
startedAt:
|
|
481
|
+
running: data?.running || false,
|
|
482
|
+
error: data?.error || undefined,
|
|
483
|
+
startedAt: HMSEncoder.encodeDate(data?.startedAt),
|
|
414
484
|
});
|
|
415
485
|
}
|
|
416
486
|
|
|
417
487
|
static encodeRTMPStreamingState(data: any) {
|
|
418
488
|
return new HMSRtmpStreamingState({
|
|
419
|
-
running: data?.running,
|
|
420
|
-
startedAt:
|
|
421
|
-
stoppedAt:
|
|
422
|
-
error: data?.error,
|
|
489
|
+
running: data?.running || false,
|
|
490
|
+
startedAt: HMSEncoder.encodeDate(data?.startedAt),
|
|
491
|
+
stoppedAt: HMSEncoder.encodeDate(data?.stoppedAt),
|
|
492
|
+
error: data?.error || undefined,
|
|
423
493
|
});
|
|
424
494
|
}
|
|
425
495
|
|
|
496
|
+
static encodeDate(dateData: any) {
|
|
497
|
+
if (!dateData) {
|
|
498
|
+
return undefined;
|
|
499
|
+
}
|
|
500
|
+
const dateNum = parseInt(dateData);
|
|
501
|
+
if (isNaN(dateNum)) {
|
|
502
|
+
return undefined;
|
|
503
|
+
}
|
|
504
|
+
return new Date(dateNum);
|
|
505
|
+
}
|
|
506
|
+
|
|
426
507
|
static encodeHLSStreamingState(data: any) {
|
|
427
508
|
return new HMSHLSStreamingState({
|
|
428
|
-
running: data?.running,
|
|
429
|
-
variants:
|
|
509
|
+
running: data?.running || false,
|
|
510
|
+
variants: Array.isArray(data?.variants)
|
|
511
|
+
? this.encodeHLSVariants(data?.variants)
|
|
512
|
+
: undefined,
|
|
430
513
|
});
|
|
431
514
|
}
|
|
432
515
|
|
|
433
516
|
static encodeHLSRecordingState(data: any) {
|
|
434
517
|
if (data) {
|
|
435
518
|
return new HMSHLSRecordingState({
|
|
436
|
-
running: data?.running,
|
|
437
|
-
startedAt:
|
|
438
|
-
singleFilePerLayer: data?.singleFilePerLayer,
|
|
439
|
-
videoOnDemand: data?.videoOnDemand,
|
|
519
|
+
running: data?.running || false,
|
|
520
|
+
startedAt: HMSEncoder.encodeDate(data?.startedAt),
|
|
521
|
+
singleFilePerLayer: data?.singleFilePerLayer || false,
|
|
522
|
+
videoOnDemand: data?.videoOnDemand || false,
|
|
440
523
|
});
|
|
441
524
|
} else {
|
|
442
525
|
return undefined;
|
|
@@ -450,8 +533,8 @@ export class HMSEncoder {
|
|
|
450
533
|
let variant = new HMSHLSVariant({
|
|
451
534
|
hlsStreamUrl: item.hlsStreamUrl,
|
|
452
535
|
meetingUrl: item.meetingUrl,
|
|
453
|
-
metadata: item?.metadata,
|
|
454
|
-
startedAt:
|
|
536
|
+
metadata: item?.metaData ? item?.metadata : undefined,
|
|
537
|
+
startedAt: HMSEncoder.encodeDate(item?.startedAt),
|
|
455
538
|
});
|
|
456
539
|
variants.push(variant);
|
|
457
540
|
});
|
|
@@ -486,8 +569,12 @@ export class HMSEncoder {
|
|
|
486
569
|
static encodeHMSMessageRecipient(data: any, id: string) {
|
|
487
570
|
return new HMSMessageRecipient({
|
|
488
571
|
recipientType: data?.recipientType,
|
|
489
|
-
recipientPeer:
|
|
490
|
-
|
|
572
|
+
recipientPeer: data?.recipientPeer
|
|
573
|
+
? this.encodeHmsPeer(data.recipientPeer, id)
|
|
574
|
+
: undefined,
|
|
575
|
+
recipientRoles: Array.isArray(data?.recipientRoles)
|
|
576
|
+
? this.encodeHmsRoles(data.recipientRoles)
|
|
577
|
+
: [],
|
|
491
578
|
});
|
|
492
579
|
}
|
|
493
580
|
|
|
@@ -2,9 +2,9 @@ import type { HMSHLSVariant } from './HMSHLSVariant';
|
|
|
2
2
|
|
|
3
3
|
export class HMSHLSStreamingState {
|
|
4
4
|
running: boolean;
|
|
5
|
-
variants
|
|
5
|
+
variants?: Array<HMSHLSVariant>;
|
|
6
6
|
|
|
7
|
-
constructor(params: { running: boolean; variants
|
|
7
|
+
constructor(params: { running: boolean; variants?: Array<HMSHLSVariant> }) {
|
|
8
8
|
this.running = params.running;
|
|
9
9
|
this.variants = params.variants;
|
|
10
10
|
}
|
|
@@ -3,9 +3,9 @@ import type { HMSPeer } from './HMSPeer';
|
|
|
3
3
|
import type { HMSRole } from './HMSRole';
|
|
4
4
|
|
|
5
5
|
export class HMSMessageRecipient {
|
|
6
|
-
public recipientType
|
|
6
|
+
public recipientType: HMSMessageRecipientType;
|
|
7
7
|
public recipientPeer?: HMSPeer;
|
|
8
|
-
public recipientRoles
|
|
8
|
+
public recipientRoles: HMSRole[];
|
|
9
9
|
|
|
10
10
|
constructor(params: {
|
|
11
11
|
recipientType: HMSMessageRecipientType;
|
|
@@ -14,6 +14,6 @@ export class HMSMessageRecipient {
|
|
|
14
14
|
}) {
|
|
15
15
|
this.recipientType = params.recipientType;
|
|
16
16
|
this.recipientPeer = params.recipientPeer;
|
|
17
|
-
this.recipientRoles = params.recipientRoles;
|
|
17
|
+
this.recipientRoles = params.recipientRoles || [];
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { EventSubscription, NativeEventEmitter } from "react-native";
|
|
2
|
+
import { logger } from './HMSLogger';
|
|
3
|
+
|
|
4
|
+
export type HMSEventSubscription = {
|
|
5
|
+
remove(): void;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export class HMSNativeEventEmitter {
|
|
9
|
+
private _nativeEventEmitter: NativeEventEmitter;
|
|
10
|
+
private _nativeModule: any;
|
|
11
|
+
|
|
12
|
+
constructor(nativeModule: any) {
|
|
13
|
+
this._nativeModule = nativeModule;
|
|
14
|
+
this._nativeEventEmitter = new NativeEventEmitter(nativeModule);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
listenerCount(eventType: string): number {
|
|
18
|
+
// For RN version < v0.64, listenerCount method is not available
|
|
19
|
+
// @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64
|
|
20
|
+
if (typeof this._nativeEventEmitter.listeners === 'function') {
|
|
21
|
+
// @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64
|
|
22
|
+
const count = this._nativeEventEmitter.listeners(eventType).length;
|
|
23
|
+
|
|
24
|
+
logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', { eventType, count });
|
|
25
|
+
return count;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// For RN version >= v0.64
|
|
29
|
+
const count = this._nativeEventEmitter.listenerCount(eventType);
|
|
30
|
+
|
|
31
|
+
logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', { eventType, count });
|
|
32
|
+
return count;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
addListener(id: string, eventType: string, listener: (...args: any[]) => any): HMSEventSubscription {
|
|
36
|
+
logger?.verbose('#Function HMSNativeEventEmitter.addListener', { id, eventType, listener });
|
|
37
|
+
|
|
38
|
+
// enable `eventType` on `HMSSDK`, if no listeners were added before
|
|
39
|
+
// if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled
|
|
40
|
+
if (this.listenerCount(eventType) <= 0) {
|
|
41
|
+
this.enableHMSEventType(id, eventType);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
let subscription: EventSubscription | null = this._nativeEventEmitter.addListener(eventType, listener);
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
remove: () => {
|
|
48
|
+
console.log('#Function EventSubscription.remove', { id, eventType, listener });
|
|
49
|
+
if (
|
|
50
|
+
subscription &&
|
|
51
|
+
Object.getOwnPropertyNames(subscription).includes('remove') &&
|
|
52
|
+
typeof subscription.remove === 'function'
|
|
53
|
+
) {
|
|
54
|
+
subscription.remove();
|
|
55
|
+
subscription = null;
|
|
56
|
+
} else {
|
|
57
|
+
this._nativeEventEmitter.removeListener(eventType, listener);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// disable `eventType` on `HMSSDK`, if all listeners has been removed
|
|
61
|
+
if (this.listenerCount(eventType) <= 0) {
|
|
62
|
+
this.disableHMSEventType(id, eventType);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
removeAllListeners(id: string, eventType: string) {
|
|
69
|
+
logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', { id, eventType });
|
|
70
|
+
|
|
71
|
+
// disable `eventType` on `HMSSDK`
|
|
72
|
+
this.disableHMSEventType(id, eventType);
|
|
73
|
+
|
|
74
|
+
return this._nativeEventEmitter.removeAllListeners(eventType);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private enableHMSEventType(id: string, eventType: string) {
|
|
78
|
+
logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', { id, eventType });
|
|
79
|
+
this._nativeModule.enableEvent({ id, eventType });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
private disableHMSEventType(id: string, eventType: string) {
|
|
83
|
+
logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', { id, eventType });
|
|
84
|
+
this._nativeModule.disableEvent({ id, eventType });
|
|
85
|
+
}
|
|
86
|
+
}
|
package/src/classes/HMSPeer.ts
CHANGED
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
import type { HMSAudioSettings } from './HMSAudioSettings';
|
|
2
|
-
import type { HMSSimulcastSettings } from './HMSSimulcastSettings';
|
|
3
2
|
import type { HMSVideoSettings } from './HMSVideoSettings';
|
|
4
3
|
|
|
5
4
|
export class HMSPublishSettings {
|
|
6
|
-
audio
|
|
7
|
-
video
|
|
8
|
-
screen
|
|
9
|
-
|
|
10
|
-
videoSimulcast?: HMSSimulcastSettings;
|
|
11
|
-
screenSimulcast?: HMSSimulcastSettings;
|
|
12
|
-
allowed?: [string];
|
|
5
|
+
audio?: HMSAudioSettings;
|
|
6
|
+
video?: HMSVideoSettings;
|
|
7
|
+
screen?: HMSVideoSettings;
|
|
8
|
+
allowed?: string[];
|
|
13
9
|
|
|
14
10
|
constructor(params: {
|
|
15
|
-
audio
|
|
16
|
-
video
|
|
17
|
-
screen
|
|
18
|
-
|
|
19
|
-
videoSimulcast?: HMSSimulcastSettings;
|
|
20
|
-
screenSimulcast?: HMSSimulcastSettings;
|
|
21
|
-
allowed?: [string];
|
|
11
|
+
audio?: HMSAudioSettings;
|
|
12
|
+
video?: HMSVideoSettings;
|
|
13
|
+
screen?: HMSVideoSettings;
|
|
14
|
+
allowed?: string[];
|
|
22
15
|
}) {
|
|
23
16
|
this.audio = params.audio;
|
|
24
17
|
this.video = params.video;
|
|
25
18
|
this.screen = params.screen;
|
|
26
|
-
this.audioSimulcast = params.audioSimulcast;
|
|
27
|
-
this.videoSimulcast = params.videoSimulcast;
|
|
28
|
-
this.screenSimulcast = params.screenSimulcast;
|
|
29
19
|
this.allowed = params.allowed;
|
|
30
20
|
}
|
|
31
21
|
}
|
package/src/classes/HMSRole.ts
CHANGED
|
@@ -8,9 +8,6 @@ export class HMSRole {
|
|
|
8
8
|
subscribeSettings?: HMSSubscribeSettings;
|
|
9
9
|
permissions?: HMSPermissions;
|
|
10
10
|
priority?: number;
|
|
11
|
-
generalPermissions?: any;
|
|
12
|
-
internalPlugins?: any;
|
|
13
|
-
externalPlugins?: any;
|
|
14
11
|
|
|
15
12
|
constructor(params?: {
|
|
16
13
|
name?: string;
|
|
@@ -18,9 +15,6 @@ export class HMSRole {
|
|
|
18
15
|
permissions?: HMSPermissions;
|
|
19
16
|
publishSettings?: HMSPublishSettings;
|
|
20
17
|
subscribeSettings?: HMSSubscribeSettings;
|
|
21
|
-
generalPermissions?: any;
|
|
22
|
-
internalPlugins?: any;
|
|
23
|
-
externalPlugins?: any;
|
|
24
18
|
}) {
|
|
25
19
|
if (params) {
|
|
26
20
|
this.name = params.name;
|
|
@@ -28,9 +22,6 @@ export class HMSRole {
|
|
|
28
22
|
this.permissions = params.permissions;
|
|
29
23
|
this.publishSettings = params.publishSettings;
|
|
30
24
|
this.subscribeSettings = params.subscribeSettings;
|
|
31
|
-
this.generalPermissions = params.generalPermissions;
|
|
32
|
-
this.internalPlugins = params.internalPlugins;
|
|
33
|
-
this.externalPlugins = params.externalPlugins;
|
|
34
25
|
}
|
|
35
26
|
}
|
|
36
27
|
}
|
|
@@ -2,11 +2,13 @@ import type { HMSRole } from './HMSRole';
|
|
|
2
2
|
import type { HMSPeer } from './HMSPeer';
|
|
3
3
|
|
|
4
4
|
export class HMSRoleChangeRequest {
|
|
5
|
-
requestedBy
|
|
5
|
+
requestedBy?: HMSPeer;
|
|
6
6
|
suggestedRole: HMSRole;
|
|
7
7
|
|
|
8
|
-
constructor(params: { requestedBy
|
|
9
|
-
|
|
8
|
+
constructor(params: { requestedBy?: HMSPeer; suggestedRole: HMSRole }) {
|
|
9
|
+
if (params.requestedBy) {
|
|
10
|
+
this.requestedBy = params.requestedBy;
|
|
11
|
+
}
|
|
10
12
|
this.suggestedRole = params.suggestedRole;
|
|
11
13
|
}
|
|
12
14
|
}
|
|
@@ -3,14 +3,14 @@ import type { HMSException } from './HMSException';
|
|
|
3
3
|
export class HMSRtmpStreamingState {
|
|
4
4
|
running: boolean;
|
|
5
5
|
error?: HMSException;
|
|
6
|
-
startedAt
|
|
7
|
-
stoppedAt
|
|
6
|
+
startedAt?: Date;
|
|
7
|
+
stoppedAt?: Date;
|
|
8
8
|
|
|
9
9
|
constructor(params: {
|
|
10
10
|
running: boolean;
|
|
11
11
|
error?: HMSException;
|
|
12
|
-
startedAt
|
|
13
|
-
stoppedAt
|
|
12
|
+
startedAt?: Date;
|
|
13
|
+
stoppedAt?: Date;
|
|
14
14
|
}) {
|
|
15
15
|
this.running = params.running;
|
|
16
16
|
this.error = params.error;
|