@webex/plugin-meetings 2.14.2 → 2.14.3

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.
@@ -57,7 +57,11 @@ var BEHAVIORAL_METRICS = {
57
57
  ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
58
58
  VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
59
59
  VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
60
- VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
60
+ VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
61
+ MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
62
+ MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
63
+ MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
64
+ MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
61
65
  };
62
66
  exports.default = BEHAVIORAL_METRICS;
63
67
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE;AAlDG,CAA3B"}
1
+ {"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE,4BA3CI;EA4CzBC,6BAA6B,EAAE,sCA5CN;EA6CzBC,6BAA6B,EAAE,sCA7CN;EA8CzBC,qBAAqB,EAAE,8BA9CE;EA+CzBC,qBAAqB,EAAE,8BA/CE;EAgDzBC,uBAAuB,EAAE,gCAhDA;EAiDzBC,qBAAqB,EAAE,8BAjDE;EAkDzBC,oBAAoB,EAAE,6BAlDG;EAmDzBC,eAAe,EAAE,wBAnDQ;EAoDzBC,eAAe,EAAE,wBApDQ;EAqDzBC,iBAAiB,EAAE,0BArDM;EAsDzBC,iBAAiB,EAAE;AAtDM,CAA3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "2.14.2",
3
+ "version": "2.14.3",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -24,19 +24,19 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@babel/runtime-corejs2": "^7.14.8",
27
- "@webex/webex-core": "2.14.2",
28
- "@webex/internal-plugin-mercury": "2.14.2",
29
- "@webex/internal-plugin-conversation": "2.14.2",
27
+ "@webex/webex-core": "2.14.3",
28
+ "@webex/internal-plugin-mercury": "2.14.3",
29
+ "@webex/internal-plugin-conversation": "2.14.3",
30
30
  "webrtc-adapter": "^7.7.0",
31
31
  "lodash": "^4.17.21",
32
32
  "uuid": "^3.3.2",
33
33
  "global": "^4.4.0",
34
34
  "ip-anonymize": "^0.1.0",
35
- "@webex/common": "2.14.2",
35
+ "@webex/common": "2.14.3",
36
36
  "bowser": "^2.11.0",
37
37
  "sdp-transform": "^2.12.0",
38
38
  "readable-stream": "^3.6.0",
39
- "@webex/common-timers": "2.14.2",
39
+ "@webex/common-timers": "2.14.3",
40
40
  "btoa": "^1.2.1",
41
41
  "@webex/internal-media-core": "^0.0.6-beta",
42
42
  "javascript-state-machine": "^3.1.0",
@@ -18,7 +18,7 @@ export default class ParameterError extends Error {
18
18
  }
19
19
 
20
20
  this.name = ERROR_DICTIONARY.PARAMETER.NAME;
21
- this.sdkMessage = ERROR_DICTIONARY.PARAMETER.MESSAGE;
21
+ this.sdkMessage = message || ERROR_DICTIONARY.PARAMETER.MESSAGE;
22
22
  this.error = error;
23
23
 
24
24
  this.code = ERROR_DICTIONARY.PARAMETER.CODE;
package/src/constants.js CHANGED
@@ -129,6 +129,7 @@ export const _UNKNOWN_ = 'UNKNOWN';
129
129
 
130
130
  export const _WEBEX_MEETING_ = 'WEBEX_MEETING';
131
131
  export const _WAIT_ = 'WAIT';
132
+ export const _MOVE_MEDIA_ = 'MOVE_MEDIA';
132
133
 
133
134
  // *********** PARTICIPANT DELTAS ***********
134
135
  export const PARTICIPANT_DELTAS = {
@@ -653,6 +654,7 @@ export const LOCUSINFO = {
653
654
  MEETING_INFO_UPDATED: 'MEETING_INFO_UPDATED',
654
655
  MEETING_LOCKED: 'MEETING_LOCKED',
655
656
  MEETING_UNLOCKED: 'MEETING_UNLOCKED',
657
+ SELF_OBSERVING: 'SELF_OBSERVING',
656
658
  DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY'
657
659
  }
658
660
  };
@@ -1031,6 +1031,16 @@ export default class LocusInfo extends EventsScope {
1031
1031
  );
1032
1032
  }
1033
1033
 
1034
+ if (parsedSelves.updates.isUserObserving) {
1035
+ this.emitScoped(
1036
+ {
1037
+ file: 'locus-info',
1038
+ function: 'updateSelf'
1039
+ },
1040
+ LOCUSINFO.EVENTS.SELF_OBSERVING
1041
+ );
1042
+ }
1043
+
1034
1044
 
1035
1045
  this.emitScoped(
1036
1046
  {
@@ -4,6 +4,8 @@ import {
4
4
  _JOINED_,
5
5
  _CALL_,
6
6
  _WAIT_,
7
+ _MOVE_MEDIA_,
8
+ _OBSERVE_,
7
9
  _LEFT_,
8
10
  MEETING_END_REASON,
9
11
  MEDIA_STATE,
@@ -81,6 +83,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
81
83
  updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
82
84
  updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
83
85
  updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
86
+ updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
84
87
 
85
88
  updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);
86
89
  updates.audioStateChange = previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;
@@ -250,6 +253,15 @@ SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
250
253
  return oldSelf.moderator !== changedSelf.moderator;
251
254
  };
252
255
 
256
+
257
+ /**
258
+ * @param {Object} oldSelf
259
+ * @param {Object} changedSelf
260
+ * @returns {Boolean}
261
+ * @throws {Error} if changed self was undefined
262
+ */
263
+ SelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ && changedSelf && changedSelf.joinedWith?.intent?.type === _OBSERVE_;
264
+
253
265
  /**
254
266
  * @param {Object} oldSelf
255
267
  * @param {Object} changedSelf
@@ -2903,7 +2903,8 @@ export default class Meeting extends StatelessWebexPlugin {
2903
2903
  const audioStopped = audioTrack && audioTrack.readyState === ENDED;
2904
2904
  const videoStopped = videoTrack && videoTrack.readyState === ENDED;
2905
2905
 
2906
- if (audioStopped && videoStopped) {
2906
+ // triggers event for audio and video stop , sometime either audio or video one of them exists
2907
+ if (audioStopped || videoStopped) {
2907
2908
  Trigger.trigger(
2908
2909
  this,
2909
2910
  {
@@ -2916,7 +2917,7 @@ export default class Meeting extends StatelessWebexPlugin {
2916
2917
  );
2917
2918
  }
2918
2919
  else if (audioTrack || videoTrack) {
2919
- LoggerProxy.logger.warn('Meeting:index#closeLocalStream --> Error: MediaStreamTrack.readyState is incorrect.');
2920
+ LoggerProxy.logger.warn('Meeting:index#closeLocalStream --> Warning: track might already been ended or unavaliable.');
2920
2921
  }
2921
2922
  });
2922
2923
  }
@@ -3886,7 +3887,7 @@ export default class Meeting extends StatelessWebexPlugin {
3886
3887
  mediaCapabilities: {
3887
3888
  rx: {
3888
3889
  audio: false,
3889
- share: false,
3890
+ share: true,
3890
3891
  share_audio: false,
3891
3892
  video: false,
3892
3893
  whiteboard: false
@@ -3904,16 +3905,73 @@ export default class Meeting extends StatelessWebexPlugin {
3904
3905
 
3905
3906
  Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
3906
3907
 
3907
- return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true}).then(() => {
3908
- this.meetingFiniteStateMachine.join();
3908
+ this.locusInfo.once(LOCUSINFO.EVENTS.SELF_OBSERVING, async () => {
3909
+ // Clean up the camera , microphone track and re initiate it
3909
3910
 
3910
- return this.updateMedia({
3911
- mediaSettings: {
3912
- sendVideo: false, receiveVideo: false, sendAudio: false, receiveAudio: false, sendShare: false, receiveShare: false
3911
+ try {
3912
+ if (this.isSharing) {
3913
+ await this.stopFloorRequest();
3913
3914
  }
3914
- }).then(() => Promise.resolve(this));
3915
+ const mediaSettings = {
3916
+ mediaDirection: {
3917
+ sendVideo: false,
3918
+ receiveVideo: false,
3919
+ sendAudio: false,
3920
+ receiveAudio: false,
3921
+ sendShare: false,
3922
+ receiveShare: true
3923
+ }
3924
+ };
3925
+
3926
+ // clean up the local tracks
3927
+ this.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
3928
+
3929
+ // close the existing local tracks
3930
+ await this.closeLocalStream();
3931
+ await this.closeLocalShare();
3932
+
3933
+ this.mediaProperties.unsetMediaTracks();
3934
+
3935
+
3936
+ // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
3937
+ // once the DX answers we establish connection back the media server with only receiveShare enabled
3938
+ await this.reconnectionManager.reconnectMedia(mediaSettings)
3939
+ .then(() => {
3940
+ Metrics.sendBehavioralMetric(
3941
+ BEHAVIORAL_METRICS.MOVE_TO_SUCCESS,
3942
+ );
3943
+ });
3944
+ }
3945
+ catch (error) {
3946
+ LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
3947
+ Metrics.sendBehavioralMetric(
3948
+ BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
3949
+ {
3950
+ correlation_id: this.correlationId,
3951
+ locus_id: this.locusUrl.split('/').pop(),
3952
+ reason: error.message,
3953
+ stack: error.stack
3954
+ }
3955
+ );
3956
+ }
3957
+ });
3958
+
3959
+ LoggerProxy.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
3960
+
3961
+ return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true}).then(() => {
3962
+ this.meetingFiniteStateMachine.join();
3915
3963
  }).catch((error) => {
3916
3964
  this.meetingFiniteStateMachine.fail(error);
3965
+ Metrics.sendBehavioralMetric(
3966
+ BEHAVIORAL_METRICS.MOVE_TO_FAILURE,
3967
+ {
3968
+ correlation_id: this.correlationId,
3969
+ locus_id: this.locusUrl.split('/').pop(),
3970
+ reason: error.message,
3971
+ stack: error.stack
3972
+ }
3973
+ );
3974
+ LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
3917
3975
 
3918
3976
  return Promise.reject(error);
3919
3977
  });
@@ -3927,54 +3985,38 @@ export default class Meeting extends StatelessWebexPlugin {
3927
3985
  * @memberof Meeting
3928
3986
  */
3929
3987
  moveFrom(resourceId) {
3988
+ // On moveFrom ask the developer to re capture it moveFrom then updateMedia
3930
3989
  if (!resourceId) {
3931
3990
  throw new ParameterError('Cannot move call without a resourceId.');
3932
3991
  }
3933
3992
  const oldCorrelationId = this.correlationId;
3934
3993
 
3935
- this.id = uuid.v4();
3936
-
3937
- this.webex.meetings.meetingCollection.set(this);
3938
-
3939
- Metrics.postEvent({
3940
- event: eventType.MEDIA_CAPABILITIES,
3941
- meeting: this,
3942
- data: {
3943
- mediaCapabilities: {
3944
- rx: {
3945
- audio: true,
3946
- share: true,
3947
- share_audio: true,
3948
- video: true,
3949
- whiteboard: true
3950
- },
3951
- tx: {
3952
- audio: true,
3953
- share: true,
3954
- share_audio: true,
3955
- video: true,
3956
- whiteboard: true
3957
- }
3958
- }
3959
- }
3960
- });
3961
3994
  Metrics.postEvent({event: eventType.MOVE_MEDIA, meeting: this});
3962
3995
 
3963
- return MeetingUtil.joinMeetingOptions(this).then((join) => this.getMediaStreams({sendAudio: true, sendVideo: true, sendShare: false})
3964
- .then(([localStream, localShare]) =>
3965
- this.updateMedia({
3966
- mediaSettings: {
3967
- sendAudio: true, receiveAudio: true, sendVideo: true, receiveVideo: true, sendShare: false, receiveShare: false
3968
- },
3969
- localStream,
3970
- localShare
3971
- })
3972
- .then(() => Promise.resolve(join)))
3973
- .then(() => MeetingUtil.leaveMeeting(this, {resourceId, correlationId: oldCorrelationId, moveMeeting: true})))
3974
- .then(() => {
3975
- this.webex.meetings.meetingCollection.delete(this.id);
3996
+ return MeetingUtil.joinMeetingOptions(this)
3997
+ .then(() => MeetingUtil.leaveMeeting(this, {
3998
+ resourceId,
3999
+ correlationId: oldCorrelationId,
4000
+ moveMeeting: true
4001
+ }).then(() => {
4002
+ this.resourceId = '';
4003
+ Metrics.sendBehavioralMetric(
4004
+ BEHAVIORAL_METRICS.MOVE_FROM_SUCCESS,
4005
+ );
4006
+ })).catch((error) => {
4007
+ this.meetingFiniteStateMachine.fail(error);
4008
+ Metrics.sendBehavioralMetric(
4009
+ BEHAVIORAL_METRICS.MOVE_FROM_FAILURE,
4010
+ {
4011
+ correlation_id: this.correlationId,
4012
+ locus_id: this.locusUrl.split('/').pop(),
4013
+ reason: error.message,
4014
+ stack: error.stack
4015
+ }
4016
+ );
4017
+ LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
3976
4018
 
3977
- return Promise.resolve();
4019
+ return Promise.reject(error);
3978
4020
  });
3979
4021
  }
3980
4022
 
@@ -4441,7 +4483,9 @@ export default class Meeting extends StatelessWebexPlugin {
4441
4483
  if (!this.canUpdateMedia()) {
4442
4484
  return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.ALL, options);
4443
4485
  }
4444
- const {localStream, localShare, mediaSettings} = options;
4486
+ const {
4487
+ localStream, localShare, mediaSettings
4488
+ } = options;
4445
4489
 
4446
4490
  const previousSendShareStatus = this.mediaProperties.mediaDirection.sendShare;
4447
4491
 
@@ -4451,7 +4495,7 @@ export default class Meeting extends StatelessWebexPlugin {
4451
4495
  meetingId: this.id,
4452
4496
  remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
4453
4497
  enableRtx: this.config.enableRtx,
4454
- enableExtmap: this.config.enableExtmap
4498
+ enableExtmap: this.config.enableExtmap,
4455
4499
  })
4456
4500
  .then((peerConnection) => {
4457
4501
  LoggerProxy.logger.info(`${LOG_HEADER} PeerConnection received from updateMedia, ${peerConnection}`);
@@ -4480,7 +4524,7 @@ export default class Meeting extends StatelessWebexPlugin {
4480
4524
  .sendRoapMediaRequest({
4481
4525
  sdp: this.mediaProperties.peerConnection.sdp,
4482
4526
  roapSeq: this.roapSeq,
4483
- meeting: this // or can pass meeting ID
4527
+ meeting: this, // or can pass meeting ID
4484
4528
  }),
4485
4529
  {
4486
4530
  header: `${LOG_HEADER} sendRoapMediaRequest being sent`,
@@ -51,7 +51,11 @@ const BEHAVIORAL_METRICS = {
51
51
  ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',
52
52
  VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',
53
53
  VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',
54
- VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error'
54
+ VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',
55
+ MOVE_TO_SUCCESS: 'js_sdk_move_to_success',
56
+ MOVE_TO_FAILURE: 'js_sdk_move_to_failure',
57
+ MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
58
+ MOVE_FROM_FAILURE: 'js_sdk_move_from_failure'
55
59
  };
56
60
 
57
61