@100mslive/hms-video-store 0.2.69 → 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.
@@ -1,7 +1,7 @@
1
1
  import { IHMSNotifications } from '../IHMSNotifications';
2
2
  import { IHMSStore } from '../IHMSStore';
3
3
  import * as sdkTypes from './sdkTypes';
4
- import { HMSNotification, HMSPeer, HMSException, HMSMessage, HMSChangeTrackStateRequest, HMSChangeMultiTrackStateRequest, HMSLeaveRoomRequest, HMSDeviceChangeEvent } from '../schema';
4
+ import { HMSNotification, HMSPeer, HMSException, HMSMessage, HMSTrackID, HMSChangeTrackStateRequest, HMSChangeMultiTrackStateRequest, HMSLeaveRoomRequest, HMSDeviceChangeEvent } from '../schema';
5
5
  export declare class HMSNotifications implements IHMSNotifications {
6
6
  private id;
7
7
  private eventEmitter;
@@ -12,7 +12,7 @@ export declare class HMSNotifications implements IHMSNotifications {
12
12
  sendLeaveRoom(request: HMSLeaveRoomRequest): void;
13
13
  sendPeerList(peers: HMSPeer[]): void;
14
14
  sendPeerUpdate(type: sdkTypes.HMSPeerUpdate, peer: HMSPeer | null): void;
15
- sendTrackUpdate(type: sdkTypes.HMSTrackUpdate, trackID: string): void;
15
+ sendTrackUpdate(type: sdkTypes.HMSTrackUpdate, trackID: HMSTrackID): void;
16
16
  sendMessageReceived(message: HMSMessage): void;
17
17
  sendError(error: HMSException): void;
18
18
  sendReconnecting(error: HMSException): void;
@@ -145,15 +145,7 @@ export declare class HMSSDKActions implements IHMSActions {
145
145
  private getStoreLocalTrackIDfromSDKTrack;
146
146
  private setProgress;
147
147
  private syncPlaylistState;
148
- /**
149
- * Handle store update on remote track changes
150
- * @param {string} action - 'trackAdded' | 'trackUpdate'
151
- * @param {SDKHMSTrack} track - track added/updated
152
- * @param {sdkTypes.HMSPeer}peer - peer on which track is added/updated
153
- */
154
- private syncRemoteTrackState;
155
- private peerUpdateInternal;
156
- private updateTracksInPeer;
148
+ private sendPeerUpdateNotification;
157
149
  /**
158
150
  * setState is separate so any future changes to how state change can be done from one place.
159
151
  * @param fn
@@ -1,5 +1,4 @@
1
1
  import { HMSPeer, HMSPeerID, HMSTrack, HMSTrackID } from '../../schema';
2
- import { HMSTrack as SDKHMSTrack } from '@100mslive/hms-video';
3
2
  /**
4
3
  * updates draftPeers with newPeers ensuring minimal reference changes
5
4
  * @remarks
@@ -10,6 +9,6 @@ import { HMSTrack as SDKHMSTrack } from '@100mslive/hms-video';
10
9
  * @param newHmsTracks this will be update if required
11
10
  * @param newHmsSDkTracks this is future value of local hms tacks map
12
11
  */
13
- export declare const mergeNewPeersInDraft: (draftPeers: Record<HMSPeerID, HMSPeer>, newPeers: Record<HMSPeerID, Partial<HMSPeer>>, newHmsTracks: Record<HMSTrackID, Partial<HMSTrack>>, newHmsSDkTracks: Record<HMSTrackID, SDKHMSTrack>) => void;
12
+ export declare const mergeNewPeersInDraft: (draftPeers: Record<HMSPeerID, HMSPeer>, newPeers: Record<HMSPeerID, Partial<HMSPeer>>) => void;
14
13
  export declare const mergeNewTracksInDraft: (draftTracks: Record<HMSTrackID, HMSTrack>, newTracks: Record<HMSTrackID, Partial<HMSTrack>>) => void;
15
14
  export declare const areArraysEqual: <T>(arr1: T[], arr2?: T[] | undefined) => boolean;
@@ -996,7 +996,7 @@ var createDefaultStoreState = function createDefaultStoreState() {
996
996
  * @param newHmsTracks this will be update if required
997
997
  * @param newHmsSDkTracks this is future value of local hms tacks map
998
998
  */
999
- var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers, newHmsTracks, newHmsSDkTracks) {
999
+ var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers) {
1000
1000
  var peerIDs = union(Object.keys(draftPeers), Object.keys(newPeers));
1001
1001
 
1002
1002
  for (var _iterator = _createForOfIteratorHelperLoose(peerIDs), _step; !(_step = _iterator()).done;) {
@@ -1009,7 +1009,6 @@ var mergeNewPeersInDraft = function mergeNewPeersInDraft(draftPeers, newPeers, n
1009
1009
  newPeer.auxiliaryTracks = oldPeer.auxiliaryTracks;
1010
1010
  }
1011
1011
 
1012
- handleLocalVideoReplaceTrack(oldPeer, newPeer, newHmsTracks, newHmsSDkTracks);
1013
1012
  Object.assign(oldPeer, newPeer);
1014
1013
  } else if (isEntityRemoved(oldPeer, newPeer)) {
1015
1014
  delete draftPeers[peerID];
@@ -1097,23 +1096,6 @@ var union = function union(arr1, arr2) {
1097
1096
 
1098
1097
  return Array.from(set);
1099
1098
  };
1100
- /**
1101
- * on replace track, use prev video track id in peer object, this is because we
1102
- * don't want the peer or peers object reference to change, the fact that the video
1103
- * track is changed on mute/unmute because of replace track is abstracted
1104
- */
1105
-
1106
-
1107
- function handleLocalVideoReplaceTrack(oldPeer, newPeer, newHmsTracks, newHmsSDkTracks) {
1108
- if (oldPeer.isLocal && oldPeer.videoTrack && newPeer.videoTrack && oldPeer.videoTrack !== newPeer.videoTrack) {
1109
- newHmsSDkTracks[oldPeer.videoTrack] = newHmsSDkTracks[newPeer.videoTrack];
1110
- delete newHmsSDkTracks[newPeer.videoTrack];
1111
- newHmsTracks[oldPeer.videoTrack] = newHmsTracks[newPeer.videoTrack];
1112
- newHmsTracks[oldPeer.videoTrack].id = oldPeer.videoTrack;
1113
- delete newHmsTracks[newPeer.videoTrack];
1114
- newPeer.videoTrack = oldPeer.videoTrack;
1115
- }
1116
- }
1117
1099
 
1118
1100
  var SDKToHMS = /*#__PURE__*/function () {
1119
1101
  function SDKToHMS() {}
@@ -1128,8 +1110,8 @@ var SDKToHMS = /*#__PURE__*/function () {
1128
1110
  isLocal: sdkPeer.isLocal,
1129
1111
  videoTrack: (_sdkPeer$videoTrack = sdkPeer.videoTrack) == null ? void 0 : _sdkPeer$videoTrack.trackId,
1130
1112
  audioTrack: (_sdkPeer$audioTrack = sdkPeer.audioTrack) == null ? void 0 : _sdkPeer$audioTrack.trackId,
1131
- auxiliaryTracks: sdkPeer.auxiliaryTracks.map(function (t) {
1132
- return t.trackId;
1113
+ auxiliaryTracks: sdkPeer.auxiliaryTracks.map(function (track) {
1114
+ return track.trackId;
1133
1115
  }),
1134
1116
  customerUserId: sdkPeer.customerUserId,
1135
1117
  customerDescription: sdkPeer.customerDescription
@@ -2715,46 +2697,26 @@ var HMSSDKActions = /*#__PURE__*/function () {
2715
2697
  Object.assign(draftStore.playlist, SDKToHMS.convertPlaylist(_this.sdk.getPlaylistManager()));
2716
2698
  }, action);
2717
2699
  };
2718
- /**
2719
- * Handle store update on remote track changes
2720
- * @param {string} action - 'trackAdded' | 'trackUpdate'
2721
- * @param {SDKHMSTrack} track - track added/updated
2722
- * @param {sdkTypes.HMSPeer}peer - peer on which track is added/updated
2723
- */
2724
-
2725
2700
 
2726
- this.syncRemoteTrackState = function (action, track, peer) {
2727
- HMSLogger.time(action + "-" + track.trackId);
2701
+ this.sendPeerUpdateNotification = function (type, sdkPeer) {
2702
+ var peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
2728
2703
 
2729
- _this.setState(function (draftStore) {
2730
- var draftPeer = draftStore.peers[peer.peerId];
2731
- /**
2732
- * in preview -> leave -> join flow or join -> leave -> join flow,
2733
- * since peer will be cleared by leave, set peer again in the store
2734
- **/
2735
-
2736
- if (!draftPeer) {
2737
- var hmsPeer = SDKToHMS.convertPeer(peer);
2738
- draftStore.peers[peer.peerId] = hmsPeer;
2739
- draftPeer = hmsPeer;
2740
- }
2704
+ var actionName = 'peerUpdate';
2741
2705
 
2742
- var hmsTrack = SDKToHMS.convertTrack(track, peer.peerId);
2706
+ if (type === sdkTypes.HMSPeerUpdate.PEER_JOINED) {
2707
+ actionName = 'peerJoined';
2708
+ } else if (type === sdkTypes.HMSPeerUpdate.PEER_LEFT) {
2709
+ actionName = 'peerLeft';
2710
+ }
2743
2711
 
2744
- if (action === 'trackAdded') {
2745
- draftStore.tracks[hmsTrack.id] = hmsTrack;
2712
+ _this.syncRoomState(actionName); // if peer wasn't available before sync(will happen if event is peer join)
2746
2713
 
2747
- _this.updateTracksInPeer(peer, draftPeer, hmsTrack);
2748
- } else if (draftStore.tracks[hmsTrack.id]) {
2749
- Object.assign(draftStore.tracks[hmsTrack.id], hmsTrack);
2750
- } else {
2751
- _this.logPossibleInconsistency("track " + hmsTrack.id + " not present, unable to update track");
2752
- }
2753
2714
 
2754
- _this.hmsSDKTracks[track.trackId] = track;
2755
- }, action);
2715
+ if (!peer) {
2716
+ peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
2717
+ }
2756
2718
 
2757
- HMSLogger.timeEnd(action + "-" + track.trackId);
2719
+ _this.hmsNotifications.sendPeerUpdate(type, peer);
2758
2720
  };
2759
2721
  /**
2760
2722
  * setState is separate so any future changes to how state change can be done from one place.
@@ -4209,7 +4171,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4209
4171
  var draftPeers = draftStore.peers;
4210
4172
  var draftTracks = draftStore.tracks; // the order of below statements are important as merge functions are mutating
4211
4173
 
4212
- mergeNewPeersInDraft(draftPeers, newHmsPeers, newHmsTracks, newHmsSDkTracks);
4174
+ mergeNewPeersInDraft(draftPeers, newHmsPeers);
4213
4175
  mergeNewTracksInDraft(draftTracks, newHmsTracks);
4214
4176
  Object.assign(draftStore.settings, newMediaSettings);
4215
4177
  _this9.hmsSDKTracks = newHmsSDkTracks;
@@ -4256,9 +4218,11 @@ var HMSSDKActions = /*#__PURE__*/function () {
4256
4218
  };
4257
4219
 
4258
4220
  _proto.onPeerUpdate = function onPeerUpdate(type, sdkPeer) {
4259
- if (type === sdkTypes.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER || type === sdkTypes.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER) {
4221
+ if ([sdkTypes.HMSPeerUpdate.BECAME_DOMINANT_SPEAKER, sdkTypes.HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER].includes(type)) {
4260
4222
  return; // ignore, high frequency update so no point of syncing peers
4261
- } else if (Array.isArray(sdkPeer)) {
4223
+ }
4224
+
4225
+ if (Array.isArray(sdkPeer)) {
4262
4226
  this.syncRoomState('peersJoined');
4263
4227
  var hmsPeers = [];
4264
4228
 
@@ -4272,9 +4236,10 @@ var HMSSDKActions = /*#__PURE__*/function () {
4272
4236
  }
4273
4237
 
4274
4238
  this.hmsNotifications.sendPeerList(hmsPeers);
4275
- } else {
4276
- this.peerUpdateInternal(type, sdkPeer);
4239
+ return;
4277
4240
  }
4241
+
4242
+ this.sendPeerUpdateNotification(type, sdkPeer);
4278
4243
  };
4279
4244
 
4280
4245
  _proto.onTrackUpdate = function onTrackUpdate(type, track, peer) {
@@ -4285,7 +4250,7 @@ var HMSSDKActions = /*#__PURE__*/function () {
4285
4250
  this.handleTrackRemove(track, peer);
4286
4251
  } else {
4287
4252
  var actionName = type === sdkTypes.HMSTrackUpdate.TRACK_ADDED ? 'trackAdded' : 'trackUpdate';
4288
- this.syncRemoteTrackState(actionName, track, peer);
4253
+ this.syncRoomState(actionName);
4289
4254
  this.hmsNotifications.sendTrackUpdate(type, track.trackId);
4290
4255
  }
4291
4256
  };
@@ -4467,22 +4432,23 @@ var HMSSDKActions = /*#__PURE__*/function () {
4467
4432
 
4468
4433
  this.setState(function (draftStore) {
4469
4434
  var hmsPeer = draftStore.peers[sdkPeer.peerId];
4470
- var draftTracks = draftStore.tracks; // find and remove the exact track from hmsPeer
4435
+ var draftTracks = draftStore.tracks;
4436
+ var trackId = sdkTrack.trackId; // find and remove the exact track from hmsPeer
4471
4437
 
4472
- if (_this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.audioTrack)) {
4438
+ if (_this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.audioTrack)) {
4473
4439
  hmsPeer == null ? true : delete hmsPeer.audioTrack;
4474
- } else if (_this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.videoTrack)) {
4440
+ } else if (_this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.videoTrack)) {
4475
4441
  hmsPeer == null ? true : delete hmsPeer.videoTrack;
4476
4442
  } else {
4477
- var auxiliaryIndex = hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.indexOf(sdkTrack.trackId);
4443
+ var auxiliaryIndex = hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.indexOf(trackId);
4478
4444
 
4479
- if (auxiliaryIndex > -1 && _this12.isSameStoreSDKTrack(sdkTrack.trackId, hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks[auxiliaryIndex])) {
4445
+ if (auxiliaryIndex > -1 && _this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks[auxiliaryIndex])) {
4480
4446
  hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.splice(auxiliaryIndex, 1);
4481
4447
  }
4482
4448
  }
4483
4449
 
4484
- delete draftTracks[sdkTrack.trackId];
4485
- delete _this12.hmsSDKTracks[sdkTrack.trackId];
4450
+ delete draftTracks[trackId];
4451
+ delete _this12.hmsSDKTracks[trackId];
4486
4452
  }, 'trackRemoved');
4487
4453
  };
4488
4454
 
@@ -4859,64 +4825,6 @@ var HMSSDKActions = /*#__PURE__*/function () {
4859
4825
  });
4860
4826
  };
4861
4827
 
4862
- _proto.peerUpdateInternal = function peerUpdateInternal(type, sdkPeer) {
4863
- var _this14 = this;
4864
-
4865
- // store peer in case it doesn't exist later(will happen if event is peer leave)
4866
- var peer = this.store.getState(selectPeerByID(sdkPeer.peerId));
4867
- var actionName = 'peerUpdate';
4868
-
4869
- if (type === sdkTypes.HMSPeerUpdate.PEER_JOINED) {
4870
- actionName = 'peerJoined';
4871
- } else if (type === sdkTypes.HMSPeerUpdate.PEER_LEFT) {
4872
- actionName = 'peerLeft';
4873
- }
4874
-
4875
- HMSLogger.time(actionName + "-" + sdkPeer.peerId);
4876
- this.setState(function (draftStore) {
4877
- if (actionName === 'peerLeft') {
4878
- var index = draftStore.room.peers.indexOf(sdkPeer.peerId);
4879
-
4880
- if (index > -1) {
4881
- draftStore.room.peers.splice(index, 1);
4882
- }
4883
-
4884
- delete draftStore.peers[sdkPeer.peerId];
4885
- delete _this14.hmsSDKPeers[sdkPeer.peerId];
4886
- } else {
4887
- var hmsPeer = SDKToHMS.convertPeer(sdkPeer);
4888
-
4889
- if (draftStore.peers[hmsPeer.id]) {
4890
- Object.assign(draftStore.peers[hmsPeer.id], hmsPeer);
4891
- } else {
4892
- draftStore.peers[hmsPeer.id] = hmsPeer;
4893
- draftStore.room.peers.push(hmsPeer.id);
4894
- }
4895
-
4896
- _this14.hmsSDKPeers[sdkPeer.peerId] = sdkPeer;
4897
- }
4898
- }, actionName);
4899
- HMSLogger.time(actionName + "-" + sdkPeer.peerId); // if peer wasn't available before sync(will happen if event is peer join)
4900
-
4901
- if (!peer) {
4902
- peer = this.store.getState(selectPeerByID(sdkPeer.peerId));
4903
- }
4904
-
4905
- this.hmsNotifications.sendPeerUpdate(type, peer);
4906
- };
4907
-
4908
- _proto.updateTracksInPeer = function updateTracksInPeer(peer, draftPeer, hmsTrack) {
4909
- var _peer$audioTrack, _peer$videoTrack;
4910
-
4911
- if (((_peer$audioTrack = peer.audioTrack) == null ? void 0 : _peer$audioTrack.trackId) === hmsTrack.id) {
4912
- draftPeer.audioTrack = hmsTrack.id;
4913
- } else if (((_peer$videoTrack = peer.videoTrack) == null ? void 0 : _peer$videoTrack.trackId) === hmsTrack.id) {
4914
- draftPeer.videoTrack = hmsTrack.id;
4915
- } else if (!draftPeer.auxiliaryTracks.includes(hmsTrack.id)) {
4916
- draftPeer.auxiliaryTracks.push(hmsTrack.id);
4917
- }
4918
- };
4919
-
4920
4828
  return HMSSDKActions;
4921
4829
  }();
4922
4830