@webex/plugin-meetings 3.8.0-web-workers-keepalive.1 → 3.8.1-next.1
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/common/errors/webex-errors.js +12 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +22 -123
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +2 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +52 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +30 -10
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +83 -12
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +432 -418
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +17 -17
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +94 -6
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +9 -2
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +17 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +568 -328
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +0 -17
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +4 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +9 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +19 -13
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +76 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +14 -0
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +45 -9
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +3 -0
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +335 -356
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +137 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +38 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +36 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/clusterReachability.js +23 -31
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +42 -2
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/turnDiscovery.js +45 -27
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js +17 -0
- package/dist/roap/types.js.map +1 -0
- package/dist/types/common/errors/webex-errors.d.ts +7 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +15 -85
- package/dist/types/controls-options-manager/enums.d.ts +3 -1
- package/dist/types/controls-options-manager/types.d.ts +7 -1
- package/dist/types/locus-info/index.d.ts +3 -3
- package/dist/types/locus-info/selfUtils.d.ts +216 -1
- package/dist/types/media/properties.d.ts +15 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +16 -0
- package/dist/types/meeting/index.d.ts +35 -1
- package/dist/types/meeting/muteState.d.ts +0 -1
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +2 -1
- package/dist/types/meetings/index.d.ts +28 -0
- package/dist/types/member/index.d.ts +20 -6
- package/dist/types/member/types.d.ts +73 -14
- package/dist/types/member/util.d.ts +156 -1
- package/dist/types/members/collection.d.ts +6 -5
- package/dist/types/members/index.d.ts +32 -43
- package/dist/types/members/request.d.ts +26 -0
- package/dist/types/members/util.d.ts +27 -0
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/reachability/clusterReachability.d.ts +2 -6
- package/dist/types/reachability/index.d.ts +8 -0
- package/dist/types/roap/index.d.ts +3 -2
- package/dist/types/roap/turnDiscovery.d.ts +5 -17
- package/dist/types/roap/types.d.ts +16 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +24 -23
- package/src/breakouts/index.ts +69 -0
- package/src/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +2 -0
- package/src/constants.ts +23 -90
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/controls-options-manager/types.ts +11 -1
- package/src/controls-options-manager/util.ts +62 -0
- package/src/locus-info/controlsUtils.ts +48 -12
- package/src/locus-info/index.ts +88 -13
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +23 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +11 -2
- package/src/meeting/in-meeting-actions.ts +32 -0
- package/src/meeting/index.ts +356 -87
- package/src/meeting/locusMediaRequest.ts +0 -18
- package/src/meeting/muteState.ts +4 -4
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +9 -1
- package/src/meeting-info/meeting-info-v2.ts +7 -2
- package/src/meeting-info/utilv2.ts +5 -0
- package/src/meetings/index.ts +76 -0
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +57 -22
- package/src/member/types.ts +82 -16
- package/src/member/util.ts +357 -353
- package/src/members/collection.ts +4 -3
- package/src/members/index.ts +137 -18
- package/src/members/request.ts +44 -0
- package/src/members/util.ts +43 -1
- package/src/metrics/constants.ts +1 -0
- package/src/reachability/clusterReachability.ts +26 -25
- package/src/reachability/index.ts +55 -1
- package/src/reconnection-manager/index.ts +2 -2
- package/src/roap/index.ts +3 -7
- package/src/roap/turnDiscovery.ts +34 -39
- package/src/roap/types.ts +23 -0
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/controls-options-manager/util.js +120 -0
- package/test/unit/spec/locus-info/controlsUtils.js +131 -9
- package/test/unit/spec/locus-info/index.js +195 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +150 -18
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +40 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
- package/test/unit/spec/meeting/index.js +553 -36
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
- package/test/unit/spec/meeting/muteState.js +73 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +79 -33
- package/test/unit/spec/meeting-info/meetinginfov2.js +41 -0
- package/test/unit/spec/meeting-info/utilv2.js +19 -0
- package/test/unit/spec/meetings/index.js +68 -1
- package/test/unit/spec/members/index.js +304 -78
- package/test/unit/spec/members/request.js +68 -22
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/reachability/clusterReachability.ts +41 -55
- package/test/unit/spec/reachability/index.ts +89 -0
- package/test/unit/spec/reconnection-manager/index.js +4 -4
- package/test/unit/spec/roap/turnDiscovery.ts +110 -28
package/src/media/index.ts
CHANGED
@@ -16,11 +16,13 @@ import {
|
|
16
16
|
LocalMicrophoneStream,
|
17
17
|
} from '@webex/media-helpers';
|
18
18
|
import {RtcMetrics} from '@webex/internal-plugin-metrics';
|
19
|
+
import {BrowserInfo} from '@webex/web-capabilities';
|
19
20
|
import LoggerProxy from '../common/logs/logger-proxy';
|
20
21
|
import {MEDIA_TRACK_CONSTRAINT} from '../constants';
|
21
22
|
import Config from '../config';
|
22
23
|
import StaticConfig from '../common/config';
|
23
24
|
import BrowserDetection from '../common/browser-detection';
|
25
|
+
import {TurnServerInfo} from '../roap/types';
|
24
26
|
|
25
27
|
const {isBrowser} = BrowserDetection();
|
26
28
|
|
@@ -138,13 +140,12 @@ Media.createMediaConnection = (
|
|
138
140
|
remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';
|
139
141
|
enableRtx?: boolean;
|
140
142
|
enableExtmap?: boolean;
|
141
|
-
turnServerInfo?:
|
142
|
-
url: string;
|
143
|
-
username: string;
|
144
|
-
password: string;
|
145
|
-
};
|
143
|
+
turnServerInfo?: TurnServerInfo;
|
146
144
|
bundlePolicy?: BundlePolicy;
|
147
145
|
iceCandidatesTimeout?: number;
|
146
|
+
disableAudioMainDtx?: boolean;
|
147
|
+
enableAudioTwcc?: boolean;
|
148
|
+
stopIceGatheringAfterFirstRelayCandidate?: boolean;
|
148
149
|
}
|
149
150
|
) => {
|
150
151
|
const {
|
@@ -156,28 +157,18 @@ Media.createMediaConnection = (
|
|
156
157
|
turnServerInfo,
|
157
158
|
bundlePolicy,
|
158
159
|
iceCandidatesTimeout,
|
160
|
+
disableAudioMainDtx,
|
161
|
+
enableAudioTwcc,
|
162
|
+
stopIceGatheringAfterFirstRelayCandidate,
|
159
163
|
} = options;
|
160
164
|
|
161
165
|
const iceServers = [];
|
162
166
|
|
163
|
-
// we might not have any TURN server if TURN discovery failed or wasn't done or
|
164
|
-
|
165
|
-
if (turnServerInfo?.url) {
|
166
|
-
if (!isBrowser('firefox')) {
|
167
|
-
let bareTurnServer = turnServerInfo.url;
|
168
|
-
bareTurnServer = bareTurnServer.replace('turns:', 'turn:');
|
169
|
-
bareTurnServer = bareTurnServer.replace('443', '5004');
|
170
|
-
|
171
|
-
iceServers.push({
|
172
|
-
urls: bareTurnServer,
|
173
|
-
username: turnServerInfo.username || '',
|
174
|
-
credential: turnServerInfo.password || '',
|
175
|
-
});
|
176
|
-
}
|
177
|
-
|
167
|
+
// we might not have any TURN server if TURN discovery failed or wasn't done or we land on a video mesh node
|
168
|
+
if (turnServerInfo?.urls.length > 0) {
|
178
169
|
// TURN-TLS server
|
179
170
|
iceServers.push({
|
180
|
-
urls: turnServerInfo.
|
171
|
+
urls: turnServerInfo.urls,
|
181
172
|
username: turnServerInfo.username || '',
|
182
173
|
credential: turnServerInfo.password || '',
|
183
174
|
});
|
@@ -186,12 +177,23 @@ Media.createMediaConnection = (
|
|
186
177
|
if (isMultistream) {
|
187
178
|
const config: MultistreamConnectionConfig = {
|
188
179
|
iceServers,
|
180
|
+
disableAudioTwcc: !enableAudioTwcc,
|
189
181
|
};
|
190
182
|
|
191
183
|
if (bundlePolicy) {
|
192
184
|
config.bundlePolicy = bundlePolicy;
|
193
185
|
}
|
194
186
|
|
187
|
+
if (disableAudioMainDtx !== undefined) {
|
188
|
+
config.disableAudioMainDtx = disableAudioMainDtx;
|
189
|
+
}
|
190
|
+
|
191
|
+
if (BrowserInfo.isFirefox()) {
|
192
|
+
config.doFullIce = true;
|
193
|
+
|
194
|
+
config.stopIceGatheringAfterFirstRelayCandidate = stopIceGatheringAfterFirstRelayCandidate;
|
195
|
+
}
|
196
|
+
|
195
197
|
return new MultistreamRoapMediaConnection(
|
196
198
|
config,
|
197
199
|
meetingId,
|
package/src/media/properties.ts
CHANGED
@@ -7,6 +7,8 @@ import {
|
|
7
7
|
RemoteStream,
|
8
8
|
} from '@webex/media-helpers';
|
9
9
|
|
10
|
+
import {parse} from '@webex/ts-sdp';
|
11
|
+
import {ClientEvent} from '@webex/internal-plugin-metrics';
|
10
12
|
import {MEETINGS, QUALITY_LEVELS} from '../constants';
|
11
13
|
import LoggerProxy from '../common/logs/logger-proxy';
|
12
14
|
import MediaConnectionAwaiter from './MediaConnectionAwaiter';
|
@@ -20,6 +22,8 @@ export type MediaDirection = {
|
|
20
22
|
receiveShare: boolean;
|
21
23
|
};
|
22
24
|
|
25
|
+
export type IPVersion = ClientEvent['payload']['ipVersion'];
|
26
|
+
|
23
27
|
/**
|
24
28
|
* @class MediaProperties
|
25
29
|
*/
|
@@ -212,6 +216,91 @@ export default class MediaProperties {
|
|
212
216
|
};
|
213
217
|
}
|
214
218
|
|
219
|
+
/**
|
220
|
+
* Checks if the given IP address is IPv6
|
221
|
+
* @param {string} ip address to check
|
222
|
+
* @returns {boolean} true if the address is IPv6, false otherwise
|
223
|
+
*/
|
224
|
+
private isIPv6(ip: string): boolean {
|
225
|
+
return ip.includes(':');
|
226
|
+
}
|
227
|
+
|
228
|
+
/** Finds out if we connected using IPv4 or IPv6
|
229
|
+
* @param {RTCPeerConnection} webrtcMediaConnection
|
230
|
+
* @param {Array<any>} allStatsReports array of RTC stats reports
|
231
|
+
* @returns {string} IPVersion
|
232
|
+
*/
|
233
|
+
private getConnectionIpVersion(
|
234
|
+
webrtcMediaConnection: RTCPeerConnection,
|
235
|
+
allStatsReports: any[]
|
236
|
+
): IPVersion | undefined {
|
237
|
+
const transports = allStatsReports.filter((report) => report.type === 'transport');
|
238
|
+
|
239
|
+
let selectedCandidatePair;
|
240
|
+
|
241
|
+
if (transports.length > 0 && transports[0].selectedCandidatePairId) {
|
242
|
+
selectedCandidatePair = allStatsReports.find(
|
243
|
+
(report) =>
|
244
|
+
report.type === 'candidate-pair' && report.id === transports[0].selectedCandidatePairId
|
245
|
+
);
|
246
|
+
} else {
|
247
|
+
// Firefox doesn't have selectedCandidatePairId, but has selected property on the candidate pair
|
248
|
+
selectedCandidatePair = allStatsReports.find(
|
249
|
+
(report) => report.type === 'candidate-pair' && report.selected
|
250
|
+
);
|
251
|
+
}
|
252
|
+
|
253
|
+
if (selectedCandidatePair) {
|
254
|
+
const localCandidate = allStatsReports.find(
|
255
|
+
(report) =>
|
256
|
+
report.type === 'local-candidate' && report.id === selectedCandidatePair.localCandidateId
|
257
|
+
);
|
258
|
+
|
259
|
+
if (localCandidate) {
|
260
|
+
if (localCandidate.address) {
|
261
|
+
return this.isIPv6(localCandidate.address) ? 'IPv6' : 'IPv4';
|
262
|
+
}
|
263
|
+
|
264
|
+
try {
|
265
|
+
// safari doesn't have address field on the candidate, so we have to use the port to look up the candidate in the SDP
|
266
|
+
const localSdp = webrtcMediaConnection.localDescription.sdp;
|
267
|
+
|
268
|
+
const parsedSdp = parse(localSdp);
|
269
|
+
|
270
|
+
for (const mediaLine of parsedSdp.avMedia) {
|
271
|
+
const matchingCandidate = mediaLine.iceInfo.candidates.find(
|
272
|
+
(candidate) => candidate.port === localCandidate.port
|
273
|
+
);
|
274
|
+
if (matchingCandidate) {
|
275
|
+
return this.isIPv6(matchingCandidate.connectionAddress) ? 'IPv6' : 'IPv4';
|
276
|
+
}
|
277
|
+
}
|
278
|
+
|
279
|
+
LoggerProxy.logger.warn(
|
280
|
+
`Media:properties#getConnectionIpVersion --> failed to find local candidate in the SDP for port ${localCandidate.port}`
|
281
|
+
);
|
282
|
+
} catch (error) {
|
283
|
+
LoggerProxy.logger.warn(
|
284
|
+
`Media:properties#getConnectionIpVersion --> error while trying to find candidate in local SDP:`,
|
285
|
+
error
|
286
|
+
);
|
287
|
+
|
288
|
+
return undefined;
|
289
|
+
}
|
290
|
+
} else {
|
291
|
+
LoggerProxy.logger.warn(
|
292
|
+
`Media:properties#getConnectionIpVersion --> failed to find local candidate "${selectedCandidatePair.localCandidateId}" in getStats() results`
|
293
|
+
);
|
294
|
+
}
|
295
|
+
} else {
|
296
|
+
LoggerProxy.logger.warn(
|
297
|
+
`Media:properties#getConnectionIpVersion --> failed to find selected candidate pair in getStats() results (transports.length=${transports.length}, selectedCandidatePairId=${transports[0]?.selectedCandidatePairId})`
|
298
|
+
);
|
299
|
+
}
|
300
|
+
|
301
|
+
return undefined;
|
302
|
+
}
|
303
|
+
|
215
304
|
/**
|
216
305
|
* Returns the type of a connection that has been established
|
217
306
|
* It should be 'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'
|
@@ -284,6 +373,7 @@ export default class MediaProperties {
|
|
284
373
|
*/
|
285
374
|
async getCurrentConnectionInfo(): Promise<{
|
286
375
|
connectionType: string;
|
376
|
+
ipVersion?: IPVersion;
|
287
377
|
selectedCandidatePairChanges: number;
|
288
378
|
numTransports: number;
|
289
379
|
}> {
|
@@ -309,10 +399,15 @@ export default class MediaProperties {
|
|
309
399
|
});
|
310
400
|
|
311
401
|
const connectionType = this.getConnectionType(allStatsReports);
|
402
|
+
const rtcPeerconnection =
|
403
|
+
this.webrtcMediaConnection.multistreamConnection?.pc.pc ||
|
404
|
+
this.webrtcMediaConnection.mediaConnection?.pc;
|
405
|
+
const ipVersion = this.getConnectionIpVersion(rtcPeerconnection, allStatsReports);
|
312
406
|
const {selectedCandidatePairChanges, numTransports} = this.getTransportInfo(allStatsReports);
|
313
407
|
|
314
408
|
return {
|
315
409
|
connectionType,
|
410
|
+
ipVersion,
|
316
411
|
selectedCandidatePairChanges,
|
317
412
|
numTransports,
|
318
413
|
};
|
@@ -323,6 +418,7 @@ export default class MediaProperties {
|
|
323
418
|
|
324
419
|
return {
|
325
420
|
connectionType: 'unknown',
|
421
|
+
ipVersion: undefined,
|
326
422
|
selectedCandidatePairChanges: -1,
|
327
423
|
numTransports: 0,
|
328
424
|
};
|
package/src/meeting/brbState.ts
CHANGED
@@ -95,6 +95,13 @@ export class BrbState {
|
|
95
95
|
return this.sendLocalBrbStateToServer(sendSlotManager)
|
96
96
|
.then(() => {
|
97
97
|
this.state.syncToServerInProgress = false;
|
98
|
+
|
99
|
+
// This is a workaround for the fact that the server does not send the brb state
|
100
|
+
// in the locus update when a user joins from multiple devices but not all devices are requested brb.
|
101
|
+
// In the future, this could be improved with a new brb locus update handler
|
102
|
+
// https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626
|
103
|
+
this.handleServerBrbUpdate(this.state.client.enabled);
|
104
|
+
|
98
105
|
LoggerProxy.logger.info(
|
99
106
|
`Meeting:brbState#applyClientStateToServer: sync with server completed`
|
100
107
|
);
|
@@ -102,9 +109,11 @@ export class BrbState {
|
|
102
109
|
// need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
|
103
110
|
this.applyClientStateToServer(sendSlotManager);
|
104
111
|
})
|
105
|
-
.catch((
|
112
|
+
.catch((error) => {
|
106
113
|
this.state.syncToServerInProgress = false;
|
107
|
-
LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer:
|
114
|
+
LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer: Error: ${error}`);
|
115
|
+
|
116
|
+
return Promise.reject(error);
|
108
117
|
});
|
109
118
|
}
|
110
119
|
|
@@ -81,6 +81,8 @@ interface IInMeetingActions {
|
|
81
81
|
canShareDesktop?: boolean;
|
82
82
|
canShareContent?: boolean;
|
83
83
|
canTransferFile?: boolean;
|
84
|
+
canRealtimeCloseCaption?: boolean;
|
85
|
+
canRealtimeCloseCaptionManual?: boolean;
|
84
86
|
canChat?: boolean;
|
85
87
|
canDoVideo?: boolean;
|
86
88
|
canAnnotate?: boolean;
|
@@ -99,6 +101,12 @@ interface IInMeetingActions {
|
|
99
101
|
isPracticeSessionOff?: boolean;
|
100
102
|
canStartPracticeSession?: boolean;
|
101
103
|
canStopPracticeSession?: boolean;
|
104
|
+
requiresPostMeetingDataConsentPrompt?: boolean;
|
105
|
+
canEnableAnnotation?: boolean;
|
106
|
+
canDisableAnnotation?: boolean;
|
107
|
+
canEnableRemoteDesktopControl?: boolean;
|
108
|
+
canDisableRemoteDesktopControl?: boolean;
|
109
|
+
canMoveToLobby?: boolean;
|
102
110
|
}
|
103
111
|
|
104
112
|
/**
|
@@ -249,6 +257,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
249
257
|
|
250
258
|
canTransferFile = null;
|
251
259
|
|
260
|
+
canRealtimeCloseCaption = null;
|
261
|
+
|
262
|
+
canRealtimeCloseCaptionManual = null;
|
263
|
+
|
252
264
|
canChat = null;
|
253
265
|
|
254
266
|
canDoVideo = null;
|
@@ -285,6 +297,18 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
285
297
|
|
286
298
|
canStopPracticeSession = null;
|
287
299
|
|
300
|
+
requiresPostMeetingDataConsentPrompt = null;
|
301
|
+
|
302
|
+
canEnableAnnotation = null;
|
303
|
+
|
304
|
+
canDisableAnnotation = null;
|
305
|
+
|
306
|
+
canEnableRemoteDesktopControl = null;
|
307
|
+
|
308
|
+
canDisableRemoteDesktopControl = null;
|
309
|
+
|
310
|
+
canMoveToLobby = null;
|
311
|
+
|
288
312
|
/**
|
289
313
|
* Returns all meeting action options
|
290
314
|
* @returns {Object}
|
@@ -361,6 +385,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
361
385
|
canShareDesktop: this.canShareDesktop,
|
362
386
|
canShareContent: this.canShareContent,
|
363
387
|
canTransferFile: this.canTransferFile,
|
388
|
+
canRealtimeCloseCaption: this.canRealtimeCloseCaption,
|
389
|
+
canRealtimeCloseCaptionManual: this.canRealtimeCloseCaptionManual,
|
364
390
|
canChat: this.canChat,
|
365
391
|
canDoVideo: this.canDoVideo,
|
366
392
|
canAnnotate: this.canAnnotate,
|
@@ -379,6 +405,12 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
379
405
|
isPracticeSessionOff: this.isPracticeSessionOff,
|
380
406
|
canStartPracticeSession: this.canStartPracticeSession,
|
381
407
|
canStopPracticeSession: this.canStopPracticeSession,
|
408
|
+
requiresPostMeetingDataConsentPrompt: this.requiresPostMeetingDataConsentPrompt,
|
409
|
+
canEnableAnnotation: this.canEnableAnnotation,
|
410
|
+
canDisableAnnotation: this.canDisableAnnotation,
|
411
|
+
canEnableRemoteDesktopControl: this.canEnableRemoteDesktopControl,
|
412
|
+
canDisableRemoteDesktopControl: this.canDisableRemoteDesktopControl,
|
413
|
+
canMoveToLobby: this.canMoveToLobby,
|
382
414
|
});
|
383
415
|
|
384
416
|
/**
|