@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.
- package/dist/core/hmsSDKStore/HMSNotifications.d.ts +2 -2
- package/dist/core/hmsSDKStore/HMSSDKActions.d.ts +1 -9
- package/dist/core/hmsSDKStore/sdkUtils/storeMergeUtils.d.ts +1 -2
- package/dist/hms-video-store.cjs.development.js +33 -125
- 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 +33 -125
- package/dist/hms-video-store.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/core/hmsSDKStore/HMSNotifications.ts +2 -1
- package/src/core/hmsSDKStore/HMSSDKActions.ts +22 -83
- package/src/core/hmsSDKStore/adapter.ts +1 -1
- package/src/core/hmsSDKStore/sdkUtils/storeMergeUtils.ts +0 -30
- package/src/test/unit/storeMergeUtils.test.ts +6 -6
|
@@ -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:
|
|
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
|
|
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
|
|
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 (
|
|
1132
|
-
return
|
|
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.
|
|
2727
|
-
|
|
2701
|
+
this.sendPeerUpdateNotification = function (type, sdkPeer) {
|
|
2702
|
+
var peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
|
|
2728
2703
|
|
|
2729
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2755
|
-
|
|
2715
|
+
if (!peer) {
|
|
2716
|
+
peer = _this.store.getState(selectPeerByID(sdkPeer.peerId));
|
|
2717
|
+
}
|
|
2756
2718
|
|
|
2757
|
-
|
|
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
|
|
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 (
|
|
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
|
-
}
|
|
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
|
-
|
|
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.
|
|
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;
|
|
4435
|
+
var draftTracks = draftStore.tracks;
|
|
4436
|
+
var trackId = sdkTrack.trackId; // find and remove the exact track from hmsPeer
|
|
4471
4437
|
|
|
4472
|
-
if (_this12.isSameStoreSDKTrack(
|
|
4438
|
+
if (_this12.isSameStoreSDKTrack(trackId, hmsPeer == null ? void 0 : hmsPeer.audioTrack)) {
|
|
4473
4439
|
hmsPeer == null ? true : delete hmsPeer.audioTrack;
|
|
4474
|
-
} else if (_this12.isSameStoreSDKTrack(
|
|
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(
|
|
4443
|
+
var auxiliaryIndex = hmsPeer == null ? void 0 : hmsPeer.auxiliaryTracks.indexOf(trackId);
|
|
4478
4444
|
|
|
4479
|
-
if (auxiliaryIndex > -1 && _this12.isSameStoreSDKTrack(
|
|
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[
|
|
4485
|
-
delete _this12.hmsSDKTracks[
|
|
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
|
|