@webex/plugin-meetings 2.60.1-next.9 → 2.60.2
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/README.md +8 -58
- package/dist/common/browser-detection.js +3 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +4 -3
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +2 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +2 -1
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +2 -1
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +2 -1
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +2 -1
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +4 -3
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +2 -1
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +2 -1
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +2 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +2 -1
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +2 -1
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +8 -20
- package/dist/common/errors/webex-errors.js +28 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +2 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +2 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +2 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +2 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +2 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +2 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +3 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +1 -3
- package/dist/common/logs/request.js +5 -8
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +7 -9
- package/dist/common/queue.js +9 -22
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +7 -6
- package/dist/config.js +10 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +100 -234
- package/dist/constants.js +444 -433
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +6 -3
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +1 -11
- package/dist/controls-options-manager/enums.js +6 -15
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +1 -17
- package/dist/controls-options-manager/index.js +38 -127
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -1
- package/dist/controls-options-manager/util.js +19 -309
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +5 -121
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +11 -100
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +4 -3
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +2 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +4 -57
- package/dist/locus-info/index.js +84 -425
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +5 -13
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +3 -58
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +6 -66
- package/dist/locus-info/parser.js +80 -253
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +13 -97
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +0 -2
- package/dist/media/index.js +319 -107
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +53 -38
- package/dist/media/properties.js +153 -96
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +22 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +230 -234
- package/dist/mediaQualityMetrics/config.js +498 -302
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -0
- package/dist/meeting/effectsState.js +260 -0
- package/dist/meeting/effectsState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.d.ts +0 -88
- package/dist/meeting/in-meeting-actions.js +3 -94
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +520 -705
- package/dist/meeting/index.js +3083 -5041
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +25 -93
- package/dist/meeting/muteState.js +133 -224
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +47 -82
- package/dist/meeting/request.js +199 -304
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +2 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +1 -118
- package/dist/meeting/util.js +435 -676
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -3
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +1 -13
- package/dist/meeting-info/index.js +7 -74
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
- package/dist/meeting-info/meeting-info-v2.js +63 -200
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +2 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +3 -2
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +41 -39
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +0 -17
- package/dist/meetings/collection.js +4 -42
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +20 -114
- package/dist/meetings/index.js +133 -540
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +3 -4
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +6 -107
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +1 -13
- package/dist/member/index.js +2 -45
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +4 -3
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.js +29 -120
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +0 -5
- package/dist/members/collection.js +2 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +11 -56
- package/dist/members/index.js +47 -174
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +11 -67
- package/dist/members/request.js +54 -102
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +4 -3
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.d.ts +1 -214
- package/dist/members/util.js +284 -327
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -0
- package/dist/metrics/config.js +289 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/constants.d.ts +6 -15
- package/dist/metrics/constants.js +9 -17
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +111 -4
- package/dist/metrics/index.js +452 -4
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +4 -5
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -0
- package/dist/peer-connection-manager/index.js +671 -0
- package/dist/peer-connection-manager/index.js.map +1 -0
- package/dist/peer-connection-manager/util.d.ts +6 -0
- package/dist/peer-connection-manager/util.js +110 -0
- package/dist/peer-connection-manager/util.js.map +1 -0
- package/dist/personal-meeting-room/index.js +3 -2
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +3 -2
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +2 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +95 -61
- package/dist/reachability/index.js +392 -304
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +3 -7
- package/dist/reachability/request.js +10 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +2 -2
- package/dist/reactions/reactions.js +6 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +3 -23
- package/dist/reactions/reactions.type.js +23 -21
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +8 -32
- package/dist/reconnection-manager/index.js +232 -285
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +5 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +1 -15
- package/dist/recording-controller/index.js +46 -57
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +4 -5
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -0
- package/dist/roap/collection.js +63 -0
- package/dist/roap/collection.js.map +1 -0
- package/dist/roap/handler.d.ts +47 -0
- package/dist/roap/handler.js +279 -0
- package/dist/roap/handler.js.map +1 -0
- package/dist/roap/index.d.ts +47 -9
- package/dist/roap/index.js +238 -100
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +12 -18
- package/dist/roap/request.js +180 -126
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -0
- package/dist/roap/state.js +127 -0
- package/dist/roap/state.js.map +1 -0
- package/dist/roap/turnDiscovery.d.ts +16 -27
- package/dist/roap/turnDiscovery.js +105 -115
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -0
- package/dist/roap/util.js +76 -0
- package/dist/roap/util.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +83 -1
- package/dist/statsAnalyzer/global.js +85 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +30 -50
- package/dist/statsAnalyzer/index.js +511 -436
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
- package/dist/statsAnalyzer/mqaUtil.js +90 -130
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +2 -1
- package/dist/transcription/index.js.map +1 -1
- package/package.json +26 -39
- package/src/common/errors/webex-errors.ts +12 -36
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +1 -5
- package/src/common/queue.ts +8 -22
- package/src/config.ts +7 -6
- package/src/constants.ts +100 -265
- package/src/controls-options-manager/enums.ts +0 -12
- package/src/controls-options-manager/index.ts +21 -116
- package/src/controls-options-manager/util.ts +14 -294
- package/src/index.js +15 -0
- package/src/locus-info/controlsUtils.ts +0 -110
- package/src/locus-info/index.ts +61 -450
- package/src/locus-info/infoUtils.ts +2 -14
- package/src/locus-info/mediaSharesUtils.ts +0 -64
- package/src/locus-info/parser.ts +47 -258
- package/src/locus-info/selfUtils.ts +2 -85
- package/src/media/index.ts +370 -153
- package/src/media/properties.ts +136 -106
- package/src/media/util.ts +21 -0
- package/src/mediaQualityMetrics/config.ts +377 -244
- package/src/meeting/effectsState.ts +209 -0
- package/src/meeting/in-meeting-actions.ts +0 -176
- package/src/meeting/index.ts +2581 -4306
- package/src/meeting/muteState.ts +138 -224
- package/src/meeting/request.ts +127 -214
- package/src/meeting/util.ts +423 -687
- package/src/meeting-info/index.ts +8 -81
- package/src/meeting-info/meeting-info-v2.ts +13 -163
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +0 -33
- package/src/meetings/index.ts +136 -531
- package/src/meetings/request.ts +0 -2
- package/src/meetings/util.ts +5 -116
- package/src/member/index.ts +1 -43
- package/src/member/util.ts +28 -125
- package/src/members/collection.ts +0 -8
- package/src/members/index.ts +52 -187
- package/src/members/request.ts +27 -87
- package/src/members/util.ts +291 -332
- package/src/metrics/config.ts +485 -0
- package/src/metrics/constants.ts +6 -15
- package/src/metrics/index.ts +471 -1
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/peer-connection-manager/index.ts +847 -0
- package/src/peer-connection-manager/util.ts +119 -0
- package/src/reachability/index.ts +347 -246
- package/src/reachability/request.ts +8 -17
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +4 -30
- package/src/reconnection-manager/index.ts +156 -168
- package/src/recording-controller/index.ts +3 -20
- package/src/recording-controller/util.ts +9 -26
- package/src/roap/collection.ts +62 -0
- package/src/roap/handler.ts +294 -0
- package/src/roap/index.ts +241 -96
- package/src/roap/request.ts +148 -74
- package/src/roap/state.ts +156 -0
- package/src/roap/turnDiscovery.ts +56 -62
- package/src/roap/util.ts +100 -0
- package/src/statsAnalyzer/global.ts +84 -1
- package/src/statsAnalyzer/index.ts +645 -479
- package/src/statsAnalyzer/mqaUtil.ts +126 -128
- package/test/integration/spec/journey.js +264 -320
- package/test/integration/spec/space-meeting.js +4 -77
- package/test/unit/spec/common/queue.js +2 -31
- package/test/unit/spec/controls-options-manager/index.js +0 -163
- package/test/unit/spec/controls-options-manager/util.js +60 -576
- package/test/unit/spec/fixture/locus.js +0 -1
- package/test/unit/spec/locus-info/controlsUtils.js +30 -323
- package/test/unit/spec/locus-info/index.js +15 -1437
- package/test/unit/spec/locus-info/infoUtils.js +16 -54
- package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
- package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
- package/test/unit/spec/locus-info/parser.js +35 -116
- package/test/unit/spec/locus-info/selfUtils.js +0 -275
- package/test/unit/spec/media/properties.ts +84 -75
- package/test/unit/spec/meeting/effectsState.js +281 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
- package/test/unit/spec/meeting/index.js +2313 -8384
- package/test/unit/spec/meeting/muteState.js +213 -409
- package/test/unit/spec/meeting/request.js +43 -523
- package/test/unit/spec/meeting/utils.js +24 -834
- package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
- package/test/unit/spec/meeting-info/utilv2.js +0 -21
- package/test/unit/spec/meetings/collection.js +0 -26
- package/test/unit/spec/meetings/index.js +232 -1445
- package/test/unit/spec/meetings/utils.js +2 -202
- package/test/unit/spec/member/index.js +9 -32
- package/test/unit/spec/member/util.js +61 -499
- package/test/unit/spec/members/index.js +5 -394
- package/test/unit/spec/members/request.js +27 -206
- package/test/unit/spec/members/utils.js +38 -173
- package/test/unit/spec/metrics/index.js +50 -1
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/peerconnection-manager/index.js +218 -0
- package/test/unit/spec/peerconnection-manager/utils.js +49 -0
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
- package/test/unit/spec/reachability/index.ts +24 -532
- package/test/unit/spec/reconnection-manager/index.js +24 -163
- package/test/unit/spec/recording-controller/index.js +218 -293
- package/test/unit/spec/recording-controller/util.js +96 -223
- package/test/unit/spec/roap/index.ts +77 -187
- package/test/unit/spec/roap/turnDiscovery.ts +48 -86
- package/test/unit/spec/roap/util.js +30 -0
- package/test/unit/spec/stats-analyzer/index.js +165 -644
- package/test/utils/testUtils.js +45 -0
- package/test/utils/webex-config.js +0 -4
- package/test/utils/webex-test-users.js +3 -7
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/annotation.types.js +0 -7
- package/dist/annotation/annotation.types.js.map +0 -1
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/constants.js +0 -41
- package/dist/annotation/constants.js.map +0 -1
- package/dist/annotation/index.d.ts +0 -117
- package/dist/annotation/index.js +0 -357
- package/dist/annotation/index.js.map +0 -1
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/breakout.js +0 -215
- package/dist/breakouts/breakout.js.map +0 -1
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/collection.js +0 -22
- package/dist/breakouts/collection.js.map +0 -1
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/edit-lock-error.js +0 -51
- package/dist/breakouts/edit-lock-error.js.map +0 -1
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/events.js +0 -44
- package/dist/breakouts/events.js.map +0 -1
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/index.js +0 -1047
- package/dist/breakouts/index.js.map +0 -1
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/request.js +0 -77
- package/dist/breakouts/request.js.map +0 -1
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/breakouts/utils.js +0 -64
- package/dist/breakouts/utils.js.map +0 -1
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/no-meeting-info.js +0 -50
- package/dist/common/errors/no-meeting-info.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/types.js +0 -7
- package/dist/controls-options-manager/types.js.map +0 -1
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/index.js +0 -15
- package/dist/interceptors/index.js.map +0 -1
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interceptors/locusRetry.js +0 -94
- package/dist/interceptors/locusRetry.js.map +0 -1
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/collection.js +0 -22
- package/dist/interpretation/collection.js.map +0 -1
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/index.js +0 -365
- package/dist/interpretation/index.js.map +0 -1
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/interpretation/siLanguage.js +0 -24
- package/dist/interpretation/siLanguage.js.map +0 -1
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/locusMediaRequest.js +0 -291
- package/dist/meeting/locusMediaRequest.js.map +0 -1
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/request.type.js +0 -7
- package/dist/meeting/request.type.js.map +0 -1
- package/dist/meeting/voicea-meeting.d.ts +0 -20
- package/dist/meeting/voicea-meeting.js +0 -201
- package/dist/meeting/voicea-meeting.js.map +0 -1
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/meetings.types.js +0 -7
- package/dist/meetings/meetings.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/types.js +0 -23
- package/dist/member/types.js.map +0 -1
- package/dist/multistream/mediaRequestManager.d.ts +0 -118
- package/dist/multistream/mediaRequestManager.js +0 -344
- package/dist/multistream/mediaRequestManager.js.map +0 -1
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlot.js +0 -200
- package/dist/multistream/receiveSlot.js.map +0 -1
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/receiveSlotManager.js +0 -174
- package/dist/multistream/receiveSlotManager.js.map +0 -1
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMedia.js +0 -268
- package/dist/multistream/remoteMedia.js.map +0 -1
- package/dist/multistream/remoteMediaGroup.d.ts +0 -47
- package/dist/multistream/remoteMediaGroup.js +0 -267
- package/dist/multistream/remoteMediaGroup.js.map +0 -1
- package/dist/multistream/remoteMediaManager.d.ts +0 -285
- package/dist/multistream/remoteMediaManager.js +0 -1211
- package/dist/multistream/remoteMediaManager.js.map +0 -1
- package/dist/multistream/sendSlotManager.d.ts +0 -61
- package/dist/multistream/sendSlotManager.js +0 -236
- package/dist/multistream/sendSlotManager.js.map +0 -1
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/clusterReachability.js +0 -357
- package/dist/reachability/clusterReachability.js.map +0 -1
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reachability/util.js +0 -29
- package/dist/reachability/util.js.map +0 -1
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/constants.js +0 -12
- package/dist/reactions/constants.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -54
- package/dist/rtcMetrics/index.js +0 -140
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/collection.js +0 -43
- package/dist/webinar/collection.js.map +0 -1
- package/dist/webinar/index.d.ts +0 -5
- package/dist/webinar/index.js +0 -68
- package/dist/webinar/index.js.map +0 -1
- package/src/annotation/annotation.types.ts +0 -50
- package/src/annotation/constants.ts +0 -36
- package/src/annotation/index.ts +0 -328
- package/src/breakouts/README.md +0 -220
- package/src/breakouts/breakout.ts +0 -188
- package/src/breakouts/collection.ts +0 -19
- package/src/breakouts/edit-lock-error.ts +0 -25
- package/src/breakouts/events.ts +0 -56
- package/src/breakouts/index.ts +0 -925
- package/src/breakouts/request.ts +0 -55
- package/src/breakouts/utils.ts +0 -57
- package/src/common/errors/no-meeting-info.ts +0 -24
- package/src/controls-options-manager/types.ts +0 -59
- package/src/index.ts +0 -44
- package/src/interceptors/index.ts +0 -3
- package/src/interceptors/locusRetry.ts +0 -67
- package/src/interpretation/README.md +0 -60
- package/src/interpretation/collection.ts +0 -19
- package/src/interpretation/index.ts +0 -332
- package/src/interpretation/siLanguage.ts +0 -18
- package/src/meeting/locusMediaRequest.ts +0 -313
- package/src/meeting/request.type.ts +0 -13
- package/src/meeting/voicea-meeting.ts +0 -161
- package/src/meetings/meetings.types.ts +0 -12
- package/src/member/types.ts +0 -38
- package/src/multistream/mediaRequestManager.ts +0 -440
- package/src/multistream/receiveSlot.ts +0 -184
- package/src/multistream/receiveSlotManager.ts +0 -166
- package/src/multistream/remoteMedia.ts +0 -254
- package/src/multistream/remoteMediaGroup.ts +0 -284
- package/src/multistream/remoteMediaManager.ts +0 -1145
- package/src/multistream/sendSlotManager.ts +0 -170
- package/src/reachability/clusterReachability.ts +0 -320
- package/src/reachability/util.ts +0 -24
- package/src/reactions/constants.ts +0 -4
- package/src/rtcMetrics/constants.ts +0 -3
- package/src/rtcMetrics/index.ts +0 -124
- package/src/webinar/collection.ts +0 -31
- package/src/webinar/index.ts +0 -62
- package/test/integration/spec/converged-space-meetings.js +0 -233
- package/test/unit/spec/annotation/index.ts +0 -418
- package/test/unit/spec/breakouts/breakout.ts +0 -237
- package/test/unit/spec/breakouts/collection.ts +0 -15
- package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
- package/test/unit/spec/breakouts/events.ts +0 -89
- package/test/unit/spec/breakouts/index.ts +0 -1790
- package/test/unit/spec/breakouts/request.ts +0 -104
- package/test/unit/spec/breakouts/utils.js +0 -72
- package/test/unit/spec/interceptors/locusRetry.ts +0 -131
- package/test/unit/spec/interpretation/collection.ts +0 -15
- package/test/unit/spec/interpretation/index.ts +0 -589
- package/test/unit/spec/interpretation/siLanguage.ts +0 -28
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
- package/test/unit/spec/media/index.ts +0 -290
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
- package/test/unit/spec/meeting-info/index.js +0 -300
- package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
- package/test/unit/spec/multistream/receiveSlot.ts +0 -163
- package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
- package/test/unit/spec/multistream/remoteMedia.ts +0 -255
- package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
- package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
- package/test/unit/spec/reachability/clusterReachability.ts +0 -279
- package/test/unit/spec/reachability/request.js +0 -68
- package/test/unit/spec/reachability/util.ts +0 -40
- package/test/unit/spec/roap/request.ts +0 -255
- package/test/unit/spec/rtcMetrics/index.ts +0 -93
- package/test/unit/spec/webinar/collection.ts +0 -13
- package/test/unit/spec/webinar/index.ts +0 -60
- package/test/utils/constants.js +0 -9
- package/test/utils/integrationTestUtils.js +0 -46
- /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
- /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
package/src/meetings/index.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
/* eslint no-shadow: ["error", { "allow": ["eventType"] }] */
|
|
2
2
|
|
|
3
3
|
import '@webex/internal-plugin-mercury';
|
|
4
|
-
import '@webex/internal-plugin-conversation';
|
|
5
|
-
import '@webex/internal-plugin-metrics';
|
|
6
4
|
// @ts-ignore
|
|
7
5
|
import {WebexPlugin} from '@webex/webex-core';
|
|
8
|
-
import {setLogger} from '@webex/internal-media-core';
|
|
9
|
-
|
|
10
|
-
import * as mediaHelpersModule from '@webex/media-helpers';
|
|
11
6
|
|
|
12
7
|
import 'webrtc-adapter';
|
|
13
8
|
|
|
14
9
|
import Metrics from '../metrics';
|
|
10
|
+
import {trigger, eventType} from '../metrics/config';
|
|
15
11
|
import LoggerConfig from '../common/logs/logger-config';
|
|
16
12
|
import StaticConfig from '../common/config';
|
|
17
13
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
@@ -42,14 +38,11 @@ import {
|
|
|
42
38
|
MEETING_REMOVED_REASON,
|
|
43
39
|
_CONVERSATION_URL_,
|
|
44
40
|
CONVERSATION_URL,
|
|
45
|
-
MEETINGNUMBER,
|
|
46
|
-
_JOINED_,
|
|
47
|
-
_MOVED_,
|
|
48
41
|
} from '../constants';
|
|
49
42
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
50
43
|
import MeetingInfo from '../meeting-info';
|
|
51
44
|
import MeetingInfoV2 from '../meeting-info/meeting-info-v2';
|
|
52
|
-
import Meeting
|
|
45
|
+
import Meeting from '../meeting';
|
|
53
46
|
import PersonalMeetingRoom from '../personal-meeting-room';
|
|
54
47
|
import Reachability from '../reachability';
|
|
55
48
|
import Request from './request';
|
|
@@ -58,38 +51,7 @@ import CaptchaError from '../common/errors/captcha-error';
|
|
|
58
51
|
|
|
59
52
|
import MeetingCollection from './collection';
|
|
60
53
|
import MeetingsUtil from './util';
|
|
61
|
-
import PermissionError from '../common/errors/permission';
|
|
62
|
-
import {INoiseReductionEffect, IVirtualBackgroundEffect} from './meetings.types';
|
|
63
|
-
import {SpaceIDDeprecatedError} from '../common/errors/webex-errors';
|
|
64
|
-
import NoMeetingInfoError from '../common/errors/no-meeting-info';
|
|
65
|
-
|
|
66
|
-
let mediaLogger;
|
|
67
|
-
|
|
68
|
-
class MediaLogger {
|
|
69
|
-
info(...args) {
|
|
70
|
-
LoggerProxy.logger.info(...args);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
log(...args) {
|
|
74
|
-
LoggerProxy.logger.log(...args);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
error(...args) {
|
|
78
|
-
LoggerProxy.logger.error(...args);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
warn(...args) {
|
|
82
|
-
LoggerProxy.logger.warn(...args);
|
|
83
|
-
}
|
|
84
54
|
|
|
85
|
-
trace(...args) {
|
|
86
|
-
LoggerProxy.logger.trace(...args);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
debug(...args) {
|
|
90
|
-
LoggerProxy.logger.debug(...args);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
55
|
/**
|
|
94
56
|
* Meetings Ready Event
|
|
95
57
|
* Emitted when the meetings instance on webex is ready
|
|
@@ -148,13 +110,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
148
110
|
meetingCollection: any;
|
|
149
111
|
personalMeetingRoom: any;
|
|
150
112
|
preferredWebexSite: any;
|
|
151
|
-
reachability:
|
|
113
|
+
reachability: any;
|
|
152
114
|
registered: any;
|
|
153
115
|
request: any;
|
|
154
116
|
geoHintInfo: any;
|
|
155
117
|
meetingInfo: any;
|
|
156
|
-
|
|
157
|
-
breakoutLocusForHandleLater: any;
|
|
118
|
+
|
|
158
119
|
namespace = MEETINGS;
|
|
159
120
|
|
|
160
121
|
/**
|
|
@@ -166,17 +127,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
166
127
|
constructor(...args) {
|
|
167
128
|
super(...args);
|
|
168
129
|
|
|
169
|
-
/**
|
|
170
|
-
* The webrtc-core media helpers. This is a temporary solution required for the SDK sample app
|
|
171
|
-
* to be able to call media helper functions.
|
|
172
|
-
*
|
|
173
|
-
* @instance
|
|
174
|
-
* @type {Object}
|
|
175
|
-
* @private
|
|
176
|
-
* @memberof Meetings
|
|
177
|
-
*/
|
|
178
|
-
this.mediaHelpers = mediaHelpersModule;
|
|
179
|
-
|
|
180
130
|
/**
|
|
181
131
|
* The Meetings request to interact with server
|
|
182
132
|
* @instance
|
|
@@ -204,17 +154,15 @@ export default class Meetings extends WebexPlugin {
|
|
|
204
154
|
* @memberof Meetings
|
|
205
155
|
*/
|
|
206
156
|
this.personalMeetingRoom = null;
|
|
207
|
-
|
|
208
157
|
/**
|
|
209
|
-
* The Reachability object to interact with server
|
|
158
|
+
* The Reachability object to interact with server, starts as null until {@link Meeting#setReachability} is called
|
|
210
159
|
* starts as null
|
|
211
160
|
* @instance
|
|
212
161
|
* @type {Object}
|
|
213
162
|
* @private
|
|
214
163
|
* @memberof Meetings
|
|
215
164
|
*/
|
|
216
|
-
|
|
217
|
-
this.reachability = new Reachability(this.webex);
|
|
165
|
+
this.reachability = null;
|
|
218
166
|
|
|
219
167
|
/**
|
|
220
168
|
* If the meetings plugin has been registered and listening via {@link Meetings#register}
|
|
@@ -244,137 +192,30 @@ export default class Meetings extends WebexPlugin {
|
|
|
244
192
|
*/
|
|
245
193
|
this.media = {
|
|
246
194
|
getUserMedia: Media.getUserMedia,
|
|
195
|
+
getSupportedDevice: Media.getSupportedDevice,
|
|
247
196
|
};
|
|
248
197
|
|
|
249
198
|
this.onReady();
|
|
250
199
|
}
|
|
251
200
|
|
|
252
201
|
/**
|
|
253
|
-
*
|
|
254
|
-
* @param {Object} meeting current meeting data
|
|
255
|
-
* @param {Object} newLocus new locus data
|
|
256
|
-
* @returns {boolean}
|
|
257
|
-
* @private
|
|
258
|
-
* @memberof Meetings
|
|
259
|
-
*/
|
|
260
|
-
private isNeedHandleMainLocus(meeting: any, newLocus: any) {
|
|
261
|
-
const breakoutUrl = newLocus.controls?.breakout?.url;
|
|
262
|
-
const breakoutLocus = this.meetingCollection.getActiveBreakoutLocus(breakoutUrl);
|
|
263
|
-
|
|
264
|
-
const isSelfJoined = newLocus?.self?.state === _JOINED_;
|
|
265
|
-
const isSelfMoved = newLocus?.self?.state === _LEFT_ && newLocus?.self?.reason === _MOVED_;
|
|
266
|
-
// @ts-ignore
|
|
267
|
-
const deviceFromNewLocus = MeetingsUtil.getThisDevice(newLocus, this.webex.internal.device.url);
|
|
268
|
-
const isResourceMovedOnThisDevice =
|
|
269
|
-
deviceFromNewLocus?.state === _LEFT_ && deviceFromNewLocus?.reason === _MOVED_;
|
|
270
|
-
|
|
271
|
-
const isNewLocusJoinThisDevice = MeetingsUtil.joinedOnThisDevice(
|
|
272
|
-
meeting,
|
|
273
|
-
newLocus,
|
|
274
|
-
// @ts-ignore
|
|
275
|
-
this.webex.internal.device.url
|
|
276
|
-
);
|
|
277
|
-
const isBreakoutLocusJoinThisDevice =
|
|
278
|
-
breakoutLocus?.joinedWith?.correlationId &&
|
|
279
|
-
breakoutLocus.joinedWith.correlationId === meeting?.correlationId;
|
|
280
|
-
|
|
281
|
-
if (isSelfJoined && isNewLocusJoinThisDevice) {
|
|
282
|
-
LoggerProxy.logger.log(
|
|
283
|
-
'Meetings:index#isNeedHandleMainLocus --> self this device shown as JOINED in the main session'
|
|
284
|
-
);
|
|
285
|
-
if (breakoutLocus?.joinedWith && deviceFromNewLocus) {
|
|
286
|
-
const breakoutReplaceAt =
|
|
287
|
-
breakoutLocus.joinedWith.replaces?.length > 0
|
|
288
|
-
? breakoutLocus.joinedWith.replaces[0].replaceAt
|
|
289
|
-
: '';
|
|
290
|
-
const newLocusReplaceAt =
|
|
291
|
-
deviceFromNewLocus.replaces?.length > 0 ? deviceFromNewLocus.replaces[0].replaceAt : '';
|
|
292
|
-
if (breakoutReplaceAt && newLocusReplaceAt && breakoutReplaceAt > newLocusReplaceAt) {
|
|
293
|
-
LoggerProxy.logger.log(
|
|
294
|
-
`Meetings:index#isNeedHandleMainLocus --> this is expired main joined status locus_dto replacedAt ${newLocusReplaceAt} bo replacedAt ${breakoutReplaceAt}`
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
return true;
|
|
302
|
-
}
|
|
303
|
-
if (isBreakoutLocusJoinThisDevice) {
|
|
304
|
-
LoggerProxy.logger.log(
|
|
305
|
-
`Meetings:index#isNeedHandleMainLocus --> there is active breakout session and joined on this device, and don't need to handle main session: ${breakoutUrl}`
|
|
306
|
-
);
|
|
307
|
-
|
|
308
|
-
return false;
|
|
309
|
-
}
|
|
310
|
-
if (isSelfMoved && (newLocus?.self?.removed || isResourceMovedOnThisDevice)) {
|
|
311
|
-
LoggerProxy.logger.log(
|
|
312
|
-
'Meetings:index#isNeedHandleMainLocus --> self moved main locus with self removed status or with device resource moved, not need to handle'
|
|
313
|
-
);
|
|
314
|
-
|
|
315
|
-
return false;
|
|
316
|
-
}
|
|
317
|
-
if (isSelfJoined && isResourceMovedOnThisDevice) {
|
|
318
|
-
LoggerProxy.logger.log(
|
|
319
|
-
'Meetings:index#isNeedHandleMainLocus --> self device left&moved in main locus with self joined status, not need to handle'
|
|
320
|
-
);
|
|
321
|
-
|
|
322
|
-
return false;
|
|
323
|
-
}
|
|
324
|
-
LoggerProxy.logger.log(
|
|
325
|
-
'Meetings:index#isNeedHandleMainLocus --> this is a normal main session locusDTO update case'
|
|
326
|
-
);
|
|
327
|
-
|
|
328
|
-
return true;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* check whether you need to handle this locus data or not
|
|
333
|
-
* @param {Object} meeting old locus data
|
|
334
|
-
* @param {Object} newLocus new locus data
|
|
335
|
-
* @returns {boolean}
|
|
336
|
-
* @private
|
|
337
|
-
* @memberof Meetings
|
|
338
|
-
*/
|
|
339
|
-
private isNeedHandleLocusDTO(meeting: any, newLocus: any) {
|
|
340
|
-
if (newLocus) {
|
|
341
|
-
const isNewLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(newLocus);
|
|
342
|
-
const isSelfMoved = newLocus?.self?.state === _LEFT_ && newLocus?.self?.reason === _MOVED_;
|
|
343
|
-
if (!meeting) {
|
|
344
|
-
if (isNewLocusAsBreakout) {
|
|
345
|
-
LoggerProxy.logger.log(
|
|
346
|
-
`Meetings:index#isNeedHandleLocusDTO --> the first breakout session locusDTO active status: ${newLocus.fullState?.active}`
|
|
347
|
-
);
|
|
348
|
-
|
|
349
|
-
return newLocus.self?.state === _JOINED_;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
return this.isNeedHandleMainLocus(meeting, newLocus);
|
|
353
|
-
}
|
|
354
|
-
if (!isNewLocusAsBreakout) {
|
|
355
|
-
return this.isNeedHandleMainLocus(meeting, newLocus);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
return !isSelfMoved;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
return true;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
/**
|
|
365
|
-
* get corresponding meeting object by locus data
|
|
202
|
+
* handle locus events and takes meeting actions with them as they come in
|
|
366
203
|
* @param {Object} data a locus event
|
|
367
204
|
* @param {String} data.locusUrl
|
|
368
205
|
* @param {Object} data.locus
|
|
369
|
-
* @
|
|
206
|
+
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
207
|
+
* @param {String} data.eventType
|
|
208
|
+
* @returns {undefined}
|
|
370
209
|
* @private
|
|
371
210
|
* @memberof Meetings
|
|
372
211
|
*/
|
|
373
|
-
|
|
212
|
+
private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {
|
|
213
|
+
let meeting = null;
|
|
214
|
+
|
|
374
215
|
// getting meeting by correlationId. This will happen for the new event
|
|
375
216
|
// Either the locus
|
|
376
217
|
// TODO : Add check for the callBack Address
|
|
377
|
-
|
|
218
|
+
meeting =
|
|
378
219
|
this.meetingCollection.getByKey(LOCUS_URL, data.locusUrl) ||
|
|
379
220
|
// @ts-ignore
|
|
380
221
|
this.meetingCollection.getByKey(
|
|
@@ -390,24 +231,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
390
231
|
) ||
|
|
391
232
|
(data.locus.info?.isUnifiedSpaceMeeting
|
|
392
233
|
? undefined
|
|
393
|
-
: this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl))
|
|
394
|
-
this.meetingCollection.getByKey(MEETINGNUMBER, data.locus?.info?.webExMeetingId)
|
|
395
|
-
);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* handle locus events and takes meeting actions with them as they come in
|
|
400
|
-
* @param {Object} data a locus event
|
|
401
|
-
* @param {String} data.locusUrl
|
|
402
|
-
* @param {Object} data.locus
|
|
403
|
-
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
404
|
-
* @param {String} data.eventType
|
|
405
|
-
* @returns {undefined}
|
|
406
|
-
* @private
|
|
407
|
-
* @memberof Meetings
|
|
408
|
-
*/
|
|
409
|
-
private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {
|
|
410
|
-
let meeting = this.getCorrespondingMeetingByLocus(data);
|
|
234
|
+
: this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl));
|
|
411
235
|
|
|
412
236
|
// Special case when locus has got replaced, This only happend once if a replace locus exists
|
|
413
237
|
// https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
|
|
@@ -420,16 +244,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
420
244
|
);
|
|
421
245
|
}
|
|
422
246
|
|
|
423
|
-
if (meeting && !MeetingsUtil.isBreakoutLocusDTO(data.locus)) {
|
|
424
|
-
meeting.locusInfo.updateMainSessionLocusCache(data.locus);
|
|
425
|
-
}
|
|
426
|
-
if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
|
|
427
|
-
LoggerProxy.logger.log(
|
|
428
|
-
`Meetings:index#handleLocusEvent --> doesn't need to process locus event`
|
|
429
|
-
);
|
|
430
|
-
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
247
|
if (!meeting) {
|
|
434
248
|
// TODO: create meeting when we get a meeting object
|
|
435
249
|
// const checkForEnded = (locus) => {
|
|
@@ -486,7 +300,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
486
300
|
|
|
487
301
|
// It's a new meeting so initialize the locus data
|
|
488
302
|
meeting.locusInfo.initialSetup(data.locus);
|
|
489
|
-
this.checkHandleBreakoutLocus(data.locus);
|
|
490
303
|
})
|
|
491
304
|
.catch((e) => {
|
|
492
305
|
LoggerProxy.logger.error(e);
|
|
@@ -496,15 +309,10 @@ export default class Meetings extends WebexPlugin {
|
|
|
496
309
|
// because the other user left so before sending 'added' event make sure it exists in the collection
|
|
497
310
|
|
|
498
311
|
if (this.getMeetingByType(_ID_, meeting.id)) {
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
trigger: 'mercury-event',
|
|
504
|
-
},
|
|
505
|
-
options: {
|
|
506
|
-
meetingId: meeting.id,
|
|
507
|
-
},
|
|
312
|
+
Metrics.postEvent({
|
|
313
|
+
event: eventType.REMOTE_STARTED,
|
|
314
|
+
meeting,
|
|
315
|
+
data: {trigger: trigger.MERCURY_EVENT},
|
|
508
316
|
});
|
|
509
317
|
Trigger.trigger(
|
|
510
318
|
this,
|
|
@@ -584,7 +392,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
584
392
|
|
|
585
393
|
// @ts-ignore
|
|
586
394
|
this.webex.internal.mercury.on(ONLINE, () => {
|
|
587
|
-
this.syncMeetings(
|
|
395
|
+
this.syncMeetings();
|
|
588
396
|
});
|
|
589
397
|
|
|
590
398
|
// @ts-ignore
|
|
@@ -623,9 +431,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
623
431
|
// @ts-ignore
|
|
624
432
|
LoggerProxy.set(this.webex.logger);
|
|
625
433
|
|
|
626
|
-
mediaLogger = new MediaLogger();
|
|
627
|
-
setLogger(mediaLogger);
|
|
628
|
-
|
|
629
434
|
/**
|
|
630
435
|
* The MeetingInfo object to interact with server
|
|
631
436
|
* @instance
|
|
@@ -657,7 +462,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
657
462
|
|
|
658
463
|
MeetingsUtil.checkH264Support({disableNotifications: true});
|
|
659
464
|
// @ts-ignore
|
|
660
|
-
Metrics.initialSetup(this.webex);
|
|
465
|
+
Metrics.initialSetup(this.meetingCollection, this.webex);
|
|
661
466
|
});
|
|
662
467
|
}
|
|
663
468
|
|
|
@@ -682,38 +487,35 @@ export default class Meetings extends WebexPlugin {
|
|
|
682
487
|
}
|
|
683
488
|
|
|
684
489
|
/**
|
|
685
|
-
* API to
|
|
686
|
-
* @param {Boolean}
|
|
490
|
+
* API to enable or disable TURN discovery
|
|
491
|
+
* @param {Boolean} enable
|
|
687
492
|
* @private
|
|
688
493
|
* @memberof Meetings
|
|
689
494
|
* @returns {undefined}
|
|
690
495
|
*/
|
|
691
|
-
private
|
|
692
|
-
if (typeof
|
|
496
|
+
private _toggleTurnDiscovery(enable: boolean) {
|
|
497
|
+
if (typeof enable !== 'boolean') {
|
|
693
498
|
return;
|
|
694
499
|
}
|
|
695
500
|
// @ts-ignore
|
|
696
|
-
|
|
697
|
-
// @ts-ignore
|
|
698
|
-
this.config.experimental.enableAdhocMeetings = changeState;
|
|
699
|
-
}
|
|
501
|
+
this.config.experimental.enableTurnDiscovery = enable;
|
|
700
502
|
}
|
|
701
503
|
|
|
702
504
|
/**
|
|
703
|
-
* API to toggle
|
|
704
|
-
* @param {Boolean}
|
|
505
|
+
* API to toggle starting adhoc meeting
|
|
506
|
+
* @param {Boolean} changeState
|
|
705
507
|
* @private
|
|
706
508
|
* @memberof Meetings
|
|
707
509
|
* @returns {undefined}
|
|
708
510
|
*/
|
|
709
|
-
private
|
|
710
|
-
if (typeof
|
|
511
|
+
private _toggleAdhocMeetings(changeState: boolean) {
|
|
512
|
+
if (typeof changeState !== 'boolean') {
|
|
711
513
|
return;
|
|
712
514
|
}
|
|
713
515
|
// @ts-ignore
|
|
714
|
-
if (this.config
|
|
516
|
+
if (this.config?.experimental?.enableAdhocMeetings !== changeState) {
|
|
715
517
|
// @ts-ignore
|
|
716
|
-
this.config.experimental.
|
|
518
|
+
this.config.experimental.enableAdhocMeetings = changeState;
|
|
717
519
|
}
|
|
718
520
|
}
|
|
719
521
|
|
|
@@ -829,36 +631,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
829
631
|
);
|
|
830
632
|
}
|
|
831
633
|
|
|
832
|
-
/**
|
|
833
|
-
* Creates a noise reduction effect
|
|
834
|
-
*
|
|
835
|
-
* @param {INoiseReductionEffect} options optional custom effect options
|
|
836
|
-
* @returns {Promise<effect>} noise reduction effect.
|
|
837
|
-
* @public
|
|
838
|
-
* @memberof Meetings
|
|
839
|
-
*/
|
|
840
|
-
createNoiseReductionEffect = async (options?: INoiseReductionEffect) => {
|
|
841
|
-
// @ts-ignore
|
|
842
|
-
const authToken = this.webex.credentials.supertoken.access_token;
|
|
843
|
-
|
|
844
|
-
return new mediaHelpersModule.NoiseReductionEffect({authToken, ...options});
|
|
845
|
-
};
|
|
846
|
-
|
|
847
|
-
/**
|
|
848
|
-
* Creates a virtual background effect
|
|
849
|
-
*
|
|
850
|
-
* @param {IVirtualBackgroundEffect} options optional custom effect options
|
|
851
|
-
* @returns {Promise<effect>} virtual background effect.
|
|
852
|
-
* @public
|
|
853
|
-
* @memberof Meetings
|
|
854
|
-
*/
|
|
855
|
-
createVirtualBackgroundEffect = async (options?: IVirtualBackgroundEffect) => {
|
|
856
|
-
// @ts-ignore
|
|
857
|
-
const authToken = this.webex.credentials.supertoken.access_token;
|
|
858
|
-
|
|
859
|
-
return new mediaHelpersModule.VirtualBackgroundEffect({authToken, ...options});
|
|
860
|
-
};
|
|
861
|
-
|
|
862
634
|
/**
|
|
863
635
|
* Uploads logs to the webex services for tracking
|
|
864
636
|
* @param {Object} [options={}]
|
|
@@ -873,10 +645,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
873
645
|
*/
|
|
874
646
|
uploadLogs(
|
|
875
647
|
options: {
|
|
876
|
-
autoupload?: boolean;
|
|
877
648
|
callStart?: string;
|
|
878
649
|
feedbackId?: string;
|
|
879
|
-
locussessionid?: string;
|
|
880
650
|
locusId?: string;
|
|
881
651
|
correlationId?: string;
|
|
882
652
|
meetingId?: string;
|
|
@@ -893,7 +663,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
893
663
|
'Meetings:index#uploadLogs --> Upload logs for meeting completed.',
|
|
894
664
|
uploadResult
|
|
895
665
|
);
|
|
896
|
-
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_SUCCESS, options);
|
|
897
666
|
Trigger.trigger(
|
|
898
667
|
this,
|
|
899
668
|
{
|
|
@@ -928,7 +697,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
928
697
|
);
|
|
929
698
|
|
|
930
699
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_FAILURE, {
|
|
931
|
-
|
|
700
|
+
// @ts-ignore - seems like typo
|
|
701
|
+
meetingId: options.meetingsId,
|
|
932
702
|
reason: uploadError.message,
|
|
933
703
|
stack: uploadError.stack,
|
|
934
704
|
code: uploadError.code,
|
|
@@ -936,6 +706,17 @@ export default class Meetings extends WebexPlugin {
|
|
|
936
706
|
});
|
|
937
707
|
}
|
|
938
708
|
|
|
709
|
+
/**
|
|
710
|
+
* initializes the reachability instance for Meetings
|
|
711
|
+
* @returns {undefined}
|
|
712
|
+
* @public
|
|
713
|
+
* @memberof Meetings
|
|
714
|
+
*/
|
|
715
|
+
setReachability() {
|
|
716
|
+
// @ts-ignore
|
|
717
|
+
this.reachability = new Reachability(this.webex);
|
|
718
|
+
}
|
|
719
|
+
|
|
939
720
|
/**
|
|
940
721
|
* gets the reachability instance for Meetings
|
|
941
722
|
* @returns {Reachability}
|
|
@@ -953,6 +734,10 @@ export default class Meetings extends WebexPlugin {
|
|
|
953
734
|
* @memberof Meetings
|
|
954
735
|
*/
|
|
955
736
|
startReachability() {
|
|
737
|
+
if (!this.reachability) {
|
|
738
|
+
this.setReachability();
|
|
739
|
+
}
|
|
740
|
+
|
|
956
741
|
return this.getReachability().gatherReachability();
|
|
957
742
|
}
|
|
958
743
|
|
|
@@ -976,30 +761,15 @@ export default class Meetings extends WebexPlugin {
|
|
|
976
761
|
* @memberof Meetings
|
|
977
762
|
*/
|
|
978
763
|
fetchUserPreferredWebexSite() {
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
.get()
|
|
989
|
-
.then((user) => {
|
|
990
|
-
const preferredWebexSite =
|
|
991
|
-
user?.userPreferences?.userPreferencesItems?.preferredWebExSite;
|
|
992
|
-
if (preferredWebexSite) {
|
|
993
|
-
this.preferredWebexSite = preferredWebexSite;
|
|
994
|
-
} else {
|
|
995
|
-
throw new Error('site not found');
|
|
996
|
-
}
|
|
997
|
-
})
|
|
998
|
-
.catch(() => {
|
|
999
|
-
LoggerProxy.logger.error(
|
|
1000
|
-
'Failed to fetch preferred site from user - no site will be set'
|
|
1001
|
-
);
|
|
1002
|
-
});
|
|
764
|
+
// @ts-ignore
|
|
765
|
+
return this.webex.people._getMe().then((me) => {
|
|
766
|
+
const isGuestUser = me.type === 'appuser';
|
|
767
|
+
if (!isGuestUser) {
|
|
768
|
+
return this.request.getMeetingPreferences().then((res) => {
|
|
769
|
+
if (res) {
|
|
770
|
+
this.preferredWebexSite = MeetingsUtil.parseDefaultSiteFromMeetingPreferences(res);
|
|
771
|
+
}
|
|
772
|
+
});
|
|
1003
773
|
}
|
|
1004
774
|
|
|
1005
775
|
return Promise.resolve();
|
|
@@ -1012,7 +782,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
1012
782
|
* @public
|
|
1013
783
|
* @memberof Meetings
|
|
1014
784
|
*/
|
|
1015
|
-
|
|
1016
785
|
getPersonalMeetingRoom() {
|
|
1017
786
|
return this.personalMeetingRoom;
|
|
1018
787
|
}
|
|
@@ -1043,55 +812,29 @@ export default class Meetings extends WebexPlugin {
|
|
|
1043
812
|
}
|
|
1044
813
|
|
|
1045
814
|
/**
|
|
1046
|
-
* Create a meeting
|
|
1047
|
-
*
|
|
1048
|
-
* When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
|
|
1049
|
-
*
|
|
1050
|
-
* @param {string} destination - sipURL, phonenumber, or locus object}
|
|
815
|
+
* Create a meeting.
|
|
816
|
+
* @param {string} destination - sipURL, spaceId, phonenumber, or locus object}
|
|
1051
817
|
* @param {string} [type] - the optional specified type, such as locusId
|
|
1052
818
|
* @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
|
|
1053
|
-
* @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
|
|
1054
|
-
* @param {string} correlationId - the optional specified correlationId (callStateForMetrics.correlationId can be provided instead)
|
|
1055
|
-
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
|
1056
|
-
* @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
|
|
1057
|
-
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
1058
|
-
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
1059
819
|
* @returns {Promise<Meeting>} A new Meeting.
|
|
1060
820
|
* @public
|
|
1061
821
|
* @memberof Meetings
|
|
1062
822
|
*/
|
|
1063
|
-
public create(
|
|
1064
|
-
destination: string,
|
|
1065
|
-
type: string = null,
|
|
1066
|
-
useRandomDelayForInfo = false,
|
|
1067
|
-
infoExtraParams = {},
|
|
1068
|
-
correlationId: string = undefined,
|
|
1069
|
-
failOnMissingMeetingInfo = false,
|
|
1070
|
-
callStateForMetrics: CallStateForMetrics = undefined,
|
|
1071
|
-
meetingInfo = undefined,
|
|
1072
|
-
meetingLookupUrl = undefined
|
|
1073
|
-
) {
|
|
823
|
+
public create(destination: string, type: string = null, useRandomDelayForInfo = false) {
|
|
1074
824
|
// TODO: type should be from a dictionary
|
|
1075
825
|
|
|
1076
826
|
// Validate meeting information based on the provided destination and
|
|
1077
827
|
// type. This must be performed prior to determining if the meeting is
|
|
1078
828
|
// found in the collection, as we mutate the destination for hydra person
|
|
1079
829
|
// id values.
|
|
1080
|
-
if (correlationId) {
|
|
1081
|
-
callStateForMetrics = {...(callStateForMetrics || {}), correlationId};
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
830
|
return (
|
|
1085
831
|
this.meetingInfo
|
|
1086
832
|
.fetchInfoOptions(destination, type)
|
|
1087
833
|
// Catch a failure to fetch info options.
|
|
1088
834
|
.catch((error) => {
|
|
1089
|
-
LoggerProxy.logger.
|
|
1090
|
-
`Meetings:index#create -->
|
|
835
|
+
LoggerProxy.logger.info(
|
|
836
|
+
`Meetings:index#create --> INFO, unable to determine info options: ${error.message}`
|
|
1091
837
|
);
|
|
1092
|
-
if (error instanceof SpaceIDDeprecatedError) {
|
|
1093
|
-
throw new SpaceIDDeprecatedError();
|
|
1094
|
-
}
|
|
1095
838
|
})
|
|
1096
839
|
.then((options: any = {}) => {
|
|
1097
840
|
// Normalize the destination.
|
|
@@ -1122,61 +865,49 @@ export default class Meetings extends WebexPlugin {
|
|
|
1122
865
|
// Validate if a meeting was found.
|
|
1123
866
|
if (!meeting) {
|
|
1124
867
|
// Create a meeting based on the normalized destination and type.
|
|
1125
|
-
return this.createMeeting(
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
autoupload: true,
|
|
1166
|
-
});
|
|
1167
|
-
}
|
|
1168
|
-
});
|
|
1169
|
-
} else {
|
|
1170
|
-
LoggerProxy.logger.error(
|
|
1171
|
-
`Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`
|
|
1172
|
-
);
|
|
868
|
+
return this.createMeeting(targetDest, type, useRandomDelayForInfo).then(
|
|
869
|
+
(createdMeeting: any) => {
|
|
870
|
+
// If the meeting was successfully created.
|
|
871
|
+
if (createdMeeting && createdMeeting.on) {
|
|
872
|
+
// Create a destruction event for the meeting.
|
|
873
|
+
createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {
|
|
874
|
+
// @ts-ignore
|
|
875
|
+
if (this.config.autoUploadLogs) {
|
|
876
|
+
this.uploadLogs({
|
|
877
|
+
callStart: createdMeeting.locusInfo?.fullState?.lastActive,
|
|
878
|
+
correlationId: createdMeeting.correlationId,
|
|
879
|
+
feedbackId: createdMeeting.correlationId,
|
|
880
|
+
locusId: createdMeeting.locusId,
|
|
881
|
+
meetingId: createdMeeting.locusInfo?.info?.webExMeetingId,
|
|
882
|
+
}).then(() => this.destroy(createdMeeting, payload.reason));
|
|
883
|
+
} else {
|
|
884
|
+
this.destroy(createdMeeting, payload.reason);
|
|
885
|
+
}
|
|
886
|
+
});
|
|
887
|
+
|
|
888
|
+
createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {
|
|
889
|
+
// @ts-ignore
|
|
890
|
+
if (this.config.autoUploadLogs) {
|
|
891
|
+
this.uploadLogs({
|
|
892
|
+
callStart: meetingInstance?.locusInfo?.fullState?.lastActive,
|
|
893
|
+
correlationId: meetingInstance.correlationId,
|
|
894
|
+
feedbackId: meetingInstance.correlationId,
|
|
895
|
+
locusId: meetingInstance.locusId,
|
|
896
|
+
meetingId: meetingInstance.locusInfo?.info?.webExMeetingId,
|
|
897
|
+
});
|
|
898
|
+
}
|
|
899
|
+
});
|
|
900
|
+
} else {
|
|
901
|
+
LoggerProxy.logger.error(
|
|
902
|
+
`Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`
|
|
903
|
+
);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
// Return the newly created meeting.
|
|
907
|
+
return Promise.resolve(createdMeeting);
|
|
1173
908
|
}
|
|
1174
|
-
|
|
1175
|
-
// Return the newly created meeting.
|
|
1176
|
-
return Promise.resolve(createdMeeting);
|
|
1177
|
-
});
|
|
909
|
+
);
|
|
1178
910
|
}
|
|
1179
|
-
meeting.setCallStateForMetrics(callStateForMetrics);
|
|
1180
911
|
|
|
1181
912
|
// Return the existing meeting.
|
|
1182
913
|
return Promise.resolve(meeting);
|
|
@@ -1185,18 +916,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
1185
916
|
}
|
|
1186
917
|
|
|
1187
918
|
/**
|
|
1188
|
-
* Create meeting
|
|
1189
|
-
*
|
|
1190
|
-
* When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
|
|
1191
|
-
*
|
|
1192
919
|
* @param {String} destination see create()
|
|
1193
920
|
* @param {String} type see create()
|
|
1194
921
|
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
1195
|
-
* @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
|
|
1196
|
-
* @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
|
|
1197
|
-
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
|
1198
|
-
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
1199
|
-
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
1200
922
|
* @returns {Promise} a new meeting instance complete with meeting info and destination
|
|
1201
923
|
* @private
|
|
1202
924
|
* @memberof Meetings
|
|
@@ -1204,12 +926,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
1204
926
|
private async createMeeting(
|
|
1205
927
|
destination: any,
|
|
1206
928
|
type: string = null,
|
|
1207
|
-
useRandomDelayForInfo = false
|
|
1208
|
-
infoExtraParams = {},
|
|
1209
|
-
callStateForMetrics: CallStateForMetrics = undefined,
|
|
1210
|
-
failOnMissingMeetingInfo = false,
|
|
1211
|
-
meetingInfo = undefined,
|
|
1212
|
-
meetingLookupUrl = undefined
|
|
929
|
+
useRandomDelayForInfo = false
|
|
1213
930
|
) {
|
|
1214
931
|
const meeting = new Meeting(
|
|
1215
932
|
{
|
|
@@ -1219,11 +936,11 @@ export default class Meetings extends WebexPlugin {
|
|
|
1219
936
|
deviceUrl: this.webex.internal.device.url,
|
|
1220
937
|
// @ts-ignore
|
|
1221
938
|
orgId: this.webex.internal.device.orgId,
|
|
939
|
+
roapSeq: 0,
|
|
1222
940
|
locus: type === _LOCUS_ID_ ? destination : null, // pass the locus object if present
|
|
1223
941
|
meetingInfoProvider: this.meetingInfo,
|
|
1224
942
|
destination,
|
|
1225
943
|
destinationType: type,
|
|
1226
|
-
callStateForMetrics,
|
|
1227
944
|
},
|
|
1228
945
|
{
|
|
1229
946
|
// @ts-ignore
|
|
@@ -1255,45 +972,22 @@ export default class Meetings extends WebexPlugin {
|
|
|
1255
972
|
const isMeetingActive = !!destination.fullState?.active;
|
|
1256
973
|
// @ts-ignore
|
|
1257
974
|
const {enableUnifiedMeetings} = this.config.experimental;
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
sendCAevents: !!callStateForMetrics?.correlationId, // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
|
|
1261
|
-
};
|
|
1262
|
-
|
|
1263
|
-
if (meetingInfo) {
|
|
1264
|
-
meeting.injectMeetingInfo(meetingInfo, meetingInfoOptions, meetingLookupUrl);
|
|
1265
|
-
} else if (
|
|
1266
|
-
enableUnifiedMeetings &&
|
|
1267
|
-
!isMeetingActive &&
|
|
1268
|
-
useRandomDelayForInfo &&
|
|
1269
|
-
waitingTime > 0
|
|
1270
|
-
) {
|
|
975
|
+
|
|
976
|
+
if (enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0) {
|
|
1271
977
|
meeting.fetchMeetingInfoTimeoutId = setTimeout(
|
|
1272
|
-
() => meeting.fetchMeetingInfo(
|
|
978
|
+
() => meeting.fetchMeetingInfo({}),
|
|
1273
979
|
waitingTime
|
|
1274
980
|
);
|
|
1275
981
|
meeting.parseMeetingInfo(undefined, destination);
|
|
1276
982
|
} else {
|
|
1277
|
-
await meeting.fetchMeetingInfo(
|
|
983
|
+
await meeting.fetchMeetingInfo({});
|
|
1278
984
|
}
|
|
1279
985
|
} catch (err) {
|
|
1280
|
-
if (
|
|
1281
|
-
|
|
1282
|
-
!(err instanceof PasswordError) &&
|
|
1283
|
-
!(err instanceof PermissionError)
|
|
1284
|
-
) {
|
|
986
|
+
if (!(err instanceof CaptchaError) && !(err instanceof PasswordError)) {
|
|
987
|
+
// if there is no meeting info we assume its a 1:1 call or wireless share
|
|
1285
988
|
LoggerProxy.logger.info(
|
|
1286
989
|
`Meetings:index#createMeeting --> Info Unable to fetch meeting info for ${destination}.`
|
|
1287
990
|
);
|
|
1288
|
-
if (failOnMissingMeetingInfo) {
|
|
1289
|
-
LoggerProxy.logger.info(
|
|
1290
|
-
`Meetings:index#createMeeting --> Destroying meeting due to missing meeting info.`
|
|
1291
|
-
);
|
|
1292
|
-
// @ts-ignore
|
|
1293
|
-
this.destroy(meeting, MEETING_REMOVED_REASON.MISSING_MEETING_INFO);
|
|
1294
|
-
throw new NoMeetingInfoError();
|
|
1295
|
-
}
|
|
1296
|
-
// if there is no meeting info and no error should be thrown then we assume its a 1:1 call or wireless share
|
|
1297
991
|
LoggerProxy.logger.info(
|
|
1298
992
|
'Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share'
|
|
1299
993
|
);
|
|
@@ -1346,7 +1040,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
1346
1040
|
//
|
|
1347
1041
|
// Our job is to determine the appropriate one
|
|
1348
1042
|
// and its corresponding service so that developers
|
|
1349
|
-
// need only sipURL to get a meeting
|
|
1043
|
+
// need only sipURL or spaceID to get a meeting
|
|
1350
1044
|
// and its ID, but have the option to use createWithType()
|
|
1351
1045
|
// and specify those types to get meetingInfo
|
|
1352
1046
|
}
|
|
@@ -1385,116 +1079,38 @@ export default class Meetings extends WebexPlugin {
|
|
|
1385
1079
|
|
|
1386
1080
|
/**
|
|
1387
1081
|
* syncs all the meeting from server
|
|
1388
|
-
* @
|
|
1389
|
-
* @returns {Promise<void>}
|
|
1082
|
+
* @returns {undefined}
|
|
1390
1083
|
* @public
|
|
1391
1084
|
* @memberof Meetings
|
|
1392
1085
|
*/
|
|
1393
|
-
public syncMeetings(
|
|
1394
|
-
return this.request
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
this.handleLocusEvent({
|
|
1404
|
-
locus,
|
|
1405
|
-
locusUrl: locus.url,
|
|
1406
|
-
});
|
|
1086
|
+
public syncMeetings() {
|
|
1087
|
+
return this.request.getActiveMeetings().then((locusArray) => {
|
|
1088
|
+
const activeLocusUrl = [];
|
|
1089
|
+
|
|
1090
|
+
if (locusArray?.loci && locusArray.loci.length > 0) {
|
|
1091
|
+
locusArray.loci.forEach((locus) => {
|
|
1092
|
+
activeLocusUrl.push(locus.url);
|
|
1093
|
+
this.handleLocusEvent({
|
|
1094
|
+
locus,
|
|
1095
|
+
locusUrl: locus.url,
|
|
1407
1096
|
});
|
|
1408
|
-
}
|
|
1409
|
-
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1099
|
+
const meetingsCollection = this.meetingCollection.getAll();
|
|
1410
1100
|
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1101
|
+
if (Object.keys(meetingsCollection).length > 0) {
|
|
1102
|
+
// Some time the mercury event is missed after mercury reconnect
|
|
1103
|
+
// if sync returns no locus then clear all the meetings
|
|
1104
|
+
for (const meeting of Object.values(meetingsCollection)) {
|
|
1105
|
+
// @ts-ignore
|
|
1106
|
+
if (!activeLocusUrl.includes(meeting.locusUrl)) {
|
|
1107
|
+
// destroy function also uploads logs
|
|
1416
1108
|
// @ts-ignore
|
|
1417
|
-
|
|
1418
|
-
if ((keepOnlyLocusMeetings || locusUrl) && !activeLocusUrl.includes(locusUrl)) {
|
|
1419
|
-
// destroy function also uploads logs
|
|
1420
|
-
// @ts-ignore
|
|
1421
|
-
this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
|
|
1422
|
-
}
|
|
1109
|
+
this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
|
|
1423
1110
|
}
|
|
1424
1111
|
}
|
|
1425
|
-
})
|
|
1426
|
-
.catch((error) => {
|
|
1427
|
-
LoggerProxy.logger.error(
|
|
1428
|
-
`Meetings:index#syncMeetings --> failed to sync meetings, ${error}`
|
|
1429
|
-
);
|
|
1430
|
-
throw new Error(error);
|
|
1431
|
-
});
|
|
1432
|
-
}
|
|
1433
|
-
|
|
1434
|
-
/**
|
|
1435
|
-
* sort out locus array for initial creating
|
|
1436
|
-
* @param {Array} loci original locus array
|
|
1437
|
-
* @returns {undefined}
|
|
1438
|
-
* @public
|
|
1439
|
-
* @memberof Meetings
|
|
1440
|
-
*/
|
|
1441
|
-
sortLocusArrayToUpdate(loci: any[]) {
|
|
1442
|
-
const mainLoci = loci.filter((locus) => !MeetingsUtil.isBreakoutLocusDTO(locus));
|
|
1443
|
-
const breakoutLoci = loci.filter((locus) => MeetingsUtil.isValidBreakoutLocus(locus));
|
|
1444
|
-
this.breakoutLocusForHandleLater = [];
|
|
1445
|
-
const lociToUpdate = [...mainLoci];
|
|
1446
|
-
breakoutLoci.forEach((breakoutLocus) => {
|
|
1447
|
-
const associateMainLocus = mainLoci.find(
|
|
1448
|
-
(mainLocus) => mainLocus.controls?.breakout?.url === breakoutLocus.controls?.breakout?.url
|
|
1449
|
-
);
|
|
1450
|
-
const existCorrespondingMeeting = this.getCorrespondingMeetingByLocus({
|
|
1451
|
-
locus: breakoutLocus,
|
|
1452
|
-
locusUrl: breakoutLocus.url,
|
|
1453
|
-
});
|
|
1454
|
-
|
|
1455
|
-
if (associateMainLocus && !existCorrespondingMeeting) {
|
|
1456
|
-
// if exists both main session and breakout session locus of the same non-exist meeting, handle main locus first,
|
|
1457
|
-
// after meeting create with main locus, then handle the associate breakout locus.
|
|
1458
|
-
// if only handle breakout locus, will miss some date
|
|
1459
|
-
this.breakoutLocusForHandleLater.push(breakoutLocus);
|
|
1460
|
-
} else {
|
|
1461
|
-
lociToUpdate.push(breakoutLocus);
|
|
1462
1112
|
}
|
|
1463
1113
|
});
|
|
1464
|
-
|
|
1465
|
-
return lociToUpdate;
|
|
1466
|
-
}
|
|
1467
|
-
|
|
1468
|
-
/**
|
|
1469
|
-
* check breakout locus which waiting for main locus's meeting to be created, then handle the breakout locus
|
|
1470
|
-
* @param {Object} newCreatedLocus the locus which just create meeting object of it
|
|
1471
|
-
* @returns {undefined}
|
|
1472
|
-
* @public
|
|
1473
|
-
* @memberof Meetings
|
|
1474
|
-
*/
|
|
1475
|
-
checkHandleBreakoutLocus(newCreatedLocus) {
|
|
1476
|
-
if (
|
|
1477
|
-
!newCreatedLocus ||
|
|
1478
|
-
!this.breakoutLocusForHandleLater ||
|
|
1479
|
-
!this.breakoutLocusForHandleLater.length
|
|
1480
|
-
) {
|
|
1481
|
-
return;
|
|
1482
|
-
}
|
|
1483
|
-
if (MeetingsUtil.isBreakoutLocusDTO(newCreatedLocus)) {
|
|
1484
|
-
return;
|
|
1485
|
-
}
|
|
1486
|
-
const existIndex = this.breakoutLocusForHandleLater.findIndex(
|
|
1487
|
-
(breakoutLocus) =>
|
|
1488
|
-
breakoutLocus.controls?.breakout?.url === newCreatedLocus.controls?.breakout?.url
|
|
1489
|
-
);
|
|
1490
|
-
|
|
1491
|
-
if (existIndex < 0) {
|
|
1492
|
-
return;
|
|
1493
|
-
}
|
|
1494
|
-
|
|
1495
|
-
const associateBreakoutLocus = this.breakoutLocusForHandleLater[existIndex];
|
|
1496
|
-
this.handleLocusEvent({locus: associateBreakoutLocus, locusUrl: associateBreakoutLocus.url});
|
|
1497
|
-
this.breakoutLocusForHandleLater.splice(existIndex, 1);
|
|
1498
1114
|
}
|
|
1499
1115
|
|
|
1500
1116
|
/**
|
|
@@ -1516,15 +1132,4 @@ export default class Meetings extends WebexPlugin {
|
|
|
1516
1132
|
getLogger() {
|
|
1517
1133
|
return LoggerProxy.get();
|
|
1518
1134
|
}
|
|
1519
|
-
|
|
1520
|
-
/**
|
|
1521
|
-
* Returns the first meeting it finds that has the webrtc media connection created.
|
|
1522
|
-
* Useful for debugging in the console.
|
|
1523
|
-
*
|
|
1524
|
-
* @private
|
|
1525
|
-
* @returns {Meeting} Meeting object that has a webrtc media connection, else undefined
|
|
1526
|
-
*/
|
|
1527
|
-
getActiveWebrtcMeeting() {
|
|
1528
|
-
return this.meetingCollection.getActiveWebrtcMeeting();
|
|
1529
|
-
}
|
|
1530
1135
|
}
|