@webex/plugin-meetings 2.59.2 → 2.59.3-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/.eslintrc.js +6 -6
- package/LICENSE +1 -1
- package/README.md +1204 -1204
- package/UPGRADING.md +287 -287
- package/babel.config.js +3 -3
- package/browsers.js +108 -108
- package/dist/common/browser-detection.d.ts +9 -9
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.d.ts +48 -48
- package/dist/common/collection.js +43 -43
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.d.ts +2 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.d.ts +15 -15
- package/dist/common/errors/captcha-error.js +7 -7
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.d.ts +16 -16
- package/dist/common/errors/intent-to-join.js +7 -7
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.d.ts +17 -17
- package/dist/common/errors/join-meeting.js +8 -8
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.d.ts +15 -15
- package/dist/common/errors/media.js +7 -7
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.d.ts +15 -15
- package/dist/common/errors/parameter.js +7 -7
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.d.ts +15 -15
- package/dist/common/errors/password-error.js +7 -7
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.d.ts +14 -14
- package/dist/common/errors/permission.js +6 -6
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -9
- package/dist/common/errors/reconnection-in-progress.js +6 -6
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.d.ts +15 -15
- package/dist/common/errors/reconnection.js +7 -7
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.d.ts +15 -15
- package/dist/common/errors/stats.js +7 -7
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +81 -81
- package/dist/common/errors/webex-errors.js +42 -42
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.d.ts +20 -20
- package/dist/common/errors/webex-meetings-error.js +12 -12
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.d.ts +17 -17
- package/dist/common/events/events-scope.js +10 -10
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.d.ts +12 -12
- package/dist/common/events/events.js +4 -4
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.d.ts +2 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.d.ts +2 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.d.ts +2 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.d.ts +2 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +34 -34
- package/dist/common/logs/request.js +18 -18
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +32 -32
- package/dist/common/queue.js +18 -18
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +73 -73
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +924 -924
- package/dist/constants.js +9 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -4
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +5 -5
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +120 -120
- package/dist/controls-options-manager/index.js +81 -81
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -7
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -2
- package/dist/locus-info/controlsUtils.js +21 -21
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -2
- package/dist/locus-info/embeddedAppsUtils.js +14 -14
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.d.ts +2 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.d.ts +2 -2
- package/dist/locus-info/hostUtils.js +19 -19
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +269 -269
- package/dist/locus-info/index.js +180 -180
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -2
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -2
- package/dist/locus-info/mediaSharesUtils.js +50 -50
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +212 -212
- package/dist/locus-info/parser.js +136 -136
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.d.ts +2 -2
- package/dist/locus-info/selfUtils.js +52 -52
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +32 -32
- package/dist/media/index.js +145 -145
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +108 -108
- package/dist/media/properties.js +49 -49
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.d.ts +2 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +233 -233
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -42
- package/dist/meeting/effectsState.js +24 -24
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +79 -79
- package/dist/meeting/in-meeting-actions.js +11 -11
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1621 -1621
- package/dist/meeting/index.js +1502 -1505
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +116 -116
- package/dist/meeting/muteState.js +85 -85
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +255 -255
- package/dist/meeting/request.js +141 -141
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.d.ts +9 -9
- package/dist/meeting/state.js +30 -30
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +2 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.d.ts +20 -20
- package/dist/meeting-info/collection.js +11 -11
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +57 -57
- package/dist/meeting-info/index.js +50 -50
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +93 -93
- package/dist/meeting-info/meeting-info-v2.js +52 -52
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.d.ts +22 -22
- package/dist/meeting-info/request.js +14 -14
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.d.ts +2 -2
- package/dist/meeting-info/util.js +9 -9
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.d.ts +2 -2
- package/dist/meeting-info/utilv2.js +20 -20
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +23 -23
- package/dist/meetings/collection.js +14 -14
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +296 -296
- package/dist/meetings/index.js +259 -259
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.d.ts +27 -27
- package/dist/meetings/request.js +15 -15
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.d.ts +18 -18
- package/dist/meetings/util.js +29 -29
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +147 -147
- package/dist/member/index.js +214 -214
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -11
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.d.ts +2 -2
- package/dist/member/util.js +60 -60
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +24 -24
- package/dist/members/collection.js +11 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +298 -298
- package/dist/members/index.js +275 -275
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +50 -50
- package/dist/members/request.js +27 -27
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.d.ts +2 -2
- package/dist/members/util.js +21 -21
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -169
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.d.ts +57 -57
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +152 -152
- package/dist/metrics/index.js +90 -90
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.d.ts +70 -70
- package/dist/networkQualityMonitor/index.js +65 -65
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -6
- package/dist/peer-connection-manager/index.js +87 -87
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.d.ts +6 -6
- package/dist/peer-connection-manager/util.js +9 -9
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.d.ts +47 -47
- package/dist/personal-meeting-room/index.js +67 -67
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.d.ts +14 -14
- package/dist/personal-meeting-room/request.js +7 -7
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.d.ts +2 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +139 -139
- package/dist/reachability/index.js +110 -110
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +35 -35
- package/dist/reachability/request.js +15 -15
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +4 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +32 -32
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +112 -112
- package/dist/reconnection-manager/index.js +112 -112
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.d.ts +7 -7
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +193 -193
- package/dist/recording-controller/index.js +127 -127
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +13 -13
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -10
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.d.ts +47 -47
- package/dist/roap/handler.js +27 -27
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.d.ts +116 -116
- package/dist/roap/index.js +111 -111
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +35 -35
- package/dist/roap/request.js +17 -17
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -9
- package/dist/roap/state.js +14 -14
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +67 -67
- package/dist/roap/turnDiscovery.js +46 -46
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -2
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.d.ts +126 -116
- package/dist/statsAnalyzer/global.js +10 -0
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +190 -191
- package/dist/statsAnalyzer/index.js +137 -139
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +22 -22
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.d.ts +64 -64
- package/dist/transcription/index.js +42 -42
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +172 -172
- package/jest.config.js +3 -3
- package/package.json +22 -21
- package/process +1 -1
- package/src/common/browser-detection.ts +39 -39
- package/src/common/collection.ts +94 -94
- package/src/common/config.ts +9 -9
- package/src/common/errors/captcha-error.ts +25 -25
- package/src/common/errors/intent-to-join.ts +27 -27
- package/src/common/errors/join-meeting.ts +32 -32
- package/src/common/errors/media.ts +25 -25
- package/src/common/errors/parameter.ts +33 -33
- package/src/common/errors/password-error.ts +25 -25
- package/src/common/errors/permission.ts +24 -24
- package/src/common/errors/reconnection-in-progress.ts +8 -8
- package/src/common/errors/reconnection.ts +25 -25
- package/src/common/errors/stats.ts +25 -25
- package/src/common/errors/webex-errors.ts +140 -140
- package/src/common/errors/webex-meetings-error.ts +35 -35
- package/src/common/events/events-scope.ts +30 -30
- package/src/common/events/events.ts +25 -25
- package/src/common/events/trigger-proxy.ts +25 -25
- package/src/common/events/util.ts +39 -39
- package/src/common/logs/logger-config.ts +8 -8
- package/src/common/logs/logger-proxy.ts +44 -44
- package/src/common/logs/request.ts +65 -65
- package/src/common/queue.ts +50 -50
- package/src/config.ts +96 -96
- package/src/constants.ts +1121 -1121
- package/src/controls-options-manager/constants.ts +5 -5
- package/src/controls-options-manager/enums.ts +6 -6
- package/src/controls-options-manager/index.ts +183 -183
- package/src/controls-options-manager/util.ts +20 -20
- package/src/index.js +15 -15
- package/src/locus-info/controlsUtils.ts +112 -112
- package/src/locus-info/embeddedAppsUtils.ts +57 -57
- package/src/locus-info/fullState.ts +69 -69
- package/src/locus-info/hostUtils.ts +60 -60
- package/src/locus-info/index.ts +1303 -1303
- package/src/locus-info/infoUtils.ts +101 -101
- package/src/locus-info/mediaSharesUtils.ts +173 -173
- package/src/locus-info/parser.ts +680 -680
- package/src/locus-info/selfUtils.ts +428 -428
- package/src/media/index.ts +675 -675
- package/src/media/properties.ts +313 -313
- package/src/media/util.ts +37 -37
- package/src/mediaQualityMetrics/config.ts +382 -382
- package/src/meeting/effectsState.ts +209 -209
- package/src/meeting/in-meeting-actions.ts +153 -153
- package/src/meeting/index.ts +6537 -6543
- package/src/meeting/muteState.ts +365 -365
- package/src/meeting/request.ts +810 -810
- package/src/meeting/state.ts +194 -194
- package/src/meeting/util.ts +530 -530
- package/src/meeting-info/collection.ts +41 -41
- package/src/meeting-info/index.ts +137 -137
- package/src/meeting-info/meeting-info-v2.ts +273 -273
- package/src/meeting-info/request.ts +46 -46
- package/src/meeting-info/util.ts +314 -314
- package/src/meeting-info/utilv2.ts +324 -324
- package/src/meetings/collection.ts +43 -43
- package/src/meetings/index.ts +1128 -1128
- package/src/meetings/request.ts +81 -81
- package/src/meetings/util.ts +181 -181
- package/src/member/index.ts +446 -446
- package/src/member/member.types.ts +13 -13
- package/src/member/util.ts +286 -286
- package/src/members/collection.ts +40 -40
- package/src/members/index.ts +900 -900
- package/src/members/request.ts +175 -175
- package/src/members/util.ts +260 -260
- package/src/metrics/config.ts +485 -485
- package/src/metrics/constants.ts +61 -61
- package/src/metrics/index.ts +543 -543
- package/src/networkQualityMonitor/index.ts +211 -211
- package/src/peer-connection-manager/index.ts +847 -847
- package/src/peer-connection-manager/util.ts +119 -119
- package/src/personal-meeting-room/index.ts +157 -157
- package/src/personal-meeting-room/request.ts +48 -48
- package/src/personal-meeting-room/util.ts +49 -49
- package/src/reachability/index.ts +478 -478
- package/src/reachability/request.ts +81 -81
- package/src/reactions/reactions.ts +104 -104
- package/src/reactions/reactions.type.ts +36 -36
- package/src/reconnection-manager/index.ts +622 -622
- package/src/recording-controller/enums.ts +8 -8
- package/src/recording-controller/index.ts +315 -315
- package/src/recording-controller/util.ts +58 -58
- package/src/roap/collection.ts +62 -62
- package/src/roap/handler.ts +294 -294
- package/src/roap/index.ts +413 -413
- package/src/roap/request.ts +229 -229
- package/src/roap/state.ts +156 -156
- package/src/roap/turnDiscovery.ts +283 -283
- package/src/roap/util.ts +100 -100
- package/src/statsAnalyzer/global.ts +128 -118
- package/src/statsAnalyzer/index.ts +1266 -1265
- package/src/statsAnalyzer/mqaUtil.ts +290 -290
- package/src/transcription/index.ts +154 -154
- package/test/integration/spec/journey.js +941 -941
- package/test/integration/spec/space-meeting.js +457 -457
- package/test/integration/spec/transcription.js +55 -55
- package/test/unit/spec/common/browser-detection.js +119 -119
- package/test/unit/spec/common/queue.js +69 -69
- package/test/unit/spec/controls-options-manager/index.js +123 -123
- package/test/unit/spec/controls-options-manager/util.js +65 -65
- package/test/unit/spec/fixture/locus.js +406 -406
- package/test/unit/spec/locus-info/controlsUtils.js +82 -82
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +104 -104
- package/test/unit/spec/locus-info/index.js +1272 -1272
- package/test/unit/spec/locus-info/infoUtils.js +138 -138
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +975 -975
- package/test/unit/spec/locus-info/lib/SeqCmp.json +522 -522
- package/test/unit/spec/locus-info/lib/selfConstant.js +286 -286
- package/test/unit/spec/locus-info/parser.js +298 -298
- package/test/unit/spec/locus-info/selfUtils.js +185 -185
- package/test/unit/spec/media/properties.ts +305 -305
- package/test/unit/spec/meeting/effectsState.js +281 -281
- package/test/unit/spec/meeting/in-meeting-actions.ts +90 -90
- package/test/unit/spec/meeting/index.js +5227 -5227
- package/test/unit/spec/meeting/muteState.js +430 -430
- package/test/unit/spec/meeting/request.js +317 -317
- package/test/unit/spec/meeting/utils.js +319 -319
- package/test/unit/spec/meeting-info/meetinginfov2.js +376 -376
- package/test/unit/spec/meeting-info/request.js +64 -64
- package/test/unit/spec/meeting-info/util.js +37 -37
- package/test/unit/spec/meeting-info/utilv2.js +330 -330
- package/test/unit/spec/meetings/collection.js +52 -52
- package/test/unit/spec/meetings/index.js +1375 -1375
- package/test/unit/spec/meetings/utils.js +66 -66
- package/test/unit/spec/member/index.js +47 -47
- package/test/unit/spec/member/util.js +80 -80
- package/test/unit/spec/members/index.js +364 -364
- package/test/unit/spec/members/request.js +200 -200
- package/test/unit/spec/members/utils.js +42 -42
- package/test/unit/spec/metrics/index.js +111 -111
- package/test/unit/spec/networkQualityMonitor/index.js +99 -99
- package/test/unit/spec/peerconnection-manager/index.js +218 -218
- package/test/unit/spec/peerconnection-manager/utils.js +49 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -388
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +29 -29
- package/test/unit/spec/reachability/index.ts +50 -50
- package/test/unit/spec/reconnection-manager/index.js +206 -206
- package/test/unit/spec/recording-controller/index.js +230 -230
- package/test/unit/spec/recording-controller/util.js +101 -101
- package/test/unit/spec/roap/index.ts +128 -128
- package/test/unit/spec/roap/turnDiscovery.ts +372 -372
- package/test/unit/spec/roap/util.js +30 -30
- package/test/unit/spec/stats-analyzer/index.js +287 -355
- package/test/utils/cmr.js +104 -104
- package/test/utils/testUtils.js +287 -287
- package/test/utils/webex-config.js +77 -77
- package/test/utils/webex-test-users.js +82 -82
- package/tsconfig.json +5 -5
package/src/meetings/request.ts
CHANGED
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
|
-
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
3
|
-
|
|
4
|
-
import LoggerProxy from '../common/logs/logger-proxy';
|
|
5
|
-
import {HTTP_VERBS, API, RESOURCE} from '../constants';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @class MeetingRequest
|
|
9
|
-
*/
|
|
10
|
-
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
11
|
-
/**
|
|
12
|
-
* get all the active meetings for the user
|
|
13
|
-
* @returns {Array} return locus array
|
|
14
|
-
*/
|
|
15
|
-
getActiveMeetings() {
|
|
16
|
-
// @ts-ignore
|
|
17
|
-
return this.request({
|
|
18
|
-
api: API.LOCUS,
|
|
19
|
-
resource: RESOURCE.LOCI,
|
|
20
|
-
})
|
|
21
|
-
.then((res) => this.determineRedirections(res.body))
|
|
22
|
-
.catch((error) => {
|
|
23
|
-
LoggerProxy.logger.error(
|
|
24
|
-
`Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`
|
|
25
|
-
);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* fetch geoHit for the user
|
|
31
|
-
* @returns {Promise<object>} geoHintInfo
|
|
32
|
-
*/
|
|
33
|
-
fetchGeoHint() {
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
return this.webex.internal.services.fetchClientRegionInfo();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* get user meeting preference information
|
|
40
|
-
* @returns {Promise<object>} getMeetingPreferences
|
|
41
|
-
*/
|
|
42
|
-
getMeetingPreferences() {
|
|
43
|
-
// @ts-ignore
|
|
44
|
-
return this.webex.internal.services.getMeetingPreferences();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Fetches indivdual locus rather then getting all at once
|
|
51
|
-
* @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
|
|
52
|
-
* @returns {Promise} returns locusObject array
|
|
53
|
-
*/
|
|
54
|
-
determineRedirections(responseBody: any) {
|
|
55
|
-
if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {
|
|
56
|
-
return Promise.all(
|
|
57
|
-
responseBody.remoteLocusClusterUrls.map((url) =>
|
|
58
|
-
// @ts-ignore
|
|
59
|
-
this.request({
|
|
60
|
-
method: HTTP_VERBS.GET,
|
|
61
|
-
url,
|
|
62
|
-
runWhitelistedDomains: true, // allows auth token for whitelisted domain
|
|
63
|
-
})
|
|
64
|
-
.then((res) => {
|
|
65
|
-
responseBody.loci = responseBody.loci.concat(res.body.loci);
|
|
66
|
-
responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);
|
|
67
|
-
|
|
68
|
-
return Promise.resolve(responseBody);
|
|
69
|
-
})
|
|
70
|
-
.catch((error) => {
|
|
71
|
-
LoggerProxy.logger.error(
|
|
72
|
-
`Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`
|
|
73
|
-
);
|
|
74
|
-
})
|
|
75
|
-
)
|
|
76
|
-
).then(() => Promise.resolve(responseBody));
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return Promise.resolve(responseBody);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
3
|
+
|
|
4
|
+
import LoggerProxy from '../common/logs/logger-proxy';
|
|
5
|
+
import {HTTP_VERBS, API, RESOURCE} from '../constants';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @class MeetingRequest
|
|
9
|
+
*/
|
|
10
|
+
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
11
|
+
/**
|
|
12
|
+
* get all the active meetings for the user
|
|
13
|
+
* @returns {Array} return locus array
|
|
14
|
+
*/
|
|
15
|
+
getActiveMeetings() {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
return this.request({
|
|
18
|
+
api: API.LOCUS,
|
|
19
|
+
resource: RESOURCE.LOCI,
|
|
20
|
+
})
|
|
21
|
+
.then((res) => this.determineRedirections(res.body))
|
|
22
|
+
.catch((error) => {
|
|
23
|
+
LoggerProxy.logger.error(
|
|
24
|
+
`Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* fetch geoHit for the user
|
|
31
|
+
* @returns {Promise<object>} geoHintInfo
|
|
32
|
+
*/
|
|
33
|
+
fetchGeoHint() {
|
|
34
|
+
// @ts-ignore
|
|
35
|
+
return this.webex.internal.services.fetchClientRegionInfo();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* get user meeting preference information
|
|
40
|
+
* @returns {Promise<object>} getMeetingPreferences
|
|
41
|
+
*/
|
|
42
|
+
getMeetingPreferences() {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
return this.webex.internal.services.getMeetingPreferences();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Fetches indivdual locus rather then getting all at once
|
|
51
|
+
* @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
|
|
52
|
+
* @returns {Promise} returns locusObject array
|
|
53
|
+
*/
|
|
54
|
+
determineRedirections(responseBody: any) {
|
|
55
|
+
if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {
|
|
56
|
+
return Promise.all(
|
|
57
|
+
responseBody.remoteLocusClusterUrls.map((url) =>
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
this.request({
|
|
60
|
+
method: HTTP_VERBS.GET,
|
|
61
|
+
url,
|
|
62
|
+
runWhitelistedDomains: true, // allows auth token for whitelisted domain
|
|
63
|
+
})
|
|
64
|
+
.then((res) => {
|
|
65
|
+
responseBody.loci = responseBody.loci.concat(res.body.loci);
|
|
66
|
+
responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);
|
|
67
|
+
|
|
68
|
+
return Promise.resolve(responseBody);
|
|
69
|
+
})
|
|
70
|
+
.catch((error) => {
|
|
71
|
+
LoggerProxy.logger.error(
|
|
72
|
+
`Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`
|
|
73
|
+
);
|
|
74
|
+
})
|
|
75
|
+
)
|
|
76
|
+
).then(() => Promise.resolve(responseBody));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return Promise.resolve(responseBody);
|
|
80
|
+
}
|
|
81
|
+
}
|
package/src/meetings/util.ts
CHANGED
|
@@ -1,181 +1,181 @@
|
|
|
1
|
-
/* globals window */
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
_LOCUS_ID_,
|
|
5
|
-
_INCOMING_,
|
|
6
|
-
_CREATED_,
|
|
7
|
-
LOCUSEVENT,
|
|
8
|
-
CORRELATION_ID,
|
|
9
|
-
EVENT_TRIGGERS,
|
|
10
|
-
} from '../constants';
|
|
11
|
-
import LoggerProxy from '../common/logs/logger-proxy';
|
|
12
|
-
import Trigger from '../common/events/trigger-proxy';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Meetings Media Codec Missing Event
|
|
16
|
-
* Emitted when H.264 codec is not
|
|
17
|
-
* found in the browser.
|
|
18
|
-
* @event media:codec:missing
|
|
19
|
-
* @instance
|
|
20
|
-
* @memberof MeetingsUtil
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Meetings Media Codec Loaded Event
|
|
25
|
-
* Emitted when H.264 codec has been
|
|
26
|
-
* loaded in the browser.
|
|
27
|
-
* @event media:codec:loaded
|
|
28
|
-
* @instance
|
|
29
|
-
* @memberof MeetingsUtil
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
const MeetingsUtil: any = {};
|
|
33
|
-
|
|
34
|
-
MeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);
|
|
35
|
-
|
|
36
|
-
MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
37
|
-
const {data} = envelope;
|
|
38
|
-
const {eventType} = data;
|
|
39
|
-
|
|
40
|
-
if (eventType === LOCUSEVENT.MESSAGE_ROAP) {
|
|
41
|
-
const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);
|
|
42
|
-
|
|
43
|
-
if (meeting) {
|
|
44
|
-
meeting.roap.roapEvent(data);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
50
|
-
let devices = [];
|
|
51
|
-
|
|
52
|
-
if (locus) {
|
|
53
|
-
if (locus && locus.self && locus.self.devices) {
|
|
54
|
-
devices = locus.self.devices;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const foundDevice = devices.find((device) => device.url === deviceUrl);
|
|
58
|
-
|
|
59
|
-
if (foundDevice && foundDevice.correlationId) {
|
|
60
|
-
return foundDevice.correlationId;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return false;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
MeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {
|
|
68
|
-
let result = '';
|
|
69
|
-
|
|
70
|
-
if (userPreferences && userPreferences.sites) {
|
|
71
|
-
const defaultSite = userPreferences.sites.find((site) => site.default);
|
|
72
|
-
|
|
73
|
-
if (defaultSite) {
|
|
74
|
-
result = defaultSite.siteUrl;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return result;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Will check to see if the H.264 media codec is supported.
|
|
83
|
-
* @async
|
|
84
|
-
* @private
|
|
85
|
-
* @returns {Promise<boolean>}
|
|
86
|
-
*/
|
|
87
|
-
MeetingsUtil.hasH264Codec = async () => {
|
|
88
|
-
let hasCodec = false;
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const pc = new window.RTCPeerConnection();
|
|
92
|
-
const offer = await pc.createOffer({offerToReceiveVideo: true});
|
|
93
|
-
|
|
94
|
-
if (offer.sdp.match(/^a=rtpmap:\d+\s+H264\/\d+/m)) {
|
|
95
|
-
hasCodec = true;
|
|
96
|
-
}
|
|
97
|
-
pc.close();
|
|
98
|
-
} catch (error) {
|
|
99
|
-
LoggerProxy.logger.warn(
|
|
100
|
-
'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return hasCodec;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Notifies the user whether or not the H.264
|
|
109
|
-
* codec is present. Will continuously check
|
|
110
|
-
* until max duration.
|
|
111
|
-
* @async
|
|
112
|
-
* @private
|
|
113
|
-
* @param {object} options
|
|
114
|
-
* @param {Number} options.firstChecked Timestamp in milliseconds
|
|
115
|
-
* @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events
|
|
116
|
-
* @returns {undefined}
|
|
117
|
-
*/
|
|
118
|
-
MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
119
|
-
firstChecked: number;
|
|
120
|
-
disableNotifications: boolean;
|
|
121
|
-
}) {
|
|
122
|
-
const {hasH264Codec} = MeetingsUtil;
|
|
123
|
-
const {firstChecked, disableNotifications} = options || {};
|
|
124
|
-
const delay = 5e3; // ms
|
|
125
|
-
const maxDuration = 3e5; // ms
|
|
126
|
-
const shouldTrigger = firstChecked === undefined;
|
|
127
|
-
const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;
|
|
128
|
-
|
|
129
|
-
// Disable notifications and start H.264 download only
|
|
130
|
-
if (disableNotifications) {
|
|
131
|
-
hasH264Codec();
|
|
132
|
-
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Codec loaded trigger event notification
|
|
137
|
-
if (await hasH264Codec()) {
|
|
138
|
-
Trigger.trigger(
|
|
139
|
-
this,
|
|
140
|
-
{
|
|
141
|
-
file: 'meetings/util',
|
|
142
|
-
function: 'checkH264Support',
|
|
143
|
-
},
|
|
144
|
-
EVENT_TRIGGERS.MEDIA_CODEC_LOADED
|
|
145
|
-
);
|
|
146
|
-
LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');
|
|
147
|
-
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Stop checking if past the timelimit
|
|
152
|
-
if (shouldStopChecking) {
|
|
153
|
-
LoggerProxy.logger.error(
|
|
154
|
-
'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Trigger only once
|
|
161
|
-
if (shouldTrigger) {
|
|
162
|
-
Trigger.trigger(
|
|
163
|
-
this,
|
|
164
|
-
{
|
|
165
|
-
file: 'meetings/util',
|
|
166
|
-
function: 'checkH264Support',
|
|
167
|
-
},
|
|
168
|
-
EVENT_TRIGGERS.MEDIA_CODEC_MISSING
|
|
169
|
-
);
|
|
170
|
-
LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Keep checking in intervals to see if codec loaded
|
|
174
|
-
window.setTimeout(() => {
|
|
175
|
-
const timestamp = firstChecked || Date.now();
|
|
176
|
-
|
|
177
|
-
MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});
|
|
178
|
-
}, delay);
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
export default MeetingsUtil;
|
|
1
|
+
/* globals window */
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
_LOCUS_ID_,
|
|
5
|
+
_INCOMING_,
|
|
6
|
+
_CREATED_,
|
|
7
|
+
LOCUSEVENT,
|
|
8
|
+
CORRELATION_ID,
|
|
9
|
+
EVENT_TRIGGERS,
|
|
10
|
+
} from '../constants';
|
|
11
|
+
import LoggerProxy from '../common/logs/logger-proxy';
|
|
12
|
+
import Trigger from '../common/events/trigger-proxy';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Meetings Media Codec Missing Event
|
|
16
|
+
* Emitted when H.264 codec is not
|
|
17
|
+
* found in the browser.
|
|
18
|
+
* @event media:codec:missing
|
|
19
|
+
* @instance
|
|
20
|
+
* @memberof MeetingsUtil
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Meetings Media Codec Loaded Event
|
|
25
|
+
* Emitted when H.264 codec has been
|
|
26
|
+
* loaded in the browser.
|
|
27
|
+
* @event media:codec:loaded
|
|
28
|
+
* @instance
|
|
29
|
+
* @memberof MeetingsUtil
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
const MeetingsUtil: any = {};
|
|
33
|
+
|
|
34
|
+
MeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);
|
|
35
|
+
|
|
36
|
+
MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
37
|
+
const {data} = envelope;
|
|
38
|
+
const {eventType} = data;
|
|
39
|
+
|
|
40
|
+
if (eventType === LOCUSEVENT.MESSAGE_ROAP) {
|
|
41
|
+
const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);
|
|
42
|
+
|
|
43
|
+
if (meeting) {
|
|
44
|
+
meeting.roap.roapEvent(data);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
50
|
+
let devices = [];
|
|
51
|
+
|
|
52
|
+
if (locus) {
|
|
53
|
+
if (locus && locus.self && locus.self.devices) {
|
|
54
|
+
devices = locus.self.devices;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const foundDevice = devices.find((device) => device.url === deviceUrl);
|
|
58
|
+
|
|
59
|
+
if (foundDevice && foundDevice.correlationId) {
|
|
60
|
+
return foundDevice.correlationId;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return false;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
MeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {
|
|
68
|
+
let result = '';
|
|
69
|
+
|
|
70
|
+
if (userPreferences && userPreferences.sites) {
|
|
71
|
+
const defaultSite = userPreferences.sites.find((site) => site.default);
|
|
72
|
+
|
|
73
|
+
if (defaultSite) {
|
|
74
|
+
result = defaultSite.siteUrl;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return result;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Will check to see if the H.264 media codec is supported.
|
|
83
|
+
* @async
|
|
84
|
+
* @private
|
|
85
|
+
* @returns {Promise<boolean>}
|
|
86
|
+
*/
|
|
87
|
+
MeetingsUtil.hasH264Codec = async () => {
|
|
88
|
+
let hasCodec = false;
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
const pc = new window.RTCPeerConnection();
|
|
92
|
+
const offer = await pc.createOffer({offerToReceiveVideo: true});
|
|
93
|
+
|
|
94
|
+
if (offer.sdp.match(/^a=rtpmap:\d+\s+H264\/\d+/m)) {
|
|
95
|
+
hasCodec = true;
|
|
96
|
+
}
|
|
97
|
+
pc.close();
|
|
98
|
+
} catch (error) {
|
|
99
|
+
LoggerProxy.logger.warn(
|
|
100
|
+
'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return hasCodec;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Notifies the user whether or not the H.264
|
|
109
|
+
* codec is present. Will continuously check
|
|
110
|
+
* until max duration.
|
|
111
|
+
* @async
|
|
112
|
+
* @private
|
|
113
|
+
* @param {object} options
|
|
114
|
+
* @param {Number} options.firstChecked Timestamp in milliseconds
|
|
115
|
+
* @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events
|
|
116
|
+
* @returns {undefined}
|
|
117
|
+
*/
|
|
118
|
+
MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
119
|
+
firstChecked: number;
|
|
120
|
+
disableNotifications: boolean;
|
|
121
|
+
}) {
|
|
122
|
+
const {hasH264Codec} = MeetingsUtil;
|
|
123
|
+
const {firstChecked, disableNotifications} = options || {};
|
|
124
|
+
const delay = 5e3; // ms
|
|
125
|
+
const maxDuration = 3e5; // ms
|
|
126
|
+
const shouldTrigger = firstChecked === undefined;
|
|
127
|
+
const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;
|
|
128
|
+
|
|
129
|
+
// Disable notifications and start H.264 download only
|
|
130
|
+
if (disableNotifications) {
|
|
131
|
+
hasH264Codec();
|
|
132
|
+
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Codec loaded trigger event notification
|
|
137
|
+
if (await hasH264Codec()) {
|
|
138
|
+
Trigger.trigger(
|
|
139
|
+
this,
|
|
140
|
+
{
|
|
141
|
+
file: 'meetings/util',
|
|
142
|
+
function: 'checkH264Support',
|
|
143
|
+
},
|
|
144
|
+
EVENT_TRIGGERS.MEDIA_CODEC_LOADED
|
|
145
|
+
);
|
|
146
|
+
LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');
|
|
147
|
+
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Stop checking if past the timelimit
|
|
152
|
+
if (shouldStopChecking) {
|
|
153
|
+
LoggerProxy.logger.error(
|
|
154
|
+
'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Trigger only once
|
|
161
|
+
if (shouldTrigger) {
|
|
162
|
+
Trigger.trigger(
|
|
163
|
+
this,
|
|
164
|
+
{
|
|
165
|
+
file: 'meetings/util',
|
|
166
|
+
function: 'checkH264Support',
|
|
167
|
+
},
|
|
168
|
+
EVENT_TRIGGERS.MEDIA_CODEC_MISSING
|
|
169
|
+
);
|
|
170
|
+
LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Keep checking in intervals to see if codec loaded
|
|
174
|
+
window.setTimeout(() => {
|
|
175
|
+
const timestamp = firstChecked || Date.now();
|
|
176
|
+
|
|
177
|
+
MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});
|
|
178
|
+
}, delay);
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
export default MeetingsUtil;
|