@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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.2.78",
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.32"
60
+ "@100mslive/hms-video": "^0.1.34"
61
61
  },
62
62
  "devDependencies": {
63
- "@100mslive/hms-video": "^0.1.32",
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",
@@ -17,7 +17,7 @@ import {
17
17
  HMSChangeMultiTrackStateParams,
18
18
  } from './schema';
19
19
  import { HMSRoleChangeRequest } from './selectors';
20
- import { RTMPRecordingConfig, HMSPeerUpdateConfig } from './hmsSDKStore/sdkTypes';
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 both name and data is undefined: Message is ignored.
285
- * If data is undefined: Name of the peer is changed.
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
- updatePeer(params: HMSPeerUpdateConfig): Promise<void>;
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 updatePeer(params: sdkTypes.HMSPeerUpdateConfig) {
454
- await this.sdk.updatePeer(params);
455
- if (params.name) {
456
- this.syncRoomState('nameUpdated');
457
- }
458
- if (params.metadata) {
459
- this.syncRoomState('metadataUpdated');
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.customerDescription,
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]: 'nameUpdated',
29
- [sdkTypes.HMSPeerUpdate.METADATA_UPDATED]: 'metadataUpdated',
30
+ [sdkTypes.HMSPeerUpdate.NAME_UPDATED]: 'peerNameUpdated',
31
+ [sdkTypes.HMSPeerUpdate.METADATA_UPDATED]: 'peerMetadataUpdated',
30
32
  };
@@ -24,7 +24,6 @@ import {
24
24
  RTMPRecordingConfig,
25
25
  HMSRecording,
26
26
  HMSRTMP,
27
- HMSPeerUpdateConfig,
28
27
  } from '@100mslive/hms-video';
29
28
 
30
29
  export {
@@ -53,5 +52,4 @@ export {
53
52
  RTMPRecordingConfig,
54
53
  HMSRecording,
55
54
  HMSRTMP,
56
- HMSPeerUpdateConfig,
57
55
  };
@@ -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',
@@ -28,6 +28,11 @@ export interface HMSPeer {
28
28
  audioTrack?: HMSTrackID;
29
29
  auxiliaryTracks: HMSTrackID[];
30
30
  customerUserId?: string;
31
+ metadata?: string;
32
+ /**
33
+ * @deprecated
34
+ * Use metadata field instead.
35
+ */
31
36
  customerDescription?: string;
32
37
  }
33
38
 
@@ -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
+ });
@@ -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', () => {