@100mslive/hms-video-store 0.2.66 → 0.2.70

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.
@@ -965,6 +965,7 @@ var HMSNotificationTypes;
965
965
  (function (HMSNotificationTypes) {
966
966
  HMSNotificationTypes["PEER_JOINED"] = "PEER_JOINED";
967
967
  HMSNotificationTypes["PEER_LEFT"] = "PEER_LEFT";
968
+ HMSNotificationTypes["PEER_LIST"] = "PEER_LIST";
968
969
  HMSNotificationTypes["NEW_MESSAGE"] = "NEW_MESSAGE";
969
970
  HMSNotificationTypes["ERROR"] = "ERROR";
970
971
  HMSNotificationTypes["RECONNECTING"] = "RECONNECTING";
@@ -999,7 +1000,7 @@ var HMSPlaylistType;
999
1000
  * @param newHmsTracks this will be update if required
1000
1001
  * @param newHmsSDkTracks this is future value of local hms tacks map
1001
1002
  */
1002
- var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers, newHmsTracks, newHmsSDkTracks) {
1003
+ var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers) {
1003
1004
  var peerIDs = union(Object.keys(draftPeers), Object.keys(newPeers));
1004
1005
 
1005
1006
  for (var _iterator = _createForOfIteratorHelperLoose(peerIDs), _step; !(_step = _iterator()).done;) {
@@ -1012,7 +1013,6 @@ var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers, n
1012
1013
  newPeer.auxiliaryTracks = oldPeer.auxiliaryTracks;
1013
1014
  }
1014
1015
 
1015
- handleLocalVideoReplaceTrack(oldPeer, newPeer, newHmsTracks, newHmsSDkTracks);
1016
1016
  Object.assign(oldPeer, newPeer);
1017
1017
  } else if (isEntityRemoved(oldPeer, newPeer)) {
1018
1018
  delete draftPeers[peerID];
@@ -1100,23 +1100,6 @@ var union = function union(arr1, arr2) {
1100
1100
 
1101
1101
  return Array.from(set);
1102
1102
  };
1103
- /**
1104
- * on replace track, use prev video track id in peer object, this is because we
1105
- * don't want the peer or peers object reference to change, the fact that the video
1106
- * track is changed on mute/unmute because of replace track is abstracted
1107
- */
1108
-
1109
-
1110
- function handleLocalVideoReplaceTrack(oldPeer, newPeer, newHmsTracks, newHmsSDkTracks) {
1111
- if (oldPeer.isLocal && oldPeer.videoTrack && newPeer.videoTrack && oldPeer.videoTrack !== newPeer.videoTrack) {
1112
- newHmsSDkTracks[oldPeer.videoTrack] = newHmsSDkTracks[newPeer.videoTrack];
1113
- delete newHmsSDkTracks[newPeer.videoTrack];
1114
- newHmsTracks[oldPeer.videoTrack] = newHmsTracks[newPeer.videoTrack];
1115
- newHmsTracks[oldPeer.videoTrack].id = oldPeer.videoTrack;
1116
- delete newHmsTracks[newPeer.videoTrack];
1117
- newPeer.videoTrack = oldPeer.videoTrack;
1118
- }
1119
- }
1120
1103
 
1121
1104
  var SDKToHMS = /*#__PURE__*/function () {
1122
1105
  function SDKToHMS() {}
@@ -1131,8 +1114,8 @@ var SDKToHMS = /*#__PURE__*/function () {
1131
1114
  isLocal: sdkPeer.isLocal,
1132
1115
  videoTrack: (_sdkPeer$videoTrack = sdkPeer.videoTrack) == null ? void 0 : _sdkPeer$videoTrack.trackId,
1133
1116
  audioTrack: (_sdkPeer$audioTrack = sdkPeer.audioTrack) == null ? void 0 : _sdkPeer$audioTrack.trackId,
1134
- auxiliaryTracks: sdkPeer.auxiliaryTracks.map(function (t) {
1135
- return t.trackId;
1117
+ auxiliaryTracks: sdkPeer.auxiliaryTracks.map(function (track) {
1118
+ return track.trackId;
1136
1119
  }),
1137
1120
  customerUserId: sdkPeer.customerUserId,
1138
1121
  customerDescription: sdkPeer.customerDescription
@@ -1938,6 +1921,19 @@ var HMSLogger = /*#__PURE__*/function () {
1938
1921
  }
1939
1922
 
1940
1923
  this.log.apply(this, [HMSLogLevel.ERROR].concat(data));
1924
+ };
1925
+
1926
+ HMSLogger.time = function time(mark) {
1927
+ this.log(HMSLogLevel.TIME, '[HMSPerformanceTiming]', mark);
1928
+ };
1929
+
1930
+ HMSLogger.timeEnd = function timeEnd(mark) {
1931
+ this.log(HMSLogLevel.TIMEEND, '[HMSPerformanceTiming]', mark, mark);
1932
+ };
1933
+
1934
+ HMSLogger.cleanUp = function cleanUp() {
1935
+ performance.clearMarks();
1936
+ performance.clearMeasures();
1941
1937
  }
1942
1938
  /* eslint-disable */
1943
1939
  ;
@@ -1994,6 +1990,30 @@ var HMSLogger = /*#__PURE__*/function () {
1994
1990
 
1995
1991
  (_console5 = console).error.apply(_console5, [HMS_STORE_TAG].concat(data));
1996
1992
 
1993
+ break;
1994
+ }
1995
+
1996
+ case HMSLogLevel.TIME:
1997
+ {
1998
+ performance.mark(data[1]);
1999
+ break;
2000
+ }
2001
+
2002
+ case HMSLogLevel.TIMEEND:
2003
+ {
2004
+ var tag = data[0];
2005
+ var mark = data[1];
2006
+
2007
+ try {
2008
+ var entry = performance.measure(mark, mark); //@ts-ignore
2009
+
2010
+ this.log(HMSLogLevel.DEBUG, tag, mark, entry == null ? void 0 : entry.duration);
2011
+ performance.clearMarks(mark);
2012
+ performance.clearMeasures(mark);
2013
+ } catch (error) {
2014
+ this.log(HMSLogLevel.DEBUG, tag, mark, error);
2015
+ }
2016
+
1997
2017
  break;
1998
2018
  }
1999
2019
  }
@@ -2681,42 +2701,26 @@ var HMSSDKActions = /*#__PURE__*/function () {
2681
2701
  Object.assign(draftStore.playlist, SDKToHMS.convertPlaylist(_this.sdk.getPlaylistManager()));
2682
2702
  }, action);
2683
2703
  };
2684
- /**
2685
- * Handle store update on remote track changes
2686
- * @param {string} action - 'trackAdded' | 'trackUpdate'
2687
- * @param {SDKHMSTrack} track - track added/updated
2688
- * @param {sdkTypes.HMSPeer}peer - peer on which track is added/updated
2689
- */
2690
2704
 
2705
+ this.sendPeerUpdateNotification = function (type, sdkPeer) {
2706
+ var peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
2691
2707
 
2692
- this.syncRemoteTrackState = function (action, track, peer) {
2693
- _this.setState(function (draftStore) {
2694
- var draftPeer = draftStore.peers[peer.peerId];
2695
- /**
2696
- * in preview -> leave -> join flow or join -> leave -> join flow,
2697
- * since peer will be cleared by leave, set peer again in the store
2698
- **/
2699
-
2700
- if (!draftPeer) {
2701
- var hmsPeer = SDKToHMS.convertPeer(peer);
2702
- draftStore.peers[peer.peerId] = hmsPeer;
2703
- draftPeer = hmsPeer;
2704
- }
2708
+ var actionName = 'peerUpdate';
2705
2709
 
2706
- var hmsTrack = SDKToHMS.convertTrack(track, peer.peerId);
2710
+ if (type === HMSPeerUpdate.PEER_JOINED) {
2711
+ actionName = 'peerJoined';
2712
+ } else if (type === HMSPeerUpdate.PEER_LEFT) {
2713
+ actionName = 'peerLeft';
2714
+ }
2707
2715
 
2708
- if (action === 'trackAdded') {
2709
- draftStore.tracks[hmsTrack.id] = hmsTrack;
2716
+ _this.syncRoomState(actionName); // if peer wasn't available before sync(will happen if event is peer join)
2710
2717
 
2711
- _this.updateTracksInPeer(peer, draftPeer, hmsTrack);
2712
- } else if (draftStore.tracks[hmsTrack.id]) {
2713
- Object.assign(draftStore.tracks[hmsTrack.id], hmsTrack);
2714
- } else {
2715
- _this.logPossibleInconsistency("track " + hmsTrack.id + " not present, unable to update track");
2716
- }
2717
2718
 
2718
- _this.hmsSDKTracks[track.trackId] = track;
2719
- }, action);
2719
+ if (!peer) {
2720
+ peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
2721
+ }
2722
+
2723
+ _this.hmsNotifications.sendPeerUpdate(type, peer);
2720
2724
  };
2721
2725
  /**
2722
2726
  * setState is separate so any future changes to how state change can be done from one place.
@@ -3878,6 +3882,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
3878
3882
  }, reason);
3879
3883
  this.isRoomJoinCalled = false;
3880
3884
  this.hmsSDKTracks = {};
3885
+ HMSLogger.cleanUp();
3881
3886
  };
3882
3887
 
3883
3888
  _proto.sdkJoinWithListeners = function sdkJoinWithListeners(config) {
@@ -4126,7 +4131,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4126
4131
  _proto.syncRoomState = function syncRoomState(action) {
4127
4132
  var _this9 = this;
4128
4133
 
4129
- console.time('syncRoomState');
4134
+ HMSLogger.time("store-sync-" + action);
4130
4135
  var newHmsPeers = {};
4131
4136
  var newHmsPeerIDs = []; // to add in room.peers
4132
4137
 
@@ -4170,7 +4175,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4170
4175
  var draftPeers = draftStore.peers;
4171
4176
  var draftTracks = draftStore.tracks; // the order of below statements are important as merge functions are mutating
4172
4177
 
4173
- mergeNewPeersInDraft(draftPeers, newHmsPeers, newHmsTracks, newHmsSDkTracks);
4178
+ mergeNewPeersInDraft(draftPeers, newHmsPeers);
4174
4179
  mergeNewTracksInDraft(draftTracks, newHmsTracks);
4175
4180
  Object.assign(draftStore.settings, newMediaSettings);
4176
4181
  _this9.hmsSDKTracks = newHmsSDkTracks;
@@ -4178,7 +4183,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4178
4183
  Object.assign(draftStore.playlist, SDKToHMS.convertPlaylist(_this9.sdk.getPlaylistManager()));
4179
4184
  Object.assign(draftStore.room, SDKToHMS.convertRecordingRTMPState(recording, rtmp));
4180
4185
  }, action);
4181
- console.timeEnd('syncRoomState');
4186
+ HMSLogger.timeEnd("store-sync-" + action);
4182
4187
  };
4183
4188
 
4184
4189
  _proto.onPreview = function onPreview(sdkRoom) {
@@ -4217,19 +4222,28 @@ var HMSSDKActions = /*#__PURE__*/function () {
4217
4222
  };
4218
4223
 
4219
4224
  _proto.onPeerUpdate = function onPeerUpdate(type, sdkPeer) {
4220
- if (type === HMSPeerUpdate.BECAME_DOMINANT_SPEAKER || type === HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER) {
4225
+ if ([HMSPeerUpdate.BECAME_DOMINANT_SPEAKER, HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(type)) {
4221
4226
  return; // ignore, high frequency update so no point of syncing peers
4222
- } else if (Array.isArray(sdkPeer)) {
4227
+ }
4228
+
4229
+ if (Array.isArray(sdkPeer)) {
4223
4230
  this.syncRoomState('peersJoined');
4231
+ var hmsPeers = [];
4224
4232
 
4225
4233
  for (var _iterator3 = _createForOfIteratorHelperLoose(sdkPeer), _step3; !(_step3 = _iterator3()).done;) {
4226
4234
  var peer = _step3.value;
4227
4235
  var hmsPeer = this.store.getState(selectPeerByID(peer.peerId));
4228
- this.hmsNotifications.sendPeerUpdate(type, hmsPeer);
4236
+
4237
+ if (hmsPeer) {
4238
+ hmsPeers.push(hmsPeer);
4239
+ }
4229
4240
  }
4230
- } else {
4231
- this.peerUpdateInternal(type, sdkPeer);
4241
+
4242
+ this.hmsNotifications.sendPeerList(hmsPeers);
4243
+ return;
4232
4244
  }
4245
+
4246
+ this.sendPeerUpdateNotification(type, sdkPeer);
4233
4247
  };
4234
4248
 
4235
4249
  _proto.onTrackUpdate = function onTrackUpdate(type, track, peer) {
@@ -4240,7 +4254,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4240
4254
  this.handleTrackRemove(track, peer);
4241
4255
  } else {
4242
4256
  var actionName = type === HMSTrackUpdate.TRACK_ADDED ? 'trackAdded' : 'trackUpdate';
4243
- this.syncRemoteTrackState(actionName, track, peer);
4257
+ this.syncRoomState(actionName);
4244
4258
  this.hmsNotifications.sendTrackUpdate(type, track.trackId);
4245
4259
  }
4246
4260
  };
@@ -4422,22 +4436,23 @@ var HMSSDKActions = /*#__PURE__*/function () {
4422
4436
 
4423
4437
  this.setState(function (draftStore) {
4424
4438
  var hmsPeer = draftStore.peers[sdkPeer.peerId];
4425
- var draftTracks = draftStore.tracks; // find and remove the exact track from hmsPeer
4439
+ var draftTracks = draftStore.tracks;
4440
+ var trackId = sdkTrack.trackId; // find and remove the exact track from hmsPeer
4426
4441
 
4427
- if (_this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.audioTrack)) {
4442
+ if (_this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.audioTrack)) {
4428
4443
  hmsPeer == null ? true : delete hmsPeer.audioTrack;
4429
- } else if (_this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.videoTrack)) {
4444
+ } else if (_this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.videoTrack)) {
4430
4445
  hmsPeer == null ? true : delete hmsPeer.videoTrack;
4431
4446
  } else {
4432
- var auxiliaryIndex = hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.indexOf(sdkTrack.trackId);
4447
+ var auxiliaryIndex = hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.indexOf(trackId);
4433
4448
 
4434
- if (auxiliaryIndex > -1 && _this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks[auxiliaryIndex])) {
4449
+ if (auxiliaryIndex > -1 && _this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks[auxiliaryIndex])) {
4435
4450
  hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.splice(auxiliaryIndex, 1);
4436
4451
  }
4437
4452
  }
4438
4453
 
4439
- delete draftTracks[sdkTrack.trackId];
4440
- delete _this12.hmsSDKTracks[sdkTrack.trackId];
4454
+ delete draftTracks[trackId];
4455
+ delete _this12.hmsSDKTracks[trackId];
4441
4456
  }, 'trackRemoved');
4442
4457
  };
4443
4458
 
@@ -4814,62 +4829,6 @@ var HMSSDKActions = /*#__PURE__*/function () {
4814
4829
  });
4815
4830
  };
4816
4831
 
4817
- _proto.peerUpdateInternal = function peerUpdateInternal(type, sdkPeer) {
4818
- var _this14 = this;
4819
-
4820
- // store peer in case it doesn't exist later(will happen if event is peer leave)
4821
- var peer = this.store.getState(selectPeerByID(sdkPeer.peerId));
4822
- var actionName = 'peerUpdate';
4823
-
4824
- if (type === HMSPeerUpdate.PEER_JOINED) {
4825
- actionName = 'peerJoined';
4826
- } else if (type === HMSPeerUpdate.PEER_LEFT) {
4827
- actionName = 'peerLeft';
4828
- }
4829
-
4830
- this.setState(function (draftStore) {
4831
- if (actionName === 'peerLeft') {
4832
- var index = draftStore.room.peers.indexOf(sdkPeer.peerId);
4833
-
4834
- if (index > -1) {
4835
- draftStore.room.peers.splice(index, 1);
4836
- }
4837
-
4838
- delete draftStore.peers[sdkPeer.peerId];
4839
- delete _this14.hmsSDKPeers[sdkPeer.peerId];
4840
- } else {
4841
- var hmsPeer = SDKToHMS.convertPeer(sdkPeer);
4842
-
4843
- if (draftStore.peers[hmsPeer.id]) {
4844
- Object.assign(draftStore.peers[hmsPeer.id], hmsPeer);
4845
- } else {
4846
- draftStore.peers[hmsPeer.id] = hmsPeer;
4847
- draftStore.room.peers.push(hmsPeer.id);
4848
- }
4849
-
4850
- _this14.hmsSDKPeers[sdkPeer.peerId] = sdkPeer;
4851
- }
4852
- }, actionName); // if peer wasn't available before sync(will happen if event is peer join)
4853
-
4854
- if (!peer) {
4855
- peer = this.store.getState(selectPeerByID(sdkPeer.peerId));
4856
- }
4857
-
4858
- this.hmsNotifications.sendPeerUpdate(type, peer);
4859
- };
4860
-
4861
- _proto.updateTracksInPeer = function updateTracksInPeer(peer, draftPeer, hmsTrack) {
4862
- var _peer$audioTrack, _peer$videoTrack;
4863
-
4864
- if (((_peer$audioTrack = peer.audioTrack) == null ? void 0 : _peer$audioTrack.trackId) === hmsTrack.id) {
4865
- draftPeer.audioTrack = hmsTrack.id;
4866
- } else if (((_peer$videoTrack = peer.videoTrack) == null ? void 0 : _peer$videoTrack.trackId) === hmsTrack.id) {
4867
- draftPeer.videoTrack = hmsTrack.id;
4868
- } else if (!draftPeer.auxiliaryTracks.includes(hmsTrack.id)) {
4869
- draftPeer.auxiliaryTracks.push(hmsTrack.id);
4870
- }
4871
- };
4872
-
4873
4832
  return HMSSDKActions;
4874
4833
  }();
4875
4834
 
@@ -4910,6 +4869,11 @@ var HMSNotifications = /*#__PURE__*/function () {
4910
4869
  this.emitEvent(notification);
4911
4870
  };
4912
4871
 
4872
+ _proto.sendPeerList = function sendPeerList(peers) {
4873
+ var notification = this.createNotification(HMSNotificationTypes.PEER_LIST, peers, HMSNotificationSeverity.INFO);
4874
+ this.emitEvent(notification);
4875
+ };
4876
+
4913
4877
  _proto.sendPeerUpdate = function sendPeerUpdate(type, peer) {
4914
4878
  var hmsPeer = this.store.getState(selectPeerByID(peer == null ? void 0 : peer.id)) || peer;
4915
4879
  var notificationType = PEER_NOTIFICATION_TYPES[type];