@webex/plugin-meetings 3.8.0-next.7 → 3.8.0-next.71
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 +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 +17 -121
- 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 +28 -10
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +32 -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 +14 -16
- 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 +6 -0
- 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 +541 -302
- 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 +0 -2
- 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 +13 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +359 -60
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +114 -1
- 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 +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +330 -353
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +23 -0
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +21 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +15 -0
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +9 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/clusterReachability.js +63 -27
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +112 -47
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +14 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/request.js +19 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/util.js +5 -5
- package/dist/recording-controller/util.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 +12 -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 +32 -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 +80 -0
- package/dist/types/meetings/index.d.ts +48 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/util.d.ts +159 -1
- package/dist/types/members/index.d.ts +8 -0
- package/dist/types/members/request.d.ts +19 -0
- package/dist/types/members/util.d.ts +13 -0
- package/dist/types/metrics/constants.d.ts +9 -0
- package/dist/types/reachability/clusterReachability.d.ts +15 -7
- package/dist/types/reachability/index.d.ts +10 -1
- package/dist/types/reachability/reachability.types.d.ts +5 -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/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +2 -0
- package/src/constants.ts +19 -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 +44 -14
- package/src/locus-info/index.ts +38 -12
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +20 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +7 -0
- package/src/meeting/in-meeting-actions.ts +32 -0
- package/src/meeting/index.ts +346 -93
- package/src/meeting/locusMediaRequest.ts +0 -18
- package/src/meeting/muteState.ts +0 -2
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +11 -2
- package/src/meeting-info/meeting-info-v2.ts +247 -6
- package/src/meetings/index.ts +128 -1
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +13 -2
- package/src/member/util.ts +351 -348
- package/src/members/index.ts +25 -0
- package/src/members/request.ts +26 -0
- package/src/members/util.ts +16 -0
- package/src/metrics/constants.ts +9 -0
- package/src/reachability/clusterReachability.ts +73 -26
- package/src/reachability/index.ts +70 -1
- package/src/reachability/reachability.types.ts +6 -0
- package/src/reachability/request.ts +7 -0
- package/src/reconnection-manager/index.ts +2 -2
- package/src/recording-controller/util.ts +17 -13
- 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/controls-options-manager/util.js +120 -0
- package/test/unit/spec/locus-info/controlsUtils.js +103 -9
- package/test/unit/spec/locus-info/index.js +141 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +98 -16
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +19 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
- package/test/unit/spec/meeting/index.js +524 -35
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
- package/test/unit/spec/meeting/muteState.js +0 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +119 -18
- package/test/unit/spec/meeting-info/meetinginfov2.js +443 -114
- package/test/unit/spec/meetings/index.js +133 -2
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/index.js +103 -26
- package/test/unit/spec/members/request.js +45 -22
- package/test/unit/spec/members/utils.js +33 -0
- package/test/unit/spec/reachability/clusterReachability.ts +88 -56
- package/test/unit/spec/reachability/index.ts +101 -0
- package/test/unit/spec/reachability/request.js +47 -2
- 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,11 @@ 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
|
+
stopIceGatheringAfterFirstRelayCandidate?: boolean;
|
148
148
|
}
|
149
149
|
) => {
|
150
150
|
const {
|
@@ -156,28 +156,17 @@ Media.createMediaConnection = (
|
|
156
156
|
turnServerInfo,
|
157
157
|
bundlePolicy,
|
158
158
|
iceCandidatesTimeout,
|
159
|
+
disableAudioMainDtx,
|
160
|
+
stopIceGatheringAfterFirstRelayCandidate,
|
159
161
|
} = options;
|
160
162
|
|
161
163
|
const iceServers = [];
|
162
164
|
|
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
|
-
|
165
|
+
// we might not have any TURN server if TURN discovery failed or wasn't done or we land on a video mesh node
|
166
|
+
if (turnServerInfo?.urls.length > 0) {
|
178
167
|
// TURN-TLS server
|
179
168
|
iceServers.push({
|
180
|
-
urls: turnServerInfo.
|
169
|
+
urls: turnServerInfo.urls,
|
181
170
|
username: turnServerInfo.username || '',
|
182
171
|
credential: turnServerInfo.password || '',
|
183
172
|
});
|
@@ -192,6 +181,16 @@ Media.createMediaConnection = (
|
|
192
181
|
config.bundlePolicy = bundlePolicy;
|
193
182
|
}
|
194
183
|
|
184
|
+
if (disableAudioMainDtx !== undefined) {
|
185
|
+
config.disableAudioMainDtx = disableAudioMainDtx;
|
186
|
+
}
|
187
|
+
|
188
|
+
if (BrowserInfo.isFirefox()) {
|
189
|
+
config.doFullIce = true;
|
190
|
+
|
191
|
+
config.stopIceGatheringAfterFirstRelayCandidate = stopIceGatheringAfterFirstRelayCandidate;
|
192
|
+
}
|
193
|
+
|
195
194
|
return new MultistreamRoapMediaConnection(
|
196
195
|
config,
|
197
196
|
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
|
);
|
@@ -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
|
/**
|