@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +178 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/index.js +843 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +56 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +143 -52
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +16 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +261 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/util.js +39 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +11 -18
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +31 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +237 -198
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +80 -89
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +56 -146
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +83 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +31 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2225 -2244
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +102 -100
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +308 -264
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +63 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +565 -552
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +151 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +152 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +35 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +76 -46
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +4 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -6
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +59 -156
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +116 -52
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +58 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +342 -460
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +48 -70
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -131
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +91 -98
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +372 -455
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +8 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +77 -0
- package/dist/types/constants.d.ts +944 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +6 -0
- package/dist/types/controls-options-manager/index.d.ts +128 -0
- package/dist/types/controls-options-manager/util.d.ts +9 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +276 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +32 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
- package/dist/types/meeting/index.d.ts +1720 -0
- package/dist/types/meeting/muteState.d.ts +132 -0
- package/dist/types/meeting/request.d.ts +271 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +315 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +343 -0
- package/dist/types/members/request.d.ts +58 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +171 -0
- package/dist/types/metrics/constants.d.ts +53 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
- package/dist/types/multistream/remoteMedia.d.ts +100 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +74 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +195 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +27 -21
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +153 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/index.ts +745 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +44 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +92 -5
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +7 -0
- package/src/controls-options-manager/index.ts +240 -0
- package/src/controls-options-manager/util.ts +30 -0
- package/src/index.js +4 -1
- package/src/locus-info/controlsUtils.ts +141 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +211 -71
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
- package/src/media/{index.js → index.ts} +179 -176
- package/src/media/{properties.js → properties.ts} +60 -37
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +67 -3
- package/src/meeting/{index.js → index.ts} +2605 -1605
- package/src/meeting/{muteState.js → muteState.ts} +138 -73
- package/src/meeting/{request.js → request.ts} +326 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +131 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1275 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +99 -33
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +281 -144
- package/src/members/{request.js → request.ts} +80 -16
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +108 -55
- package/src/metrics/{config.js → config.ts} +255 -92
- package/src/metrics/{constants.js → constants.ts} +0 -6
- package/src/metrics/{index.js → index.ts} +110 -94
- package/src/multistream/mediaRequestManager.ts +144 -40
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +50 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +228 -120
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +77 -60
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +81 -41
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1242 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +176 -0
- package/test/integration/spec/journey.js +665 -464
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +178 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/index.ts +1252 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +54 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +204 -0
- package/test/unit/spec/controls-options-manager/util.js +86 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +133 -34
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +303 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +101 -103
- package/test/unit/spec/locus-info/selfUtils.js +165 -12
- package/test/unit/spec/media/index.ts +72 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
- package/test/unit/spec/meeting/index.js +2503 -802
- package/test/unit/spec/meeting/muteState.js +146 -61
- package/test/unit/spec/meeting/request.js +141 -43
- package/test/unit/spec/meeting/utils.js +135 -164
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +622 -263
- package/test/unit/spec/meetings/utils.js +65 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +294 -54
- package/test/unit/spec/members/request.js +50 -20
- package/test/unit/spec/members/utils.js +147 -4
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +58 -30
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +12 -8
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +72 -49
- package/test/unit/spec/stats-analyzer/index.js +108 -57
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/testUtils.js +98 -77
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
import {isEmpty} from 'lodash';
|
|
5
|
+
// @ts-ignore
|
|
5
6
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
6
7
|
|
|
7
8
|
import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
|
|
@@ -13,53 +14,72 @@ import ParameterError from '../common/errors/parameter';
|
|
|
13
14
|
import MembersCollection from './collection';
|
|
14
15
|
import MembersRequest from './request';
|
|
15
16
|
import MembersUtil from './util';
|
|
17
|
+
import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
|
|
18
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
19
|
+
import {ServerRoleShape} from './types';
|
|
16
20
|
|
|
17
21
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
* Members Update Event
|
|
23
|
+
* Emitted when something in the roster list needs to be updated
|
|
24
|
+
* @event members:update
|
|
25
|
+
* @instance
|
|
26
|
+
* @property {Object} delta the changes to the members list
|
|
27
|
+
* @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
|
|
28
|
+
* @property {Array} delta.added array added members to the meeting
|
|
29
|
+
* @property {Array} full array the full members collection
|
|
30
|
+
* @memberof Members
|
|
31
|
+
*/
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
* Members Content Update Event
|
|
35
|
+
* Emitted when who is sharing changes
|
|
36
|
+
* @event members:content:update
|
|
37
|
+
* @instance
|
|
38
|
+
* @property {String} activeContentSharingId
|
|
39
|
+
* @property {String} endedContentSharingId
|
|
40
|
+
* @memberof Members
|
|
41
|
+
*/
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
* Members Host Update Event
|
|
45
|
+
* Emitted when who is the host changes
|
|
46
|
+
* @event members:host:update
|
|
47
|
+
* @instance
|
|
48
|
+
* @property {String} activeHostId
|
|
49
|
+
* @property {String} endedHostId
|
|
50
|
+
* @memberof Members
|
|
51
|
+
*/
|
|
48
52
|
|
|
49
53
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
* Members Self Update Event
|
|
55
|
+
* Emitted when who is the self changes
|
|
56
|
+
* @event members:self:update
|
|
57
|
+
* @instance
|
|
58
|
+
* @property {String} activeSelfId
|
|
59
|
+
* @property {String} endedSelfId
|
|
60
|
+
* @memberof Members
|
|
61
|
+
*/
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
64
|
* @class Members
|
|
61
65
|
*/
|
|
62
66
|
export default class Members extends StatelessWebexPlugin {
|
|
67
|
+
hostId: any;
|
|
68
|
+
locusUrl: any;
|
|
69
|
+
mediaShareContentId: any;
|
|
70
|
+
mediaShareWhiteboardId: any;
|
|
71
|
+
membersCollection: any;
|
|
72
|
+
membersRequest: any;
|
|
73
|
+
receiveSlotManager: ReceiveSlotManager;
|
|
74
|
+
mediaRequestManagers: {
|
|
75
|
+
audio: MediaRequestManager;
|
|
76
|
+
video: MediaRequestManager;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
recordingId: any;
|
|
80
|
+
selfId: any;
|
|
81
|
+
type: any;
|
|
82
|
+
|
|
63
83
|
namespace = MEETINGS;
|
|
64
84
|
|
|
65
85
|
/**
|
|
@@ -68,7 +88,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
68
88
|
* @param {Object} options
|
|
69
89
|
* @memberof Members
|
|
70
90
|
*/
|
|
71
|
-
constructor(attrs, options) {
|
|
91
|
+
constructor(attrs: any, options: object) {
|
|
72
92
|
super({}, options);
|
|
73
93
|
/**
|
|
74
94
|
* The Members Request object to interact with server
|
|
@@ -76,7 +96,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
76
96
|
* @type {MembersRequest}
|
|
77
97
|
* @private
|
|
78
98
|
* @memberof Members
|
|
79
|
-
|
|
99
|
+
*/
|
|
100
|
+
// @ts-ignore
|
|
80
101
|
this.membersRequest = new MembersRequest({}, options);
|
|
81
102
|
/**
|
|
82
103
|
* The Members Collection cache
|
|
@@ -84,7 +105,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
84
105
|
* @type {MembersCollection}
|
|
85
106
|
* @private
|
|
86
107
|
* @memberof Members
|
|
87
|
-
|
|
108
|
+
*/
|
|
88
109
|
this.membersCollection = new MembersCollection();
|
|
89
110
|
/**
|
|
90
111
|
* The current locus url for the active meeting
|
|
@@ -92,7 +113,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
92
113
|
* @type {String}
|
|
93
114
|
* @private
|
|
94
115
|
* @memberof Members
|
|
95
|
-
|
|
116
|
+
*/
|
|
96
117
|
this.locusUrl = attrs.locusUrl || null;
|
|
97
118
|
/**
|
|
98
119
|
* The current hostId for the meeting
|
|
@@ -100,7 +121,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
100
121
|
* @type {String}
|
|
101
122
|
* @private
|
|
102
123
|
* @memberof Members
|
|
103
|
-
|
|
124
|
+
*/
|
|
104
125
|
this.hostId = null;
|
|
105
126
|
/**
|
|
106
127
|
* The current type for the meeting, could be MEETING or CALL
|
|
@@ -108,7 +129,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
108
129
|
* @type {String}
|
|
109
130
|
* @private
|
|
110
131
|
* @memberof Members
|
|
111
|
-
|
|
132
|
+
*/
|
|
112
133
|
this.type = null;
|
|
113
134
|
/**
|
|
114
135
|
* Locus has a self object, sent individually to the client
|
|
@@ -122,7 +143,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
122
143
|
* @type {String}
|
|
123
144
|
* @private
|
|
124
145
|
* @memberof Members
|
|
125
|
-
|
|
146
|
+
*/
|
|
126
147
|
this.selfId = null;
|
|
127
148
|
/**
|
|
128
149
|
* The current mediaShareContentId for the meeting
|
|
@@ -130,7 +151,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
130
151
|
* @type {String}
|
|
131
152
|
* @private
|
|
132
153
|
* @memberof Members
|
|
133
|
-
|
|
154
|
+
*/
|
|
134
155
|
this.mediaShareContentId = null;
|
|
135
156
|
/**
|
|
136
157
|
* The current mediaShareWhiteboardId for the meeting
|
|
@@ -138,7 +159,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
138
159
|
* @type {String}
|
|
139
160
|
* @private
|
|
140
161
|
* @memberof Members
|
|
141
|
-
|
|
162
|
+
*/
|
|
142
163
|
this.mediaShareWhiteboardId = null;
|
|
143
164
|
/**
|
|
144
165
|
* The current recordingId for the meeting, if it exists
|
|
@@ -146,7 +167,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
146
167
|
* @type {String}
|
|
147
168
|
* @private
|
|
148
169
|
* @memberof Members
|
|
149
|
-
|
|
170
|
+
*/
|
|
150
171
|
this.recordingId = null;
|
|
151
172
|
|
|
152
173
|
/**
|
|
@@ -171,7 +192,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
171
192
|
* @private
|
|
172
193
|
* @memberof Members
|
|
173
194
|
*/
|
|
174
|
-
locusSelfUpdate(payload) {
|
|
195
|
+
locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
|
|
175
196
|
let newSelfId = null;
|
|
176
197
|
let oldSelfId = null;
|
|
177
198
|
|
|
@@ -202,12 +223,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
202
223
|
this,
|
|
203
224
|
{
|
|
204
225
|
file: 'members',
|
|
205
|
-
function: 'locusSelfUpdate'
|
|
226
|
+
function: 'locusSelfUpdate',
|
|
206
227
|
},
|
|
207
228
|
EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
|
|
208
229
|
{
|
|
209
230
|
activeSelfId: newSelfId,
|
|
210
|
-
endedSelfId: oldSelfId
|
|
231
|
+
endedSelfId: oldSelfId,
|
|
211
232
|
}
|
|
212
233
|
);
|
|
213
234
|
}
|
|
@@ -221,7 +242,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
221
242
|
* @private
|
|
222
243
|
* @memberof Members
|
|
223
244
|
*/
|
|
224
|
-
locusHostUpdate(payload) {
|
|
245
|
+
locusHostUpdate(payload: {newHost: any; oldHost: any}) {
|
|
225
246
|
let newHostId = null;
|
|
226
247
|
let oldHostId = null;
|
|
227
248
|
|
|
@@ -252,16 +273,35 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
252
273
|
this,
|
|
253
274
|
{
|
|
254
275
|
file: 'members',
|
|
255
|
-
function: 'locusHostUpdate'
|
|
276
|
+
function: 'locusHostUpdate',
|
|
256
277
|
},
|
|
257
278
|
EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
|
|
258
279
|
{
|
|
259
280
|
activeHostId: newHostId,
|
|
260
|
-
endedHostId: oldHostId
|
|
281
|
+
endedHostId: oldHostId,
|
|
261
282
|
}
|
|
262
283
|
);
|
|
263
284
|
}
|
|
264
285
|
|
|
286
|
+
/**
|
|
287
|
+
* clear member collection
|
|
288
|
+
* @returns {void}
|
|
289
|
+
* @private
|
|
290
|
+
* @memberof Members
|
|
291
|
+
*/
|
|
292
|
+
clearMembers() {
|
|
293
|
+
this.membersCollection.reset();
|
|
294
|
+
Trigger.trigger(
|
|
295
|
+
this,
|
|
296
|
+
{
|
|
297
|
+
file: 'members',
|
|
298
|
+
function: 'clearMembers',
|
|
299
|
+
},
|
|
300
|
+
EVENT_TRIGGERS.MEMBERS_CLEAR,
|
|
301
|
+
{}
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
265
305
|
/**
|
|
266
306
|
* when new participant updates come in, both delta and full participants, update them in members collection
|
|
267
307
|
* delta object in the event will have {updated, added} and full will be the full membersCollection
|
|
@@ -271,21 +311,27 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
271
311
|
* @private
|
|
272
312
|
* @memberof Members
|
|
273
313
|
*/
|
|
274
|
-
locusParticipantsUpdate(payload) {
|
|
314
|
+
locusParticipantsUpdate(payload: {participants: object; isReplace?: boolean}) {
|
|
275
315
|
if (payload) {
|
|
316
|
+
if (payload.isReplace) {
|
|
317
|
+
this.clearMembers();
|
|
318
|
+
}
|
|
276
319
|
const delta = this.handleLocusInfoUpdatedParticipants(payload);
|
|
277
320
|
const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
|
|
278
321
|
|
|
322
|
+
this.receiveSlotManager?.updateMemberIds();
|
|
323
|
+
|
|
279
324
|
Trigger.trigger(
|
|
280
325
|
this,
|
|
281
326
|
{
|
|
282
327
|
file: 'members',
|
|
283
|
-
function: 'locusParticipantsUpdate'
|
|
328
|
+
function: 'locusParticipantsUpdate',
|
|
284
329
|
},
|
|
285
330
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
286
331
|
{
|
|
287
332
|
delta,
|
|
288
|
-
full
|
|
333
|
+
full,
|
|
334
|
+
isReplace: !!payload.isReplace,
|
|
289
335
|
}
|
|
290
336
|
);
|
|
291
337
|
}
|
|
@@ -300,7 +346,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
300
346
|
* @private
|
|
301
347
|
* @memberof Members
|
|
302
348
|
*/
|
|
303
|
-
locusMediaSharesUpdate(payload) {
|
|
349
|
+
locusMediaSharesUpdate(payload: {current: any; previous: any}) {
|
|
304
350
|
const currentContent = payload.current?.content;
|
|
305
351
|
const previousContent = payload.previous?.content;
|
|
306
352
|
const currentWhiteboard = payload.current?.whiteboard;
|
|
@@ -319,8 +365,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
319
365
|
if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
|
|
320
366
|
whoStopped = currentContent.beneficiaryId;
|
|
321
367
|
this.mediaShareContentId = null;
|
|
322
|
-
}
|
|
323
|
-
|
|
368
|
+
} else if (
|
|
369
|
+
currentContent.disposition === FLOOR_ACTION.GRANTED &&
|
|
370
|
+
currentContent.beneficiaryId !== previousContent.beneficiaryId
|
|
371
|
+
) {
|
|
324
372
|
whoStopped = previousContent.beneficiaryId;
|
|
325
373
|
}
|
|
326
374
|
}
|
|
@@ -337,8 +385,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
337
385
|
if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
|
|
338
386
|
whoStopped = currentWhiteboard.beneficiaryId;
|
|
339
387
|
this.mediaShareWhiteboardId = null;
|
|
340
|
-
}
|
|
341
|
-
|
|
388
|
+
} else if (
|
|
389
|
+
currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
|
|
390
|
+
currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
|
|
391
|
+
) {
|
|
342
392
|
whoStopped = previousWhiteboard.beneficiaryId;
|
|
343
393
|
}
|
|
344
394
|
}
|
|
@@ -363,17 +413,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
363
413
|
this,
|
|
364
414
|
{
|
|
365
415
|
file: 'members',
|
|
366
|
-
function: 'locusMediaSharesUpdate'
|
|
416
|
+
function: 'locusMediaSharesUpdate',
|
|
367
417
|
},
|
|
368
418
|
EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
|
|
369
419
|
{
|
|
370
420
|
activeSharingId: whoSharing,
|
|
371
|
-
endedSharingId: whoStopped
|
|
421
|
+
endedSharingId: whoStopped,
|
|
372
422
|
}
|
|
373
423
|
);
|
|
374
424
|
}
|
|
375
425
|
|
|
376
|
-
|
|
377
426
|
/**
|
|
378
427
|
* Internal update the locus url value
|
|
379
428
|
* @param {Object} payload
|
|
@@ -382,7 +431,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
382
431
|
* @private
|
|
383
432
|
* @memberof Members
|
|
384
433
|
*/
|
|
385
|
-
locusUrlUpdate(payload) {
|
|
434
|
+
locusUrlUpdate(payload: any) {
|
|
386
435
|
if (payload) {
|
|
387
436
|
this.setLocusUrl(null, payload);
|
|
388
437
|
}
|
|
@@ -396,7 +445,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
396
445
|
* @private
|
|
397
446
|
* @memberof Members
|
|
398
447
|
*/
|
|
399
|
-
locusFullStateTypeUpdate(payload) {
|
|
448
|
+
locusFullStateTypeUpdate(payload: {type: string}) {
|
|
400
449
|
// TODO: at some point there could be a timing issue here, for updating each member
|
|
401
450
|
// ie., if the type changes AND there is no locus update, then each member will not know the type of call
|
|
402
451
|
// which means they cannot determine isMutable && isRemovable
|
|
@@ -415,7 +464,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
415
464
|
* @private
|
|
416
465
|
* @memberof Members
|
|
417
466
|
*/
|
|
418
|
-
handleMembersUpdate(membersUpdate) {
|
|
467
|
+
private handleMembersUpdate(membersUpdate: any) {
|
|
419
468
|
if (membersUpdate) {
|
|
420
469
|
if (membersUpdate.updated) {
|
|
421
470
|
this.constructMembers(membersUpdate.updated);
|
|
@@ -435,7 +484,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
435
484
|
* @private
|
|
436
485
|
* @memberof Members
|
|
437
486
|
*/
|
|
438
|
-
constructMembers(list) {
|
|
487
|
+
private constructMembers(list: Array<any>) {
|
|
439
488
|
list.forEach((member) => {
|
|
440
489
|
this.membersCollection.set(member.id, member);
|
|
441
490
|
});
|
|
@@ -448,12 +497,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
448
497
|
* @private
|
|
449
498
|
* @memberof Members
|
|
450
499
|
*/
|
|
451
|
-
handleLocusInfoUpdatedParticipants(payload) {
|
|
500
|
+
private handleLocusInfoUpdatedParticipants(payload: any) {
|
|
452
501
|
this.hostId = payload.hostId || this.hostId;
|
|
453
502
|
this.selfId = payload.selfId || this.selfId;
|
|
454
503
|
this.recordingId = payload.recordingId;
|
|
455
504
|
if (!payload.participants) {
|
|
456
|
-
LoggerProxy.logger.warn(
|
|
505
|
+
LoggerProxy.logger.warn(
|
|
506
|
+
'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
|
|
507
|
+
);
|
|
457
508
|
}
|
|
458
509
|
const memberUpdate = this.update(payload.participants);
|
|
459
510
|
|
|
@@ -469,15 +520,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
469
520
|
* @public
|
|
470
521
|
* @memberof Members
|
|
471
522
|
*/
|
|
472
|
-
setLocusUrl(locus, locusUrl = null) {
|
|
523
|
+
public setLocusUrl(locus: any, locusUrl: string = null) {
|
|
473
524
|
if (locusUrl) {
|
|
474
525
|
this.locusUrl = locusUrl;
|
|
475
|
-
}
|
|
476
|
-
else if (locus && (locus.locusUrl || locus.url)) {
|
|
526
|
+
} else if (locus && (locus.locusUrl || locus.url)) {
|
|
477
527
|
this.locusUrl = locus.locusUrl || locus.url;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
|
|
528
|
+
} else {
|
|
529
|
+
throw new ParameterError(
|
|
530
|
+
'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
|
|
531
|
+
);
|
|
481
532
|
}
|
|
482
533
|
}
|
|
483
534
|
|
|
@@ -490,15 +541,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
490
541
|
* @public
|
|
491
542
|
* @memberof Members
|
|
492
543
|
*/
|
|
493
|
-
setHostId(locus, hostId = null) {
|
|
544
|
+
public setHostId(locus: any, hostId: string = null) {
|
|
494
545
|
if (hostId) {
|
|
495
546
|
this.hostId = hostId;
|
|
496
|
-
}
|
|
497
|
-
else if (locus) {
|
|
547
|
+
} else if (locus) {
|
|
498
548
|
this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
549
|
+
} else {
|
|
550
|
+
throw new ParameterError(
|
|
551
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
552
|
+
);
|
|
502
553
|
}
|
|
503
554
|
}
|
|
504
555
|
|
|
@@ -511,15 +562,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
511
562
|
* @public
|
|
512
563
|
* @memberof Members
|
|
513
564
|
*/
|
|
514
|
-
setType(fullState, type = null) {
|
|
565
|
+
public setType(fullState: any, type: string = null) {
|
|
515
566
|
if (type) {
|
|
516
567
|
this.type = type;
|
|
517
|
-
}
|
|
518
|
-
else if (fullState) {
|
|
568
|
+
} else if (fullState) {
|
|
519
569
|
this.type = (fullState && fullState.type) || null;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
570
|
+
} else {
|
|
571
|
+
throw new ParameterError(
|
|
572
|
+
'Setting type for the Members module should be done with a fullstate object or type string'
|
|
573
|
+
);
|
|
523
574
|
}
|
|
524
575
|
}
|
|
525
576
|
|
|
@@ -531,15 +582,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
531
582
|
* @returns {undefined}
|
|
532
583
|
* @memberof Members
|
|
533
584
|
*/
|
|
534
|
-
setSelfId(locus, selfId = null) {
|
|
585
|
+
setSelfId(locus: any, selfId: string = null) {
|
|
535
586
|
if (selfId) {
|
|
536
587
|
this.selfId = selfId;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
588
|
+
} else if (locus) {
|
|
589
|
+
this.selfId =
|
|
590
|
+
locus && locus.self && locus.self.person && locus.self.person.id
|
|
591
|
+
? locus.self.person.id
|
|
592
|
+
: null;
|
|
593
|
+
} else {
|
|
594
|
+
throw new ParameterError(
|
|
595
|
+
'Setting selfid for the Members module should be done with a locus object or selfId'
|
|
596
|
+
);
|
|
543
597
|
}
|
|
544
598
|
}
|
|
545
599
|
|
|
@@ -551,11 +605,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
551
605
|
* @returns {undefined}
|
|
552
606
|
* @memberof Members
|
|
553
607
|
*/
|
|
554
|
-
setMediaShareContentId(locus, contentId) {
|
|
608
|
+
setMediaShareContentId(locus: any, contentId?: string) {
|
|
555
609
|
if (contentId) {
|
|
556
610
|
this.mediaShareContentId = contentId;
|
|
557
|
-
}
|
|
558
|
-
else if (locus) {
|
|
611
|
+
} else if (locus) {
|
|
559
612
|
const contentMediaShare =
|
|
560
613
|
locus.mediaShares &&
|
|
561
614
|
locus.mediaShares.length &&
|
|
@@ -567,9 +620,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
567
620
|
contentMediaShare.floor.beneficiary &&
|
|
568
621
|
contentMediaShare.floor.beneficiary.id) ||
|
|
569
622
|
null;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
|
|
623
|
+
} else {
|
|
624
|
+
throw new ParameterError(
|
|
625
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
626
|
+
);
|
|
573
627
|
}
|
|
574
628
|
}
|
|
575
629
|
|
|
@@ -581,11 +635,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
581
635
|
* @returns {undefined}
|
|
582
636
|
* @memberof Members
|
|
583
637
|
*/
|
|
584
|
-
setMediaShareWhiteboardId(locus, whiteboardId) {
|
|
638
|
+
setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
|
|
585
639
|
if (whiteboardId) {
|
|
586
640
|
this.mediaShareWhiteboardId = whiteboardId;
|
|
587
|
-
}
|
|
588
|
-
else if (locus) {
|
|
641
|
+
} else if (locus) {
|
|
589
642
|
const whiteboardMediaShare =
|
|
590
643
|
locus.mediaShares &&
|
|
591
644
|
locus.mediaShares.length &&
|
|
@@ -597,9 +650,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
597
650
|
whiteboardMediaShare.floor.beneficiary &&
|
|
598
651
|
whiteboardMediaShare.floor.beneficiary.id) ||
|
|
599
652
|
null;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
|
|
653
|
+
} else {
|
|
654
|
+
throw new ParameterError(
|
|
655
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
656
|
+
);
|
|
603
657
|
}
|
|
604
658
|
}
|
|
605
659
|
|
|
@@ -612,7 +666,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
612
666
|
* @private
|
|
613
667
|
* @memberof Members
|
|
614
668
|
*/
|
|
615
|
-
update(participants) {
|
|
669
|
+
private update(participants: Array<any>) {
|
|
616
670
|
const membersUpdate = {added: [], updated: []};
|
|
617
671
|
|
|
618
672
|
if (participants) {
|
|
@@ -632,11 +686,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
632
686
|
hostId: this.hostId,
|
|
633
687
|
contentSharingId: this.mediaShareContentId,
|
|
634
688
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
635
|
-
type: this.type
|
|
689
|
+
type: this.type,
|
|
636
690
|
})
|
|
637
691
|
);
|
|
638
|
-
}
|
|
639
|
-
else {
|
|
692
|
+
} else {
|
|
640
693
|
membersUpdate.added.push(
|
|
641
694
|
new Member(participant, {
|
|
642
695
|
recordingId: this.recordingId,
|
|
@@ -644,7 +697,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
644
697
|
hostId: this.hostId,
|
|
645
698
|
contentSharingId: this.mediaShareContentId,
|
|
646
699
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
647
|
-
type: this.type
|
|
700
|
+
type: this.type,
|
|
648
701
|
})
|
|
649
702
|
);
|
|
650
703
|
}
|
|
@@ -661,13 +714,17 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
661
714
|
* @returns {Promise}
|
|
662
715
|
* @memberof Members
|
|
663
716
|
*/
|
|
664
|
-
addMember(invitee, alertIfActive) {
|
|
717
|
+
addMember(invitee: any, alertIfActive?: boolean) {
|
|
665
718
|
if (!this.locusUrl) {
|
|
666
|
-
return Promise.reject(
|
|
719
|
+
return Promise.reject(
|
|
720
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
721
|
+
);
|
|
667
722
|
}
|
|
668
723
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
669
724
|
return Promise.reject(
|
|
670
|
-
new ParameterError(
|
|
725
|
+
new ParameterError(
|
|
726
|
+
'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
|
|
727
|
+
)
|
|
671
728
|
);
|
|
672
729
|
}
|
|
673
730
|
const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
@@ -681,9 +738,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
681
738
|
* @returns {Promise}
|
|
682
739
|
* @memberof Members
|
|
683
740
|
*/
|
|
684
|
-
cancelPhoneInvite(invitee) {
|
|
741
|
+
cancelPhoneInvite(invitee: any) {
|
|
685
742
|
if (!this.locusUrl) {
|
|
686
|
-
return Promise.reject(
|
|
743
|
+
return Promise.reject(
|
|
744
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
745
|
+
);
|
|
687
746
|
}
|
|
688
747
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
689
748
|
return Promise.reject(
|
|
@@ -692,22 +751,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
692
751
|
}
|
|
693
752
|
const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
694
753
|
|
|
695
|
-
|
|
696
754
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
697
755
|
}
|
|
698
756
|
|
|
699
757
|
/**
|
|
700
758
|
* Admits waiting members (invited guests to meeting)
|
|
701
759
|
* @param {Array} memberIds
|
|
760
|
+
* @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}
|
|
702
761
|
* @returns {Promise}
|
|
703
762
|
* @public
|
|
704
763
|
* @memberof Members
|
|
705
764
|
*/
|
|
706
|
-
admitMembers(
|
|
765
|
+
public admitMembers(
|
|
766
|
+
memberIds: Array<any>,
|
|
767
|
+
sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}
|
|
768
|
+
) {
|
|
707
769
|
if (isEmpty(memberIds)) {
|
|
708
770
|
return Promise.reject(new ParameterError('No member ids provided to admit.'));
|
|
709
771
|
}
|
|
710
|
-
const options =
|
|
772
|
+
const options = {
|
|
773
|
+
sessionLocusUrls,
|
|
774
|
+
...MembersUtil.generateAdmitMemberOptions(memberIds, this.locusUrl),
|
|
775
|
+
};
|
|
711
776
|
|
|
712
777
|
return this.membersRequest.admitMember(options);
|
|
713
778
|
}
|
|
@@ -719,12 +784,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
719
784
|
* @public
|
|
720
785
|
* @memberof Members
|
|
721
786
|
*/
|
|
722
|
-
removeMember(memberId) {
|
|
787
|
+
public removeMember(memberId: string) {
|
|
723
788
|
if (!this.locusUrl) {
|
|
724
|
-
return Promise.reject(
|
|
789
|
+
return Promise.reject(
|
|
790
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
791
|
+
);
|
|
725
792
|
}
|
|
726
793
|
if (!memberId) {
|
|
727
|
-
return Promise.reject(
|
|
794
|
+
return Promise.reject(
|
|
795
|
+
new ParameterError('The member id must be defined to remove the member.')
|
|
796
|
+
);
|
|
728
797
|
}
|
|
729
798
|
const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
730
799
|
|
|
@@ -735,22 +804,55 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
735
804
|
* Audio mutes another member in a meeting
|
|
736
805
|
* @param {String} memberId
|
|
737
806
|
* @param {boolean} [mute] default true
|
|
807
|
+
* @param {boolean} [isAudio] default true
|
|
738
808
|
* @returns {Promise}
|
|
739
809
|
* @public
|
|
740
810
|
* @memberof Members
|
|
741
811
|
*/
|
|
742
|
-
muteMember(memberId, mute = true) {
|
|
812
|
+
public muteMember(memberId: string, mute = true, isAudio = true) {
|
|
743
813
|
if (!this.locusUrl) {
|
|
744
|
-
return Promise.reject(
|
|
814
|
+
return Promise.reject(
|
|
815
|
+
new ParameterError(
|
|
816
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
817
|
+
)
|
|
818
|
+
);
|
|
745
819
|
}
|
|
746
820
|
if (!memberId) {
|
|
747
|
-
return Promise.reject(
|
|
821
|
+
return Promise.reject(
|
|
822
|
+
new ParameterError('The member id must be defined to mute the member.')
|
|
823
|
+
);
|
|
748
824
|
}
|
|
749
|
-
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
|
|
825
|
+
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
|
|
750
826
|
|
|
751
827
|
return this.membersRequest.muteMember(options);
|
|
752
828
|
}
|
|
753
829
|
|
|
830
|
+
/**
|
|
831
|
+
* Assign role(s) to a member in the meeting
|
|
832
|
+
* @param {String} memberId
|
|
833
|
+
* @param {[ServerRoleShape]} roles - to assign an array of roles
|
|
834
|
+
* @returns {Promise}
|
|
835
|
+
* @public
|
|
836
|
+
* @memberof Members
|
|
837
|
+
*/
|
|
838
|
+
public assignRoles(memberId: string, roles: Array<ServerRoleShape>) {
|
|
839
|
+
if (!this.locusUrl) {
|
|
840
|
+
return Promise.reject(
|
|
841
|
+
new ParameterError(
|
|
842
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
843
|
+
)
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
if (!memberId) {
|
|
847
|
+
return Promise.reject(
|
|
848
|
+
new ParameterError('The member id must be defined to assign the roles to a member.')
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
const options = MembersUtil.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
|
|
852
|
+
|
|
853
|
+
return this.membersRequest.assignRolesMember(options);
|
|
854
|
+
}
|
|
855
|
+
|
|
754
856
|
/**
|
|
755
857
|
* Raise or lower the hand of a member in a meeting
|
|
756
858
|
* @param {String} memberId
|
|
@@ -759,12 +861,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
759
861
|
* @public
|
|
760
862
|
* @memberof Members
|
|
761
863
|
*/
|
|
762
|
-
raiseOrLowerHand(memberId, raise = true) {
|
|
864
|
+
public raiseOrLowerHand(memberId: string, raise = true) {
|
|
763
865
|
if (!this.locusUrl) {
|
|
764
|
-
return Promise.reject(
|
|
866
|
+
return Promise.reject(
|
|
867
|
+
new ParameterError(
|
|
868
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
869
|
+
)
|
|
870
|
+
);
|
|
765
871
|
}
|
|
766
872
|
if (!memberId) {
|
|
767
|
-
return Promise.reject(
|
|
873
|
+
return Promise.reject(
|
|
874
|
+
new ParameterError('The member id must be defined to raise/lower the hand of the member.')
|
|
875
|
+
);
|
|
768
876
|
}
|
|
769
877
|
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
770
878
|
|
|
@@ -778,19 +886,29 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
778
886
|
* @public
|
|
779
887
|
* @memberof Members
|
|
780
888
|
*/
|
|
781
|
-
lowerAllHands(requestingMemberId) {
|
|
889
|
+
public lowerAllHands(requestingMemberId: string) {
|
|
782
890
|
if (!this.locusUrl) {
|
|
783
|
-
return Promise.reject(
|
|
891
|
+
return Promise.reject(
|
|
892
|
+
new ParameterError(
|
|
893
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
894
|
+
)
|
|
895
|
+
);
|
|
784
896
|
}
|
|
785
897
|
if (!requestingMemberId) {
|
|
786
|
-
return Promise.reject(
|
|
898
|
+
return Promise.reject(
|
|
899
|
+
new ParameterError(
|
|
900
|
+
'The requestingMemberId must be defined to lower all hands in a meeting.'
|
|
901
|
+
)
|
|
902
|
+
);
|
|
787
903
|
}
|
|
788
|
-
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
904
|
+
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
905
|
+
requestingMemberId,
|
|
906
|
+
this.locusUrl
|
|
907
|
+
);
|
|
789
908
|
|
|
790
909
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
791
910
|
}
|
|
792
911
|
|
|
793
|
-
|
|
794
912
|
/**
|
|
795
913
|
* Transfers the host to another member
|
|
796
914
|
* @param {String} memberId
|
|
@@ -799,19 +917,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
799
917
|
* @public
|
|
800
918
|
* @memberof Members
|
|
801
919
|
*/
|
|
802
|
-
transferHostToMember(memberId, moderator = true) {
|
|
920
|
+
public transferHostToMember(memberId: string, moderator = true) {
|
|
803
921
|
if (!this.locusUrl) {
|
|
804
|
-
return Promise.reject(
|
|
922
|
+
return Promise.reject(
|
|
923
|
+
new ParameterError(
|
|
924
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
925
|
+
)
|
|
926
|
+
);
|
|
805
927
|
}
|
|
806
928
|
if (!memberId) {
|
|
807
|
-
return Promise.reject(
|
|
929
|
+
return Promise.reject(
|
|
930
|
+
new ParameterError('The member id must be defined to transfer host to the member.')
|
|
931
|
+
);
|
|
808
932
|
}
|
|
809
|
-
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
933
|
+
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
934
|
+
memberId,
|
|
935
|
+
moderator,
|
|
936
|
+
this.locusUrl
|
|
937
|
+
);
|
|
810
938
|
|
|
811
939
|
return this.membersRequest.transferHostToMember(options);
|
|
812
940
|
}
|
|
813
941
|
|
|
814
|
-
|
|
815
942
|
/**
|
|
816
943
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
817
944
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -820,7 +947,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
820
947
|
* @public
|
|
821
948
|
* @memberof Members
|
|
822
949
|
*/
|
|
823
|
-
sendDialPadKey(tones = '', memberId = '') {
|
|
950
|
+
public sendDialPadKey(tones = '', memberId = '') {
|
|
951
|
+
// @ts-ignore
|
|
824
952
|
if (!tones && tones !== 0) {
|
|
825
953
|
return Promise.reject(new ParameterError('DMTF tones must be passed in'));
|
|
826
954
|
}
|
|
@@ -843,7 +971,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
843
971
|
return this.membersRequest.sendDialPadKey(options);
|
|
844
972
|
}
|
|
845
973
|
|
|
846
|
-
return Promise.reject(
|
|
974
|
+
return Promise.reject(
|
|
975
|
+
new Error(
|
|
976
|
+
'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
|
|
977
|
+
)
|
|
978
|
+
);
|
|
847
979
|
}
|
|
848
980
|
|
|
849
981
|
/** Finds a member that has any device with a csi matching provided value
|
|
@@ -852,10 +984,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
852
984
|
* @returns {Member}
|
|
853
985
|
*/
|
|
854
986
|
findMemberByCsi(csi) {
|
|
855
|
-
return Object.values(this.membersCollection.getAll())
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
987
|
+
return Object.values(this.membersCollection.getAll()).find((member) =>
|
|
988
|
+
// @ts-ignore
|
|
989
|
+
member.participant?.devices?.find((device) =>
|
|
990
|
+
device.csis?.find((memberCsi) => memberCsi === csi)
|
|
991
|
+
)
|
|
992
|
+
);
|
|
859
993
|
}
|
|
860
994
|
|
|
861
995
|
/**
|
|
@@ -872,7 +1006,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
872
1006
|
this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
|
|
873
1007
|
if (device.mediaSessions) {
|
|
874
1008
|
const deviceCsis = device.mediaSessions
|
|
875
|
-
?.filter(
|
|
1009
|
+
?.filter(
|
|
1010
|
+
(mediaSession) =>
|
|
1011
|
+
mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
|
|
1012
|
+
)
|
|
876
1013
|
.map((mediaSession) => mediaSession.csi);
|
|
877
1014
|
|
|
878
1015
|
csis.push(...deviceCsis);
|