@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.15
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/common/browser-detection.js +1 -0
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -5
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -5
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -6
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -5
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -5
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -5
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -4
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -5
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -5
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +11 -8
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +2 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +2 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/internal-media-core-wrapper.js.map +1 -1
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +1 -1
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +118 -89
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +1 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +25 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +8 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +5 -5
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +2 -2
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +48 -48
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +251 -250
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -2
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +14 -14
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +31 -31
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +43 -43
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +23 -20
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +2 -1
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +2 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +8 -8
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +7 -7
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +3 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +4 -4
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +5 -5
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +4 -1
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +18 -18
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +11 -11
- package/src/constants.ts +1 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +123 -135
- package/src/media/internal-media-core-wrapper.ts +2 -2
- package/src/media/properties.ts +30 -20
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1576 -1291
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +174 -113
- package/src/meeting/request.type.ts +11 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +101 -70
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +512 -440
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +29 -29
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +182 -126
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/multistream/multistreamMedia.ts +1 -0
- package/src/multistream/receiveSlot.ts +1 -0
- package/src/multistream/receiveSlotManager.ts +1 -0
- package/src/multistream/remoteMedia.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +2 -1
- package/src/multistream/remoteMediaManager.ts +3 -0
- package/src/networkQualityMonitor/index.ts +20 -23
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +4 -3
- package/src/reconnection-manager/index.ts +139 -84
- package/src/roap/index.ts +46 -38
- package/src/roap/request.ts +44 -31
- package/src/roap/turnDiscovery.ts +59 -30
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +432 -175
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +663 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +36 -46
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1342 -684
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +75 -45
- package/test/unit/spec/meeting/utils.js +78 -53
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +438 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +5 -6
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +9 -11
- package/test/unit/spec/reconnection-manager/index.js +16 -18
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/stats-analyzer/index.js +25 -20
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +53 -50
|
@@ -7,11 +7,7 @@
|
|
|
7
7
|
import _ from 'lodash';
|
|
8
8
|
|
|
9
9
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
10
|
-
import {
|
|
11
|
-
ICE_GATHERING_STATE,
|
|
12
|
-
CONNECTION_STATE,
|
|
13
|
-
REACHABILITY
|
|
14
|
-
} from '../constants';
|
|
10
|
+
import {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';
|
|
15
11
|
|
|
16
12
|
import ReachabilityRequest from './request';
|
|
17
13
|
|
|
@@ -54,7 +50,6 @@ export default class Reachability {
|
|
|
54
50
|
this.clusterLatencyResults = {};
|
|
55
51
|
}
|
|
56
52
|
|
|
57
|
-
|
|
58
53
|
/**
|
|
59
54
|
* fetches reachability data
|
|
60
55
|
* @returns {Object} reachability data
|
|
@@ -68,9 +63,10 @@ export default class Reachability {
|
|
|
68
63
|
// Remove stored reachability results to ensure no stale data
|
|
69
64
|
if (window?.localStorage?.removeItem) {
|
|
70
65
|
window.localStorage.removeItem(REACHABILITY.localStorage);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
} else {
|
|
67
|
+
LoggerProxy.logger.error(
|
|
68
|
+
'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'
|
|
69
|
+
);
|
|
74
70
|
|
|
75
71
|
return {};
|
|
76
72
|
}
|
|
@@ -84,12 +80,15 @@ export default class Reachability {
|
|
|
84
80
|
|
|
85
81
|
window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));
|
|
86
82
|
|
|
87
|
-
LoggerProxy.logger.log(
|
|
83
|
+
LoggerProxy.logger.log(
|
|
84
|
+
'Reachability:index#gatherReachability --> Reachability checks completed'
|
|
85
|
+
);
|
|
88
86
|
|
|
89
87
|
return results;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
} catch (getClusterError) {
|
|
89
|
+
LoggerProxy.logger.error(
|
|
90
|
+
`Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`
|
|
91
|
+
);
|
|
93
92
|
|
|
94
93
|
return {};
|
|
95
94
|
}
|
|
@@ -109,17 +108,19 @@ export default class Reachability {
|
|
|
109
108
|
try {
|
|
110
109
|
const reachabilityResults = JSON.parse(reachabilityData);
|
|
111
110
|
|
|
112
|
-
reachable = Object.values(reachabilityResults).some(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
reachable = Object.values(reachabilityResults).some(
|
|
112
|
+
(result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'
|
|
113
|
+
);
|
|
114
|
+
} catch (e) {
|
|
115
|
+
LoggerProxy.logger.error(
|
|
116
|
+
`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`
|
|
117
|
+
);
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
return reachable;
|
|
120
122
|
}
|
|
121
123
|
|
|
122
|
-
|
|
123
124
|
/**
|
|
124
125
|
* Generate peerConnection config settings
|
|
125
126
|
* @param {object} cluster
|
|
@@ -128,25 +129,19 @@ export default class Reachability {
|
|
|
128
129
|
* @memberof Reachability
|
|
129
130
|
*/
|
|
130
131
|
private buildPeerConnectionConfig(cluster: any) {
|
|
131
|
-
const iceServers = _.uniq([
|
|
132
|
-
...cluster.udp,
|
|
133
|
-
...cluster.tcp
|
|
134
|
-
]).map((url) => ({
|
|
132
|
+
const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({
|
|
135
133
|
username: '',
|
|
136
134
|
credential: '',
|
|
137
|
-
urls: [url]
|
|
135
|
+
urls: [url],
|
|
138
136
|
}));
|
|
139
137
|
|
|
140
138
|
return {
|
|
141
|
-
iceServers: [
|
|
142
|
-
...iceServers
|
|
143
|
-
],
|
|
139
|
+
iceServers: [...iceServers],
|
|
144
140
|
iceCandidatePoolSize: '0',
|
|
145
|
-
iceTransportPolicy: 'all'
|
|
141
|
+
iceTransportPolicy: 'all',
|
|
146
142
|
};
|
|
147
143
|
}
|
|
148
144
|
|
|
149
|
-
|
|
150
145
|
/**
|
|
151
146
|
* Creates an RTCPeerConnection
|
|
152
147
|
* @param {object} cluster
|
|
@@ -164,15 +159,15 @@ export default class Reachability {
|
|
|
164
159
|
peerConnection.key = key;
|
|
165
160
|
|
|
166
161
|
return peerConnection;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
} catch (peerConnectionError) {
|
|
163
|
+
LoggerProxy.logger.log(
|
|
164
|
+
`Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`
|
|
165
|
+
);
|
|
170
166
|
|
|
171
167
|
return null;
|
|
172
168
|
}
|
|
173
169
|
}
|
|
174
170
|
|
|
175
|
-
|
|
176
171
|
/**
|
|
177
172
|
* Gets total elapsed time
|
|
178
173
|
* @param {RTCPeerConnection} peerConnection
|
|
@@ -188,7 +183,6 @@ export default class Reachability {
|
|
|
188
183
|
return Date.now() - startTime;
|
|
189
184
|
}
|
|
190
185
|
|
|
191
|
-
|
|
192
186
|
/**
|
|
193
187
|
* creates offer and generates localSDP
|
|
194
188
|
* @param {object} clusterList cluster List
|
|
@@ -209,10 +203,14 @@ export default class Reachability {
|
|
|
209
203
|
peerConnection.begin = Date.now();
|
|
210
204
|
peerConnection.setLocalDescription(description);
|
|
211
205
|
|
|
212
|
-
return this.iceGatheringState(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
206
|
+
return this.iceGatheringState(
|
|
207
|
+
peerConnection,
|
|
208
|
+
cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT
|
|
209
|
+
).catch((iceGatheringStateError) => {
|
|
210
|
+
LoggerProxy.logger.log(
|
|
211
|
+
`Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`
|
|
212
|
+
);
|
|
213
|
+
});
|
|
216
214
|
});
|
|
217
215
|
|
|
218
216
|
return Promise.all(clusters)
|
|
@@ -225,7 +223,6 @@ export default class Reachability {
|
|
|
225
223
|
});
|
|
226
224
|
}
|
|
227
225
|
|
|
228
|
-
|
|
229
226
|
/**
|
|
230
227
|
* Get list of all unreachable clusters
|
|
231
228
|
* @returns {array} Unreachable clusters
|
|
@@ -247,7 +244,6 @@ export default class Reachability {
|
|
|
247
244
|
return unreachableList;
|
|
248
245
|
}
|
|
249
246
|
|
|
250
|
-
|
|
251
247
|
/**
|
|
252
248
|
* Attach an event handler for the icegatheringstatechange
|
|
253
249
|
* event and measure latency.
|
|
@@ -264,13 +260,15 @@ export default class Reachability {
|
|
|
264
260
|
const elapsed = this.getElapsedTime(peerConnection);
|
|
265
261
|
|
|
266
262
|
// @ts-ignore
|
|
267
|
-
LoggerProxy.logger.log(
|
|
263
|
+
LoggerProxy.logger.log(
|
|
264
|
+
`Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,
|
|
265
|
+
elapsed
|
|
266
|
+
);
|
|
268
267
|
this.setLatencyAndClose(peerConnection, elapsed);
|
|
269
268
|
}
|
|
270
269
|
};
|
|
271
270
|
}
|
|
272
271
|
|
|
273
|
-
|
|
274
272
|
/**
|
|
275
273
|
* Attach an event handler for the icecandidate
|
|
276
274
|
* event and measure latency.
|
|
@@ -287,7 +285,10 @@ export default class Reachability {
|
|
|
287
285
|
const elapsed = this.getElapsedTime(peerConnection);
|
|
288
286
|
|
|
289
287
|
// @ts-ignore
|
|
290
|
-
LoggerProxy.logger.log(
|
|
288
|
+
LoggerProxy.logger.log(
|
|
289
|
+
`Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,
|
|
290
|
+
elapsed
|
|
291
|
+
);
|
|
291
292
|
this.setLatencyAndClose(peerConnection, elapsed);
|
|
292
293
|
}
|
|
293
294
|
};
|
|
@@ -310,7 +311,7 @@ export default class Reachability {
|
|
|
310
311
|
get(target, property) {
|
|
311
312
|
const targetMember = target[property];
|
|
312
313
|
|
|
313
|
-
if (typeof
|
|
314
|
+
if (typeof targetMember === 'function') {
|
|
314
315
|
return targetMember.bind(target);
|
|
315
316
|
}
|
|
316
317
|
|
|
@@ -327,7 +328,7 @@ export default class Reachability {
|
|
|
327
328
|
|
|
328
329
|
// pass thru
|
|
329
330
|
return window.Reflect.set(target, property, value);
|
|
330
|
-
}
|
|
331
|
+
},
|
|
331
332
|
});
|
|
332
333
|
|
|
333
334
|
// Using peerConnection proxy so handle functions below
|
|
@@ -347,7 +348,6 @@ export default class Reachability {
|
|
|
347
348
|
});
|
|
348
349
|
}
|
|
349
350
|
|
|
350
|
-
|
|
351
351
|
/**
|
|
352
352
|
* Make a log of unreachable clusters.
|
|
353
353
|
* @returns {undefined}
|
|
@@ -358,11 +358,12 @@ export default class Reachability {
|
|
|
358
358
|
const list = this.getUnreachablClusters();
|
|
359
359
|
|
|
360
360
|
list.forEach((cluster) => {
|
|
361
|
-
LoggerProxy.logger.log(
|
|
361
|
+
LoggerProxy.logger.log(
|
|
362
|
+
`Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`
|
|
363
|
+
);
|
|
362
364
|
});
|
|
363
365
|
}
|
|
364
366
|
|
|
365
|
-
|
|
366
367
|
/**
|
|
367
368
|
* Calculates time to establish connection
|
|
368
369
|
* @param {array} iceResults iceResults
|
|
@@ -378,24 +379,22 @@ export default class Reachability {
|
|
|
378
379
|
|
|
379
380
|
if (elapsed === null) {
|
|
380
381
|
latencyResult = {reachable: 'false'};
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
382
|
+
} else {
|
|
383
383
|
latencyResult = {
|
|
384
384
|
reachable: 'true',
|
|
385
|
-
latencyInMilliseconds:
|
|
385
|
+
latencyInMilliseconds: elapsed.toString(),
|
|
386
386
|
};
|
|
387
387
|
}
|
|
388
388
|
|
|
389
389
|
reachabilityMap[clusterId] = {
|
|
390
390
|
udp: latencyResult,
|
|
391
|
-
tcp: latencyResult
|
|
391
|
+
tcp: latencyResult,
|
|
392
392
|
};
|
|
393
393
|
});
|
|
394
394
|
|
|
395
395
|
return reachabilityMap;
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
|
|
399
398
|
/**
|
|
400
399
|
* fetches reachability data
|
|
401
400
|
* @param {object} clusterList
|
|
@@ -413,21 +412,23 @@ export default class Reachability {
|
|
|
413
412
|
.then((localSDPData) => {
|
|
414
413
|
if (!localSDPData || !Object.keys(localSDPData).length) {
|
|
415
414
|
// TODO: handle the error condition properly and try retry
|
|
416
|
-
LoggerProxy.logger.log(
|
|
415
|
+
LoggerProxy.logger.log(
|
|
416
|
+
'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'
|
|
417
|
+
);
|
|
417
418
|
resolve({});
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
419
|
+
} else {
|
|
420
420
|
resolve(localSDPData);
|
|
421
421
|
}
|
|
422
422
|
})
|
|
423
423
|
.catch((error) => {
|
|
424
|
-
LoggerProxy.logger.error(
|
|
424
|
+
LoggerProxy.logger.error(
|
|
425
|
+
`Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`
|
|
426
|
+
);
|
|
425
427
|
resolve({});
|
|
426
428
|
});
|
|
427
429
|
});
|
|
428
430
|
}
|
|
429
431
|
|
|
430
|
-
|
|
431
432
|
/**
|
|
432
433
|
* Records latency and closes the peerConnection
|
|
433
434
|
* @param {RTCPeerConnection} peerConnection
|
|
@@ -446,7 +447,9 @@ export default class Reachability {
|
|
|
446
447
|
const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};
|
|
447
448
|
|
|
448
449
|
if (peerConnection.connectionState === CLOSED) {
|
|
449
|
-
LoggerProxy.logger.log(
|
|
450
|
+
LoggerProxy.logger.log(
|
|
451
|
+
`Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`
|
|
452
|
+
);
|
|
450
453
|
|
|
451
454
|
return;
|
|
452
455
|
}
|
|
@@ -462,7 +465,6 @@ export default class Reachability {
|
|
|
462
465
|
peerConnection.elapsed = elapsed;
|
|
463
466
|
}
|
|
464
467
|
|
|
465
|
-
|
|
466
468
|
/**
|
|
467
469
|
* utility function
|
|
468
470
|
* @returns {undefined}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
2
|
-
import {
|
|
3
|
-
HTTP_VERBS,
|
|
4
|
-
RESOURCE,
|
|
5
|
-
API
|
|
6
|
-
} from '../constants';
|
|
2
|
+
import {HTTP_VERBS, RESOURCE, API} from '../constants';
|
|
7
3
|
|
|
8
4
|
export interface ClusterNode {
|
|
9
5
|
isVideoMesh: boolean;
|
|
@@ -13,8 +9,8 @@ export interface ClusterNode {
|
|
|
13
9
|
}
|
|
14
10
|
|
|
15
11
|
export type ClusterList = {
|
|
16
|
-
[key:string]: ClusterNode;
|
|
17
|
-
}
|
|
12
|
+
[key: string]: ClusterNode;
|
|
13
|
+
};
|
|
18
14
|
|
|
19
15
|
/**
|
|
20
16
|
* @class ReachabilityRequest
|
|
@@ -37,41 +33,49 @@ class ReachabilityRequest {
|
|
|
37
33
|
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
38
34
|
* @returns {Promise}
|
|
39
35
|
*/
|
|
40
|
-
getClusters = (): Promise<ClusterList> =>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
getClusters = (): Promise<ClusterList> =>
|
|
37
|
+
this.webex
|
|
38
|
+
.request({
|
|
39
|
+
method: HTTP_VERBS.GET,
|
|
40
|
+
shouldRefreshAccessToken: false,
|
|
41
|
+
api: API.CALLIOPEDISCOVERY,
|
|
42
|
+
resource: RESOURCE.CLUSTERS,
|
|
43
|
+
})
|
|
44
|
+
.then((res) => {
|
|
45
|
+
const {clusters} = res.body;
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
Object.keys(clusters).forEach((key) => {
|
|
48
|
+
clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
|
|
49
|
+
});
|
|
52
50
|
|
|
53
|
-
|
|
51
|
+
LoggerProxy.logger.log(
|
|
52
|
+
`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
|
|
53
|
+
);
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
return clusters;
|
|
56
|
+
});
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* gets remote SDP For Clusters
|
|
60
60
|
* @param {Object} localSDPList localSDPs for the cluster
|
|
61
61
|
* @returns {Object}
|
|
62
62
|
*/
|
|
63
|
-
remoteSDPForClusters = (localSDPList: object) =>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
remoteSDPForClusters = (localSDPList: object) =>
|
|
64
|
+
this.webex
|
|
65
|
+
.request({
|
|
66
|
+
method: HTTP_VERBS.POST,
|
|
67
|
+
shouldRefreshAccessToken: false,
|
|
68
|
+
api: API.CALLIOPEDISCOVERY,
|
|
69
|
+
resource: RESOURCE.REACHABILITY,
|
|
70
|
+
body: {offers: localSDPList},
|
|
71
|
+
})
|
|
72
|
+
.then((res) => {
|
|
73
|
+
LoggerProxy.logger.log(
|
|
74
|
+
'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'
|
|
75
|
+
);
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
return res.body;
|
|
78
|
+
});
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
export default ReachabilityRequest;
|
|
@@ -4,7 +4,7 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
4
4
|
smile: {
|
|
5
5
|
type: 'smile',
|
|
6
6
|
codepoints: '1F642',
|
|
7
|
-
shortcodes: ':slightly_smiling_face:'
|
|
7
|
+
shortcodes: ':slightly_smiling_face:',
|
|
8
8
|
},
|
|
9
9
|
sad: {
|
|
10
10
|
type: 'sad',
|
|
@@ -19,7 +19,7 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
19
19
|
haha: {
|
|
20
20
|
type: 'haha',
|
|
21
21
|
codepoints: '1F603',
|
|
22
|
-
shortcodes: ':smiley:'
|
|
22
|
+
shortcodes: ':smiley:',
|
|
23
23
|
},
|
|
24
24
|
celebrate: {
|
|
25
25
|
type: 'celebrate',
|
|
@@ -65,7 +65,7 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
65
65
|
type: 'slow_down',
|
|
66
66
|
codepoints: '1F422',
|
|
67
67
|
shortcodes: ':turtle:',
|
|
68
|
-
}
|
|
68
|
+
},
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
const SkinTones: Record<SkinToneType, SkinTone> = {
|
|
@@ -98,7 +98,7 @@ const SkinTones: Record<SkinToneType, SkinTone> = {
|
|
|
98
98
|
type: 'dark_skin_tone',
|
|
99
99
|
codepoints: '1F3FF',
|
|
100
100
|
shortcodes: ':skin-tone-6:',
|
|
101
|
-
}
|
|
101
|
+
},
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export {Reactions, SkinTones};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
2
1
|
export type EmoticonData = {
|
|
3
2
|
type: string;
|
|
4
3
|
codepoints?: string;
|
|
5
4
|
shortcodes?: string;
|
|
6
|
-
}
|
|
5
|
+
};
|
|
7
6
|
|
|
8
7
|
export type SkinTone = EmoticonData;
|
|
9
8
|
export type Reaction = EmoticonData & {
|
|
10
9
|
tone?: SkinTone;
|
|
11
|
-
}
|
|
10
|
+
};
|
|
12
11
|
|
|
12
|
+
// eslint-disable-next-line no-shadow
|
|
13
13
|
export enum ReactionType {
|
|
14
14
|
smile = 'smile',
|
|
15
15
|
sad = 'sad',
|
|
@@ -26,6 +26,7 @@ export enum ReactionType {
|
|
|
26
26
|
slow_down = 'slow_down',
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
// eslint-disable-next-line no-shadow
|
|
29
30
|
export enum SkinToneType {
|
|
30
31
|
normal = 'normal',
|
|
31
32
|
light = 'light',
|