@100mslive/hms-video-store 0.2.78 → 0.2.81
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/dist/core/IHMSActions.d.ts +9 -7
- package/dist/core/hmsSDKStore/HMSSDKActions.d.ts +2 -1
- package/dist/core/hmsSDKStore/sdkTypes.d.ts +2 -2
- package/dist/core/schema/notification.d.ts +2 -0
- package/dist/core/schema/peer.d.ts +5 -0
- package/dist/core/selectors/selectorsByID.d.ts +7 -1
- package/dist/hms-video-store.cjs.development.js +174 -127
- package/dist/hms-video-store.cjs.development.js.map +1 -1
- package/dist/hms-video-store.cjs.production.min.js +1 -1
- package/dist/hms-video-store.cjs.production.min.js.map +1 -1
- package/dist/hms-video-store.esm.js +174 -128
- package/dist/hms-video-store.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/core/IHMSActions.ts +10 -7
- package/src/core/hmsSDKStore/HMSSDKActions.ts +14 -8
- package/src/core/hmsSDKStore/adapter.ts +2 -1
- package/src/core/hmsSDKStore/common/mapping.ts +4 -2
- package/src/core/hmsSDKStore/sdkTypes.ts +0 -2
- package/src/core/schema/notification.ts +2 -0
- package/src/core/schema/peer.ts +5 -0
- package/src/core/selectors/selectorsByID.ts +15 -0
- package/src/test/fakeStore.ts +2 -0
- package/src/test/unit/selectors.test.ts +10 -0
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.81",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
"zustand": "3.5.7"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@100mslive/hms-video": "^0.1.
|
|
60
|
+
"@100mslive/hms-video": "^0.1.34"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@100mslive/hms-video": "^0.1.
|
|
63
|
+
"@100mslive/hms-video": "^0.1.34",
|
|
64
64
|
"@cypress/code-coverage": "^3.9.11",
|
|
65
65
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
|
66
66
|
"@size-limit/file": "^5.0.3",
|
package/src/core/IHMSActions.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
HMSChangeMultiTrackStateParams,
|
|
18
18
|
} from './schema';
|
|
19
19
|
import { HMSRoleChangeRequest } from './selectors';
|
|
20
|
-
import { RTMPRecordingConfig
|
|
20
|
+
import { RTMPRecordingConfig } from './hmsSDKStore/sdkTypes';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* The below interface defines our SDK API Surface for taking room related actions.
|
|
@@ -281,13 +281,16 @@ export interface IHMSActions {
|
|
|
281
281
|
stopRTMPAndRecording(): Promise<void>;
|
|
282
282
|
|
|
283
283
|
/**
|
|
284
|
-
* If
|
|
285
|
-
*
|
|
286
|
-
* If name is undefined: Metadata of the peer is updated.
|
|
287
|
-
* If both name and data is defined: Both name and metadata is updated.
|
|
288
|
-
* @alpha
|
|
284
|
+
* If you want to update the name of peer.
|
|
285
|
+
* @beta
|
|
289
286
|
*/
|
|
290
|
-
|
|
287
|
+
changeName(name: string): Promise<void>;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* If you want to update the metadata of peer.
|
|
291
|
+
* @beta
|
|
292
|
+
*/
|
|
293
|
+
changeMetadata(metadata: string): Promise<void>;
|
|
291
294
|
|
|
292
295
|
/**
|
|
293
296
|
* Set the type of logs from the SDK you want to be logged in the browser console.
|
|
@@ -450,14 +450,20 @@ export class HMSSDKActions implements IHMSActions {
|
|
|
450
450
|
await this.sdk.stopRTMPAndRecording();
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
-
async
|
|
454
|
-
await this.sdk.
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
453
|
+
async changeName(name: string) {
|
|
454
|
+
await this.sdk.changeName(name);
|
|
455
|
+
this.setState(store => {
|
|
456
|
+
const localPeer = selectLocalPeer(store);
|
|
457
|
+
localPeer.name = name;
|
|
458
|
+
}, 'peerNameUpdated');
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
async changeMetadata(metadata: string) {
|
|
462
|
+
await this.sdk.changeMetadata(metadata);
|
|
463
|
+
this.setState(store => {
|
|
464
|
+
const localPeer = selectLocalPeer(store);
|
|
465
|
+
localPeer.metadata = metadata;
|
|
466
|
+
}, 'peerMetadataUpdated');
|
|
461
467
|
}
|
|
462
468
|
|
|
463
469
|
async setRemoteTrackEnabled(trackID: HMSTrackID | HMSTrackID[], enabled: boolean) {
|
|
@@ -35,7 +35,8 @@ export class SDKToHMS {
|
|
|
35
35
|
audioTrack: sdkPeer.audioTrack?.trackId,
|
|
36
36
|
auxiliaryTracks: sdkPeer.auxiliaryTracks.map(track => track.trackId),
|
|
37
37
|
customerUserId: sdkPeer.customerUserId,
|
|
38
|
-
customerDescription: sdkPeer.
|
|
38
|
+
customerDescription: sdkPeer.metadata,
|
|
39
|
+
metadata: sdkPeer.metadata,
|
|
39
40
|
};
|
|
40
41
|
}
|
|
41
42
|
|
|
@@ -20,11 +20,13 @@ export const TRACK_NOTIFICATION_TYPES: notifcationMap = {
|
|
|
20
20
|
[sdkTypes.HMSTrackUpdate.TRACK_REMOVED]: HMSNotificationTypes.TRACK_REMOVED,
|
|
21
21
|
[sdkTypes.HMSTrackUpdate.TRACK_MUTED]: HMSNotificationTypes.TRACK_MUTED,
|
|
22
22
|
[sdkTypes.HMSTrackUpdate.TRACK_UNMUTED]: HMSNotificationTypes.TRACK_UNMUTED,
|
|
23
|
+
[sdkTypes.HMSTrackUpdate.TRACK_DEGRADED]: HMSNotificationTypes.TRACK_DEGRADED,
|
|
24
|
+
[sdkTypes.HMSTrackUpdate.TRACK_RESTORED]: HMSNotificationTypes.TRACK_RESTORED,
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export const ACTION_TYPES: notifcationMap = {
|
|
26
28
|
[sdkTypes.HMSPeerUpdate.PEER_JOINED]: 'peerJoined',
|
|
27
29
|
[sdkTypes.HMSPeerUpdate.PEER_LEFT]: 'peerLeft',
|
|
28
|
-
[sdkTypes.HMSPeerUpdate.NAME_UPDATED]: '
|
|
29
|
-
[sdkTypes.HMSPeerUpdate.METADATA_UPDATED]: '
|
|
30
|
+
[sdkTypes.HMSPeerUpdate.NAME_UPDATED]: 'peerNameUpdated',
|
|
31
|
+
[sdkTypes.HMSPeerUpdate.METADATA_UPDATED]: 'peerMetadataUpdated',
|
|
30
32
|
};
|
|
@@ -26,6 +26,8 @@ export enum HMSNotificationTypes {
|
|
|
26
26
|
TRACK_REMOVED = 'TRACK_REMOVED',
|
|
27
27
|
TRACK_MUTED = 'TRACK_MUTED',
|
|
28
28
|
TRACK_UNMUTED = 'TRACK_UNMUTED',
|
|
29
|
+
TRACK_DEGRADED = 'TRACK_DEGRADED',
|
|
30
|
+
TRACK_RESTORED = 'TRACK_RESTORED',
|
|
29
31
|
ROLE_CHANGE_REQUEST = 'ROLE_CHANGE_REQUEST',
|
|
30
32
|
ROLE_UPDATED = 'ROLE_UPDATED',
|
|
31
33
|
CHANGE_TRACK_STATE_REQUEST = 'CHANGE_TRACK_STATE_REQUEST',
|
package/src/core/schema/peer.ts
CHANGED
|
@@ -384,3 +384,18 @@ export const selectPeersByRole = (role: HMSRoleName) =>
|
|
|
384
384
|
createSelector([selectPeers], peers => {
|
|
385
385
|
return peers.filter(p => p.roleName === role);
|
|
386
386
|
});
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Selects the peer metadata for the passed in peer and returns it as JSON. If metadata is not present
|
|
390
|
+
* or conversion to JSON gives an error, an empty object is returned.
|
|
391
|
+
* Please directly use peer.metadata in case the metadata is not JSON by design.
|
|
392
|
+
*/
|
|
393
|
+
export const selectPeerMetadata = (peerId: HMSPeerID) =>
|
|
394
|
+
createSelector(selectPeerByID(peerId), peer => {
|
|
395
|
+
try {
|
|
396
|
+
return peer?.metadata && peer.metadata !== '' ? JSON.parse(peer.metadata) : {};
|
|
397
|
+
} catch (error) {
|
|
398
|
+
console.error('cannot parse peer metadata', error);
|
|
399
|
+
return {};
|
|
400
|
+
}
|
|
401
|
+
});
|
package/src/test/fakeStore.ts
CHANGED
|
@@ -85,6 +85,7 @@ export const makeFakeStore = (): HMSStore => {
|
|
|
85
85
|
videoTrack: '101',
|
|
86
86
|
audioTrack: '102',
|
|
87
87
|
auxiliaryTracks: [],
|
|
88
|
+
metadata: '{}',
|
|
88
89
|
},
|
|
89
90
|
'2': {
|
|
90
91
|
id: '2',
|
|
@@ -94,6 +95,7 @@ export const makeFakeStore = (): HMSStore => {
|
|
|
94
95
|
videoTrack: '103',
|
|
95
96
|
audioTrack: '104',
|
|
96
97
|
auxiliaryTracks: ['105', '106', '107'],
|
|
98
|
+
metadata: '{"hello":"world"}',
|
|
97
99
|
},
|
|
98
100
|
'3': {
|
|
99
101
|
id: '3',
|
|
@@ -68,6 +68,8 @@ import {
|
|
|
68
68
|
selectAudioPlaylist,
|
|
69
69
|
selectVideoPlaylist,
|
|
70
70
|
selectPeersByRole,
|
|
71
|
+
selectPeers,
|
|
72
|
+
selectPeerMetadata,
|
|
71
73
|
} from '../../core';
|
|
72
74
|
|
|
73
75
|
let fakeStore: HMSStore;
|
|
@@ -292,6 +294,14 @@ describe('by ID selectors', () => {
|
|
|
292
294
|
// If role is not present
|
|
293
295
|
expect(selectPeersByRole('incognito')(fakeStore)).toEqual([]);
|
|
294
296
|
});
|
|
297
|
+
|
|
298
|
+
test('selectPeerMetadata', () => {
|
|
299
|
+
const peers = selectPeers(fakeStore);
|
|
300
|
+
const metadata1 = selectPeerMetadata(peers[0].id)(fakeStore);
|
|
301
|
+
expect(metadata1).toEqual({});
|
|
302
|
+
const metadata2 = selectPeerMetadata(peers[1].id)(fakeStore);
|
|
303
|
+
expect(metadata2).toEqual({ hello: 'world' });
|
|
304
|
+
});
|
|
295
305
|
});
|
|
296
306
|
|
|
297
307
|
describe('derived selectors', () => {
|