@webex/plugin-meetings 2.37.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- 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 +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- 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 +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- 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 +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +7 -46
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- 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 +35 -61
- 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 +1 -5
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -42
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +10 -28
- 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 +101 -193
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -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 +87 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +16 -81
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +74 -137
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +64 -110
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +3 -17
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +120 -192
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +0 -13
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +812 -1487
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +31 -78
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +157 -227
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +25 -169
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +179 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- 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 +3 -21
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +451 -570
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +7 -30
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +94 -148
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -89
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +17 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +2 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +68 -184
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +21 -56
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +48 -136
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +28 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +60 -190
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js +10 -24
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- 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 +100 -166
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js +0 -2
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +0 -5
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +294 -468
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js +1 -12
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +15 -85
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +42 -94
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +81 -148
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +2 -39
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +8 -52
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js +0 -26
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +68 -168
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +54 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +17 -17
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +11 -11
- package/src/constants.ts +138 -119
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +118 -109
- package/src/media/properties.ts +26 -20
- package/src/media/util.ts +2 -2
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1435 -1210
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +160 -113
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +131 -90
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +513 -441
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +26 -23
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +172 -121
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/networkQualityMonitor/index.ts +20 -23
- package/src/peer-connection-manager/index.ts +321 -241
- package/src/peer-connection-manager/util.ts +4 -2
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +2 -3
- package/src/reconnection-manager/index.ts +159 -98
- package/src/roap/collection.ts +2 -4
- package/src/roap/handler.ts +63 -32
- package/src/roap/index.ts +78 -58
- package/src/roap/request.ts +69 -54
- package/src/roap/state.ts +17 -11
- package/src/roap/turnDiscovery.ts +60 -31
- package/src/roap/util.ts +39 -31
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +397 -169
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +666 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +24 -31
- 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 +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +33 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1141 -649
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +56 -45
- package/test/unit/spec/meeting/utils.js +66 -49
- 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 +1 -1
- package/test/unit/spec/meetings/index.js +438 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +5 -6
- package/test/unit/spec/members/index.js +84 -35
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/peerconnection-manager/index.js +88 -58
- package/test/unit/spec/peerconnection-manager/utils.js +5 -4
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +9 -11
- package/test/unit/spec/reconnection-manager/index.js +14 -17
- package/test/unit/spec/roap/index.ts +18 -8
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/roap/util.js +3 -3
- package/test/unit/spec/stats-analyzer/index.js +29 -24
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +53 -50
package/src/meeting/state.ts
CHANGED
|
@@ -15,7 +15,9 @@ const MeetingStateMachine = {
|
|
|
15
15
|
*/
|
|
16
16
|
create(meetingRef: any) {
|
|
17
17
|
if (!meetingRef) {
|
|
18
|
-
throw new ParameterError(
|
|
18
|
+
throw new ParameterError(
|
|
19
|
+
'You must initialize the meeting state machine with a meeting reference.'
|
|
20
|
+
);
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
return new StateMachine({
|
|
@@ -24,27 +26,36 @@ const MeetingStateMachine = {
|
|
|
24
26
|
// when ringing a meeting, it must be first IDLE, because all other states are invalid, it transitions to the RINGING state
|
|
25
27
|
{
|
|
26
28
|
name: MEETING_STATE_MACHINE.TRANSITIONS.RING,
|
|
27
|
-
from: [
|
|
28
|
-
|
|
29
|
+
from: [
|
|
30
|
+
MEETING_STATE_MACHINE.STATES.IDLE,
|
|
31
|
+
MEETING_STATE_MACHINE.STATES.ERROR,
|
|
32
|
+
MEETING_STATE_MACHINE.STATES.JOINED,
|
|
33
|
+
],
|
|
34
|
+
to: MEETING_STATE_MACHINE.STATES.RINGING,
|
|
29
35
|
},
|
|
30
36
|
// when joining a meeting, it must be from the RINGING or IDLE state, transitions to JOINED state, 1:1 will go to RINGING,
|
|
31
37
|
// others will go straight to JOINED with this transition
|
|
32
38
|
{
|
|
33
39
|
name: MEETING_STATE_MACHINE.TRANSITIONS.JOIN,
|
|
34
|
-
from: [
|
|
35
|
-
|
|
40
|
+
from: [
|
|
41
|
+
MEETING_STATE_MACHINE.STATES.JOINED,
|
|
42
|
+
MEETING_STATE_MACHINE.STATES.IDLE,
|
|
43
|
+
MEETING_STATE_MACHINE.STATES.RINGING,
|
|
44
|
+
MEETING_STATE_MACHINE.STATES.ERROR,
|
|
45
|
+
],
|
|
46
|
+
to: MEETING_STATE_MACHINE.STATES.JOINED,
|
|
36
47
|
},
|
|
37
48
|
// signify that ringing has stopped and somebody else answered, move state to DECLINED, ANSWERED
|
|
38
49
|
{
|
|
39
50
|
name: MEETING_STATE_MACHINE.TRANSITIONS.REMOTE,
|
|
40
51
|
from: [MEETING_STATE_MACHINE.STATES.JOINED, MEETING_STATE_MACHINE.STATES.ERROR],
|
|
41
52
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
to(remote: {
|
|
53
|
+
* @param {Object} remote
|
|
54
|
+
* @param {Boolean} remote.remoteAnswered
|
|
55
|
+
* @param {Boolean} remote.remoteDeclined
|
|
56
|
+
* @returns {String}
|
|
57
|
+
*/
|
|
58
|
+
to(remote: {remoteAnswered: boolean; remoteDeclined: boolean}) {
|
|
48
59
|
// other user answered the call
|
|
49
60
|
if (remote.remoteAnswered) {
|
|
50
61
|
return MEETING_STATE_MACHINE.STATES.ANSWERED;
|
|
@@ -56,7 +67,7 @@ const MeetingStateMachine = {
|
|
|
56
67
|
|
|
57
68
|
// default
|
|
58
69
|
return MEETING_STATE_MACHINE.STATES.ERROR;
|
|
59
|
-
}
|
|
70
|
+
},
|
|
60
71
|
},
|
|
61
72
|
// when leaving a meeting it must be from either the RINGING, JOINED, or ERROR states, and transitions it to the ENDED state
|
|
62
73
|
{
|
|
@@ -67,9 +78,9 @@ const MeetingStateMachine = {
|
|
|
67
78
|
MEETING_STATE_MACHINE.STATES.JOINED,
|
|
68
79
|
MEETING_STATE_MACHINE.STATES.ANSWERED,
|
|
69
80
|
MEETING_STATE_MACHINE.STATES.DECLINED,
|
|
70
|
-
MEETING_STATE_MACHINE.STATES.ERROR
|
|
81
|
+
MEETING_STATE_MACHINE.STATES.ERROR,
|
|
71
82
|
],
|
|
72
|
-
to: MEETING_STATE_MACHINE.STATES.ENDED
|
|
83
|
+
to: MEETING_STATE_MACHINE.STATES.ENDED,
|
|
73
84
|
},
|
|
74
85
|
{
|
|
75
86
|
name: MEETING_STATE_MACHINE.TRANSITIONS.END,
|
|
@@ -79,33 +90,33 @@ const MeetingStateMachine = {
|
|
|
79
90
|
MEETING_STATE_MACHINE.STATES.JOINED,
|
|
80
91
|
MEETING_STATE_MACHINE.STATES.ANSWERED,
|
|
81
92
|
MEETING_STATE_MACHINE.STATES.DECLINED,
|
|
82
|
-
MEETING_STATE_MACHINE.STATES.ERROR
|
|
93
|
+
MEETING_STATE_MACHINE.STATES.ERROR,
|
|
83
94
|
],
|
|
84
|
-
to: MEETING_STATE_MACHINE.STATES.ENDED
|
|
95
|
+
to: MEETING_STATE_MACHINE.STATES.ENDED,
|
|
85
96
|
},
|
|
86
97
|
{
|
|
87
98
|
name: MEETING_STATE_MACHINE.TRANSITIONS.DECLINE,
|
|
88
99
|
from: [MEETING_STATE_MACHINE.STATES.RINGING, MEETING_STATE_MACHINE.STATES.ERROR],
|
|
89
|
-
to: MEETING_STATE_MACHINE.STATES.ENDED
|
|
100
|
+
to: MEETING_STATE_MACHINE.STATES.ENDED,
|
|
90
101
|
},
|
|
91
102
|
// transition from ANY state to ERROR state
|
|
92
103
|
{
|
|
93
104
|
name: MEETING_STATE_MACHINE.TRANSITIONS.FAIL,
|
|
94
105
|
from: '*',
|
|
95
|
-
to: MEETING_STATE_MACHINE.STATES.ERROR
|
|
106
|
+
to: MEETING_STATE_MACHINE.STATES.ERROR,
|
|
96
107
|
},
|
|
97
108
|
// fail safe, transition from ANY state to IDLE state
|
|
98
109
|
{
|
|
99
110
|
name: MEETING_STATE_MACHINE.TRANSITIONS.RESET,
|
|
100
111
|
from: '*',
|
|
101
|
-
to: MEETING_STATE_MACHINE.STATES.IDLE
|
|
102
|
-
}
|
|
112
|
+
to: MEETING_STATE_MACHINE.STATES.IDLE,
|
|
113
|
+
},
|
|
103
114
|
],
|
|
104
115
|
data: {
|
|
105
116
|
/**
|
|
106
117
|
* The meeting instance to execute all state changes on
|
|
107
118
|
*/
|
|
108
|
-
meeting: meetingRef
|
|
119
|
+
meeting: meetingRef,
|
|
109
120
|
},
|
|
110
121
|
methods: {
|
|
111
122
|
/**
|
|
@@ -120,12 +131,12 @@ const MeetingStateMachine = {
|
|
|
120
131
|
this.meeting,
|
|
121
132
|
{
|
|
122
133
|
file: 'meeting/state',
|
|
123
|
-
function: 'onRemote'
|
|
134
|
+
function: 'onRemote',
|
|
124
135
|
},
|
|
125
136
|
EVENT_TRIGGERS.MEETING_RINGING_STOP,
|
|
126
137
|
{
|
|
127
138
|
id: this.meeting.id,
|
|
128
|
-
type: stop
|
|
139
|
+
type: stop,
|
|
129
140
|
}
|
|
130
141
|
);
|
|
131
142
|
}
|
|
@@ -142,12 +153,12 @@ const MeetingStateMachine = {
|
|
|
142
153
|
this.meeting,
|
|
143
154
|
{
|
|
144
155
|
file: 'meeting/state',
|
|
145
|
-
function: 'onRing'
|
|
156
|
+
function: 'onRing',
|
|
146
157
|
},
|
|
147
158
|
EVENT_TRIGGERS.MEETING_RINGING,
|
|
148
159
|
{
|
|
149
160
|
type,
|
|
150
|
-
id: this.meeting.id
|
|
161
|
+
id: this.meeting.id,
|
|
151
162
|
}
|
|
152
163
|
);
|
|
153
164
|
}
|
|
@@ -159,7 +170,9 @@ const MeetingStateMachine = {
|
|
|
159
170
|
* @returns {Boolean}
|
|
160
171
|
*/
|
|
161
172
|
onEnterError(transition: any, error: Error) {
|
|
162
|
-
LoggerProxy.logger.error(
|
|
173
|
+
LoggerProxy.logger.error(
|
|
174
|
+
`Meeting:state#onEnterError --> state->onEnterError#meeting.id: ${this.meeting.id} | Transition '${transition?.transition}' : ${transition?.from} -> ${transition?.to}, with error ${error}. Last states: ${this.history}`
|
|
175
|
+
);
|
|
163
176
|
},
|
|
164
177
|
/**
|
|
165
178
|
* After ANY transition occurs, we want to know what state the meeting moved to for debugging
|
|
@@ -167,13 +180,15 @@ const MeetingStateMachine = {
|
|
|
167
180
|
* @returns {Boolean}
|
|
168
181
|
*/
|
|
169
182
|
onAfterTransition(transition: any) {
|
|
170
|
-
LoggerProxy.logger.log(
|
|
171
|
-
|
|
183
|
+
LoggerProxy.logger.log(
|
|
184
|
+
`Meeting:state#onAfterTransition --> state->onAfterTransition#meeting.id: ${this.meeting.id} | Transition '${transition.transition}' : ${transition.from} -> ${transition.to} executed. Last states: ${this.history}`
|
|
185
|
+
);
|
|
186
|
+
},
|
|
172
187
|
},
|
|
173
188
|
// track the last 25 states entered
|
|
174
|
-
plugins: [new StateMachineHistory({max: 25})]
|
|
189
|
+
plugins: [new StateMachineHistory({max: 25})],
|
|
175
190
|
});
|
|
176
|
-
}
|
|
191
|
+
},
|
|
177
192
|
};
|
|
178
193
|
|
|
179
194
|
export default MeetingStateMachine;
|
package/src/meeting/util.ts
CHANGED
|
@@ -5,13 +5,15 @@ import Metrics from '../metrics';
|
|
|
5
5
|
import {eventType, trigger} from '../metrics/config';
|
|
6
6
|
import Media from '../media';
|
|
7
7
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
INTENT_TO_JOIN,
|
|
9
10
|
_LEFT_,
|
|
10
11
|
_IDLE_,
|
|
11
12
|
_JOINED_,
|
|
12
13
|
PASSWORD_STATUS,
|
|
13
14
|
DISPLAY_HINTS,
|
|
14
|
-
FULL_STATE
|
|
15
|
+
FULL_STATE,
|
|
16
|
+
} from '../constants';
|
|
15
17
|
import IntentToJoinError from '../common/errors/intent-to-join';
|
|
16
18
|
import JoinMeetingError from '../common/errors/join-meeting';
|
|
17
19
|
import ParameterError from '../common/errors/parameter';
|
|
@@ -48,29 +50,34 @@ MeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {
|
|
|
48
50
|
const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);
|
|
49
51
|
|
|
50
52
|
if (isEmpty(localMedias)) {
|
|
51
|
-
return Promise.reject(
|
|
53
|
+
return Promise.reject(
|
|
54
|
+
new ParameterError('You need a media id on the meeting to change remote audio.')
|
|
55
|
+
);
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});
|
|
55
59
|
|
|
56
|
-
return meeting.meetingRequest
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
return meeting.meetingRequest
|
|
61
|
+
.remoteAudioVideoToggle({
|
|
62
|
+
locusUrl: meeting.locusUrl,
|
|
63
|
+
selfId: meeting.selfId,
|
|
64
|
+
localMedias,
|
|
65
|
+
deviceUrl: meeting.deviceUrl,
|
|
66
|
+
correlationId: meeting.correlationId,
|
|
67
|
+
})
|
|
68
|
+
.then((response) => {
|
|
69
|
+
Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});
|
|
64
70
|
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
return response.body.locus;
|
|
72
|
+
});
|
|
67
73
|
};
|
|
68
74
|
|
|
69
75
|
MeetingUtil.hasOwner = (info) => info && info.owner;
|
|
70
76
|
|
|
71
77
|
MeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;
|
|
72
78
|
|
|
73
|
-
MeetingUtil.isPinOrGuest = (err) =>
|
|
79
|
+
MeetingUtil.isPinOrGuest = (err) =>
|
|
80
|
+
err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);
|
|
74
81
|
|
|
75
82
|
MeetingUtil.joinMeeting = (meeting, options) => {
|
|
76
83
|
if (!meeting) {
|
|
@@ -96,7 +103,7 @@ MeetingUtil.joinMeeting = (meeting, options) => {
|
|
|
96
103
|
pin: options.pin,
|
|
97
104
|
moveToResource: options.moveToResource,
|
|
98
105
|
preferTranscoding: options.preferTranscoding,
|
|
99
|
-
asResourceOccupant: options.asResourceOccupant
|
|
106
|
+
asResourceOccupant: options.asResourceOccupant,
|
|
100
107
|
})
|
|
101
108
|
.then((res) => {
|
|
102
109
|
Metrics.postEvent({
|
|
@@ -106,8 +113,8 @@ MeetingUtil.joinMeeting = (meeting, options) => {
|
|
|
106
113
|
trigger: trigger.LOCI_UPDATE,
|
|
107
114
|
locus: res.body.locus,
|
|
108
115
|
mediaConnections: res.body.mediaConnections,
|
|
109
|
-
trackingId: res.headers.trackingid
|
|
110
|
-
}
|
|
116
|
+
trackingId: res.headers.trackingid,
|
|
117
|
+
},
|
|
111
118
|
});
|
|
112
119
|
|
|
113
120
|
return MeetingUtil.parseLocusJoin(res);
|
|
@@ -116,7 +123,9 @@ MeetingUtil.joinMeeting = (meeting, options) => {
|
|
|
116
123
|
|
|
117
124
|
MeetingUtil.cleanUp = (meeting) => {
|
|
118
125
|
// make sure we send last metrics before we close the peerconnection
|
|
119
|
-
const stopStatsAnalyzer =
|
|
126
|
+
const stopStatsAnalyzer = meeting.statsAnalyzer
|
|
127
|
+
? meeting.statsAnalyzer.stopAnalyzer()
|
|
128
|
+
: Promise.resolve();
|
|
120
129
|
|
|
121
130
|
return stopStatsAnalyzer
|
|
122
131
|
.then(() => meeting.closeLocalStream())
|
|
@@ -143,7 +152,7 @@ MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
|
|
|
143
152
|
locusUrl: meeting.locusUrl,
|
|
144
153
|
selfId: meeting.selfId,
|
|
145
154
|
correlationId: meeting.correlationId,
|
|
146
|
-
phoneUrl
|
|
155
|
+
phoneUrl,
|
|
147
156
|
};
|
|
148
157
|
|
|
149
158
|
return meeting.meetingRequest
|
|
@@ -155,9 +164,7 @@ MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
|
|
|
155
164
|
})
|
|
156
165
|
.catch((err) => {
|
|
157
166
|
LoggerProxy.logger.error(
|
|
158
|
-
`Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${
|
|
159
|
-
meeting.id
|
|
160
|
-
}, error: ${err}`
|
|
167
|
+
`Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`
|
|
161
168
|
);
|
|
162
169
|
|
|
163
170
|
return Promise.reject(err);
|
|
@@ -183,7 +190,7 @@ MeetingUtil.leaveMeeting = (meeting, options: any = {}) => {
|
|
|
183
190
|
selfId: meeting.selfId,
|
|
184
191
|
correlationId: meeting.correlationId,
|
|
185
192
|
resourceId: meeting.resourceId,
|
|
186
|
-
deviceUrl: meeting.deviceUrl
|
|
193
|
+
deviceUrl: meeting.deviceUrl,
|
|
187
194
|
};
|
|
188
195
|
|
|
189
196
|
const leaveOptions = {...defaultOptions, ...options};
|
|
@@ -191,7 +198,8 @@ MeetingUtil.leaveMeeting = (meeting, options: any = {}) => {
|
|
|
191
198
|
return meeting.meetingRequest
|
|
192
199
|
.leaveMeeting(leaveOptions)
|
|
193
200
|
.then((response) => {
|
|
194
|
-
if (response && response.body && response.body.locus) {
|
|
201
|
+
if (response && response.body && response.body.locus) {
|
|
202
|
+
// && !options.moveMeeting) {
|
|
195
203
|
meeting.locusInfo.onFullLocus(response.body.locus);
|
|
196
204
|
}
|
|
197
205
|
|
|
@@ -209,9 +217,7 @@ MeetingUtil.leaveMeeting = (meeting, options: any = {}) => {
|
|
|
209
217
|
// 1) on leave clean up the meeting or simply do a sync on the meeting
|
|
210
218
|
// 2) If the error says meeting is inactive then destroy the meeting object
|
|
211
219
|
LoggerProxy.logger.error(
|
|
212
|
-
`Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${
|
|
213
|
-
meeting.id
|
|
214
|
-
}, error: ${err}`
|
|
220
|
+
`Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`
|
|
215
221
|
);
|
|
216
222
|
|
|
217
223
|
return Promise.reject(err);
|
|
@@ -221,21 +227,18 @@ MeetingUtil.declineMeeting = (meeting, reason) =>
|
|
|
221
227
|
meeting.meetingRequest.declineMeeting({
|
|
222
228
|
locusUrl: meeting.locusUrl,
|
|
223
229
|
deviceUrl: meeting.deviceUrl,
|
|
224
|
-
reason
|
|
230
|
+
reason,
|
|
225
231
|
});
|
|
226
232
|
|
|
227
|
-
MeetingUtil.isUserInLeftState = (locusInfo) =>
|
|
228
|
-
locusInfo.parsedLocus?.self?.state === _LEFT_;
|
|
233
|
+
MeetingUtil.isUserInLeftState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_;
|
|
229
234
|
|
|
230
|
-
MeetingUtil.isUserInIdleState = (locusInfo) =>
|
|
231
|
-
locusInfo.parsedLocus?.self?.state === _IDLE_;
|
|
235
|
+
MeetingUtil.isUserInIdleState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_;
|
|
232
236
|
|
|
233
|
-
MeetingUtil.isUserInJoinedState = (locusInfo) =>
|
|
234
|
-
locusInfo.parsedLocus?.self?.state === _JOINED_;
|
|
237
|
+
MeetingUtil.isUserInJoinedState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_;
|
|
235
238
|
|
|
236
239
|
MeetingUtil.isMediaEstablished = (currentMediaStatus) =>
|
|
237
|
-
currentMediaStatus &&
|
|
238
|
-
|
|
240
|
+
currentMediaStatus &&
|
|
241
|
+
(currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);
|
|
239
242
|
|
|
240
243
|
MeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {
|
|
241
244
|
meeting.resourceId = meeting.resourceId || options.resourceId;
|
|
@@ -250,7 +253,7 @@ MeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {
|
|
|
250
253
|
if (options.pin) {
|
|
251
254
|
Metrics.postEvent({
|
|
252
255
|
event: eventType.PIN_COLLECTED,
|
|
253
|
-
meeting
|
|
256
|
+
meeting,
|
|
254
257
|
});
|
|
255
258
|
}
|
|
256
259
|
|
|
@@ -266,7 +269,7 @@ MeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {
|
|
|
266
269
|
if (MeetingUtil.isPinOrGuest(err)) {
|
|
267
270
|
Metrics.postEvent({
|
|
268
271
|
event: eventType.PIN_PROMPT,
|
|
269
|
-
meeting
|
|
272
|
+
meeting,
|
|
270
273
|
});
|
|
271
274
|
|
|
272
275
|
// request host pin or non host for unclaimed PMR, start of Scenario C
|
|
@@ -287,33 +290,43 @@ MeetingUtil.updateTransceiver = (options, meetingOptions) => {
|
|
|
287
290
|
track,
|
|
288
291
|
transceiver,
|
|
289
292
|
peerConnection,
|
|
290
|
-
previousMediaDirection
|
|
293
|
+
previousMediaDirection,
|
|
291
294
|
} = options;
|
|
292
295
|
|
|
293
|
-
if (
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
296
|
+
if (
|
|
297
|
+
(sendTrack !== undefined && sendTrack !== previousMediaDirection.sendTrack) ||
|
|
298
|
+
(receiveTrack !== undefined && receiveTrack !== previousMediaDirection.receiveTrack)
|
|
299
|
+
) {
|
|
300
|
+
return Media.updateTransceiver(
|
|
301
|
+
{
|
|
302
|
+
meetingId: meetingOptions.meeting.id,
|
|
303
|
+
remoteQualityLevel: meetingOptions.mediaProperties.remoteQualityLevel,
|
|
304
|
+
enableRtx: meetingOptions.meeting.config.enableRtx,
|
|
305
|
+
enableExtmap: meetingOptions.meeting.config.enableExtmap,
|
|
306
|
+
},
|
|
307
|
+
peerConnection,
|
|
308
|
+
transceiver,
|
|
309
|
+
{
|
|
310
|
+
track,
|
|
311
|
+
type,
|
|
312
|
+
receiveTrack,
|
|
313
|
+
sendTrack,
|
|
314
|
+
}
|
|
315
|
+
)
|
|
316
|
+
.then(() =>
|
|
317
|
+
meetingOptions.meeting.roap.sendRoapMediaRequest({
|
|
309
318
|
sdp: meetingOptions.mediaProperties.peerConnection.sdp,
|
|
310
319
|
roapSeq: meetingOptions.meeting.roapSeq,
|
|
311
|
-
meeting: meetingOptions.meeting // or can pass meeting ID
|
|
312
|
-
})
|
|
320
|
+
meeting: meetingOptions.meeting, // or can pass meeting ID
|
|
321
|
+
})
|
|
322
|
+
)
|
|
313
323
|
.catch((e) => {
|
|
314
|
-
LoggerProxy.logger.error(
|
|
324
|
+
LoggerProxy.logger.error(
|
|
325
|
+
`Meeting:util#updateTransceiver --> Error updating the ${type} streams with error: ${e}`
|
|
326
|
+
);
|
|
315
327
|
});
|
|
316
|
-
}
|
|
328
|
+
}
|
|
329
|
+
if (track) {
|
|
317
330
|
transceiver.sender.replaceTrack(track);
|
|
318
331
|
|
|
319
332
|
return Promise.resolve();
|
|
@@ -323,9 +336,7 @@ MeetingUtil.updateTransceiver = (options, meetingOptions) => {
|
|
|
323
336
|
};
|
|
324
337
|
|
|
325
338
|
MeetingUtil.validateOptions = (options) => {
|
|
326
|
-
const {
|
|
327
|
-
sendVideo, sendAudio, sendShare, localStream, localShare
|
|
328
|
-
} = options;
|
|
339
|
+
const {sendVideo, sendAudio, sendShare, localStream, localShare} = options;
|
|
329
340
|
|
|
330
341
|
if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {
|
|
331
342
|
return Promise.reject(new ParameterError('please pass valid video streams'));
|
|
@@ -383,23 +394,34 @@ MeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>
|
|
|
383
394
|
locusInfo.parsedLocus.info &&
|
|
384
395
|
locusInfo.parsedLocus.info.policy;
|
|
385
396
|
|
|
386
|
-
MeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) =>
|
|
397
|
+
MeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) =>
|
|
398
|
+
locusInfo?.parsedLocus?.info?.userDisplayHints || [];
|
|
387
399
|
|
|
388
|
-
MeetingUtil.canInviteNewParticipants = (displayHints) =>
|
|
400
|
+
MeetingUtil.canInviteNewParticipants = (displayHints) =>
|
|
401
|
+
displayHints.includes(DISPLAY_HINTS.ADD_GUEST);
|
|
389
402
|
|
|
390
|
-
MeetingUtil.canAdmitParticipant = (displayHints) =>
|
|
403
|
+
MeetingUtil.canAdmitParticipant = (displayHints) =>
|
|
404
|
+
displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);
|
|
391
405
|
|
|
392
|
-
MeetingUtil.canUserLock = (displayHints) =>
|
|
406
|
+
MeetingUtil.canUserLock = (displayHints) =>
|
|
407
|
+
displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&
|
|
408
|
+
displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);
|
|
393
409
|
|
|
394
|
-
MeetingUtil.canUserUnlock = (displayHints) =>
|
|
410
|
+
MeetingUtil.canUserUnlock = (displayHints) =>
|
|
411
|
+
displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&
|
|
412
|
+
displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);
|
|
395
413
|
|
|
396
|
-
MeetingUtil.canUserRecord = (displayHints) =>
|
|
414
|
+
MeetingUtil.canUserRecord = (displayHints) =>
|
|
415
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
|
|
397
416
|
|
|
398
|
-
MeetingUtil.canUserPause = (displayHints) =>
|
|
417
|
+
MeetingUtil.canUserPause = (displayHints) =>
|
|
418
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
|
|
399
419
|
|
|
400
|
-
MeetingUtil.canUserResume = (displayHints) =>
|
|
420
|
+
MeetingUtil.canUserResume = (displayHints) =>
|
|
421
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
|
|
401
422
|
|
|
402
|
-
MeetingUtil.canUserStop = (displayHints) =>
|
|
423
|
+
MeetingUtil.canUserStop = (displayHints) =>
|
|
424
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
|
|
403
425
|
|
|
404
426
|
MeetingUtil.startRecording = (request, locusUrl, locusInfo) => {
|
|
405
427
|
const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
|
|
@@ -408,7 +430,9 @@ MeetingUtil.startRecording = (request, locusUrl, locusInfo) => {
|
|
|
408
430
|
return request.recordMeeting({locusUrl, recording: true, paused: false});
|
|
409
431
|
}
|
|
410
432
|
|
|
411
|
-
return Promise.reject(
|
|
433
|
+
return Promise.reject(
|
|
434
|
+
new PermissionError('Start recording not allowed, due to moderator property.')
|
|
435
|
+
);
|
|
412
436
|
};
|
|
413
437
|
|
|
414
438
|
MeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {
|
|
@@ -418,7 +442,9 @@ MeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {
|
|
|
418
442
|
return request.recordMeeting({locusUrl, recording: true, paused: true});
|
|
419
443
|
}
|
|
420
444
|
|
|
421
|
-
return Promise.reject(
|
|
445
|
+
return Promise.reject(
|
|
446
|
+
new PermissionError('Pause recording not allowed, due to moderator property.')
|
|
447
|
+
);
|
|
422
448
|
};
|
|
423
449
|
|
|
424
450
|
MeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {
|
|
@@ -428,7 +454,9 @@ MeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {
|
|
|
428
454
|
return request.recordMeeting({locusUrl, recording: true, paused: false});
|
|
429
455
|
}
|
|
430
456
|
|
|
431
|
-
return Promise.reject(
|
|
457
|
+
return Promise.reject(
|
|
458
|
+
new PermissionError('Resume recording not allowed, due to moderator property.')
|
|
459
|
+
);
|
|
432
460
|
};
|
|
433
461
|
|
|
434
462
|
MeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {
|
|
@@ -438,16 +466,22 @@ MeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {
|
|
|
438
466
|
return request.recordMeeting({locusUrl, recording: false, paused: false});
|
|
439
467
|
}
|
|
440
468
|
|
|
441
|
-
return Promise.reject(
|
|
469
|
+
return Promise.reject(
|
|
470
|
+
new PermissionError('Stop recording not allowed, due to moderator property.')
|
|
471
|
+
);
|
|
442
472
|
};
|
|
443
473
|
|
|
444
474
|
MeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);
|
|
445
475
|
|
|
446
|
-
MeetingUtil.canUserLowerAllHands = (displayHints) =>
|
|
476
|
+
MeetingUtil.canUserLowerAllHands = (displayHints) =>
|
|
477
|
+
displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);
|
|
447
478
|
|
|
448
|
-
MeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) =>
|
|
479
|
+
MeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) =>
|
|
480
|
+
displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);
|
|
449
481
|
|
|
450
|
-
MeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) =>
|
|
482
|
+
MeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) =>
|
|
483
|
+
displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||
|
|
484
|
+
displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);
|
|
451
485
|
|
|
452
486
|
MeetingUtil.lockMeeting = (actions, request, locusUrl) => {
|
|
453
487
|
if (actions && actions.canLock) {
|
|
@@ -519,31 +553,38 @@ MeetingUtil.endMeetingForAll = (meeting) => {
|
|
|
519
553
|
.then(() => MeetingUtil.cleanUp(meeting))
|
|
520
554
|
.catch((err) => {
|
|
521
555
|
LoggerProxy.logger.error(
|
|
522
|
-
`Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${
|
|
523
|
-
meeting.id
|
|
524
|
-
}, error: ${err}`
|
|
556
|
+
`Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`
|
|
525
557
|
);
|
|
526
558
|
|
|
527
559
|
return Promise.reject(err);
|
|
528
560
|
});
|
|
529
561
|
};
|
|
530
562
|
|
|
531
|
-
MeetingUtil.canEnableClosedCaption = (displayHints) =>
|
|
563
|
+
MeetingUtil.canEnableClosedCaption = (displayHints) =>
|
|
564
|
+
displayHints.includes(DISPLAY_HINTS.CAPTION_START);
|
|
532
565
|
|
|
533
|
-
MeetingUtil.canStartTranscribing = (displayHints) =>
|
|
566
|
+
MeetingUtil.canStartTranscribing = (displayHints) =>
|
|
567
|
+
displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);
|
|
534
568
|
|
|
535
|
-
MeetingUtil.canStopTranscribing = (displayHints) =>
|
|
569
|
+
MeetingUtil.canStopTranscribing = (displayHints) =>
|
|
570
|
+
displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);
|
|
536
571
|
|
|
537
|
-
MeetingUtil.isClosedCaptionActive = (displayHints) =>
|
|
572
|
+
MeetingUtil.isClosedCaptionActive = (displayHints) =>
|
|
573
|
+
displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);
|
|
538
574
|
|
|
539
|
-
MeetingUtil.isWebexAssistantActive = (displayHints) =>
|
|
575
|
+
MeetingUtil.isWebexAssistantActive = (displayHints) =>
|
|
576
|
+
displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);
|
|
540
577
|
|
|
541
|
-
MeetingUtil.canViewCaptionPanel = (displayHints) =>
|
|
578
|
+
MeetingUtil.canViewCaptionPanel = (displayHints) =>
|
|
579
|
+
displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);
|
|
542
580
|
|
|
543
|
-
MeetingUtil.isRealTimeTranslationEnabled = (displayHints) =>
|
|
581
|
+
MeetingUtil.isRealTimeTranslationEnabled = (displayHints) =>
|
|
582
|
+
displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);
|
|
544
583
|
|
|
545
|
-
MeetingUtil.canSelectSpokenLanguages = (displayHints) =>
|
|
584
|
+
MeetingUtil.canSelectSpokenLanguages = (displayHints) =>
|
|
585
|
+
displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);
|
|
546
586
|
|
|
547
|
-
MeetingUtil.waitingForOthersToJoin = (displayHints) =>
|
|
587
|
+
MeetingUtil.waitingForOthersToJoin = (displayHints) =>
|
|
588
|
+
displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);
|
|
548
589
|
|
|
549
590
|
export default MeetingUtil;
|
|
@@ -34,7 +34,8 @@ export default class MeetingInfoCollection extends Collection {
|
|
|
34
34
|
return find(
|
|
35
35
|
// @ts-ignore
|
|
36
36
|
this.meetingInfos,
|
|
37
|
-
(info) =>
|
|
37
|
+
(info) =>
|
|
38
|
+
info.sipUrl === id || info.locusId === id || info.userId === id || info.meetingLink === id
|
|
38
39
|
);
|
|
39
40
|
}
|
|
40
41
|
}
|