@webex/plugin-meetings 3.11.0-next.7 → 3.11.0-next.8
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meetings/index.js +76 -34
- package/dist/meetings/index.js.map +1 -1
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +1 -1
- package/src/meetings/index.ts +88 -7
- package/test/unit/spec/meetings/index.js +519 -0
|
@@ -95,6 +95,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
95
95
|
preferredWebexSite: any;
|
|
96
96
|
reachability: Reachability;
|
|
97
97
|
registered: any;
|
|
98
|
+
registrationPromise: Promise<void>;
|
|
99
|
+
unregistrationPromise: Promise<void>;
|
|
98
100
|
request: any;
|
|
99
101
|
geoHintInfo: any;
|
|
100
102
|
meetingInfo: any;
|
|
@@ -287,7 +289,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
287
289
|
* @public
|
|
288
290
|
* @memberof Meetings
|
|
289
291
|
*/
|
|
290
|
-
unregister():
|
|
292
|
+
unregister(): Promise<void>;
|
|
291
293
|
/**
|
|
292
294
|
* Creates a noise reduction effect
|
|
293
295
|
*
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
package/src/meetings/index.ts
CHANGED
|
@@ -195,6 +195,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
195
195
|
preferredWebexSite: any;
|
|
196
196
|
reachability: Reachability;
|
|
197
197
|
registered: any;
|
|
198
|
+
registrationPromise: Promise<void>;
|
|
199
|
+
unregistrationPromise: Promise<void>;
|
|
198
200
|
request: any;
|
|
199
201
|
geoHintInfo: any;
|
|
200
202
|
meetingInfo: any;
|
|
@@ -929,9 +931,20 @@ export default class Meetings extends WebexPlugin {
|
|
|
929
931
|
* @returns {Promise} A promise that resolves when the step is completed.
|
|
930
932
|
*/
|
|
931
933
|
executeRegistrationStep(step: () => Promise<any>, stepName: string) {
|
|
932
|
-
return step()
|
|
933
|
-
|
|
934
|
-
|
|
934
|
+
return step()
|
|
935
|
+
.then(() => {
|
|
936
|
+
LoggerProxy.logger.info(
|
|
937
|
+
`Meetings:index#executeRegistrationStep --> INFO, ${stepName} completed`
|
|
938
|
+
);
|
|
939
|
+
this.registrationStatus[stepName] = true;
|
|
940
|
+
})
|
|
941
|
+
.catch((error) => {
|
|
942
|
+
LoggerProxy.logger.error(
|
|
943
|
+
`Meetings:index#executeRegistrationStep --> ERROR, ${stepName} failed: ${error.message}`
|
|
944
|
+
);
|
|
945
|
+
|
|
946
|
+
return Promise.reject(error);
|
|
947
|
+
});
|
|
935
948
|
}
|
|
936
949
|
|
|
937
950
|
/**
|
|
@@ -944,7 +957,33 @@ export default class Meetings extends WebexPlugin {
|
|
|
944
957
|
* @memberof Meetings
|
|
945
958
|
*/
|
|
946
959
|
public register(deviceRegistrationOptions?: DeviceRegistrationOptions): Promise<any> {
|
|
947
|
-
this.
|
|
960
|
+
if (this.unregistrationPromise) {
|
|
961
|
+
LoggerProxy.logger.info(
|
|
962
|
+
'Meetings:index#register --> INFO, Meetings plugin unregistration in progress, waiting to register'
|
|
963
|
+
);
|
|
964
|
+
|
|
965
|
+
this.registrationPromise = this.unregistrationPromise
|
|
966
|
+
.catch(() => {}) // It doesn't matter what happened during unregistration
|
|
967
|
+
.finally(() => {
|
|
968
|
+
LoggerProxy.logger.info(
|
|
969
|
+
'Meetings:index#register --> INFO, Meetings plugin unregistration completed, proceeding to register'
|
|
970
|
+
);
|
|
971
|
+
|
|
972
|
+
this.registrationPromise = null;
|
|
973
|
+
|
|
974
|
+
return this.register(deviceRegistrationOptions);
|
|
975
|
+
});
|
|
976
|
+
|
|
977
|
+
return this.registrationPromise;
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
if (this.registrationPromise) {
|
|
981
|
+
LoggerProxy.logger.info(
|
|
982
|
+
'Meetings:index#register --> INFO, Meetings plugin registration in progress, returning existing promise'
|
|
983
|
+
);
|
|
984
|
+
|
|
985
|
+
return this.registrationPromise;
|
|
986
|
+
}
|
|
948
987
|
|
|
949
988
|
// @ts-ignore
|
|
950
989
|
if (!this.webex.canAuthorize) {
|
|
@@ -963,7 +1002,11 @@ export default class Meetings extends WebexPlugin {
|
|
|
963
1002
|
return Promise.resolve();
|
|
964
1003
|
}
|
|
965
1004
|
|
|
966
|
-
|
|
1005
|
+
LoggerProxy.logger.info('Meetings:index#register --> INFO, Registering Meetings plugin');
|
|
1006
|
+
|
|
1007
|
+
this.registrationStatus = clone(INITIAL_REGISTRATION_STATUS);
|
|
1008
|
+
|
|
1009
|
+
this.registrationPromise = Promise.all([
|
|
967
1010
|
this.executeRegistrationStep(() => this.fetchUserPreferredWebexSite(), 'fetchWebexSite'),
|
|
968
1011
|
this.executeRegistrationStep(() => this.getGeoHint(), 'getGeoHint'),
|
|
969
1012
|
this.executeRegistrationStep(
|
|
@@ -1022,7 +1065,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
1022
1065
|
});
|
|
1023
1066
|
|
|
1024
1067
|
return Promise.reject(error);
|
|
1068
|
+
})
|
|
1069
|
+
.finally(() => {
|
|
1070
|
+
this.registrationPromise = null;
|
|
1025
1071
|
});
|
|
1072
|
+
|
|
1073
|
+
return this.registrationPromise;
|
|
1026
1074
|
}
|
|
1027
1075
|
|
|
1028
1076
|
/**
|
|
@@ -1034,6 +1082,35 @@ export default class Meetings extends WebexPlugin {
|
|
|
1034
1082
|
* @memberof Meetings
|
|
1035
1083
|
*/
|
|
1036
1084
|
unregister() {
|
|
1085
|
+
if (this.unregistrationPromise) {
|
|
1086
|
+
LoggerProxy.logger.info(
|
|
1087
|
+
'Meetings:index#unregister --> INFO, Meetings plugin unregistration in progress, returning existing promise'
|
|
1088
|
+
);
|
|
1089
|
+
|
|
1090
|
+
return this.unregistrationPromise;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
if (this.registrationPromise) {
|
|
1094
|
+
LoggerProxy.logger.info(
|
|
1095
|
+
'Meetings:index#unregister --> INFO, Meetings plugin registration in progress, waiting to unregister'
|
|
1096
|
+
);
|
|
1097
|
+
|
|
1098
|
+
// Wait for registration to complete (success or failure), then call unregister again
|
|
1099
|
+
this.unregistrationPromise = this.registrationPromise
|
|
1100
|
+
.catch(() => {}) // It doesn't matter what happened during registration
|
|
1101
|
+
.finally(() => {
|
|
1102
|
+
LoggerProxy.logger.info(
|
|
1103
|
+
'Meetings:index#unregister --> INFO, Meetings plugin registration completed, proceeding to unregister'
|
|
1104
|
+
);
|
|
1105
|
+
|
|
1106
|
+
this.unregistrationPromise = null;
|
|
1107
|
+
|
|
1108
|
+
return this.unregister();
|
|
1109
|
+
});
|
|
1110
|
+
|
|
1111
|
+
return this.unregistrationPromise;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1037
1114
|
if (!this.registered) {
|
|
1038
1115
|
LoggerProxy.logger.info(
|
|
1039
1116
|
'Meetings:index#unregister --> INFO, Meetings plugin already unregistered'
|
|
@@ -1044,7 +1121,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
1044
1121
|
|
|
1045
1122
|
this.stopListeningForEvents();
|
|
1046
1123
|
|
|
1047
|
-
|
|
1124
|
+
this.unregistrationPromise =
|
|
1048
1125
|
// @ts-ignore
|
|
1049
1126
|
this.webex.internal.mercury
|
|
1050
1127
|
// Use code 3050 with a non-reconnecting reason to prevent Mercury auto-reconnect
|
|
@@ -1081,7 +1158,11 @@ export default class Meetings extends WebexPlugin {
|
|
|
1081
1158
|
this.registered = false;
|
|
1082
1159
|
this.registrationStatus = clone(INITIAL_REGISTRATION_STATUS);
|
|
1083
1160
|
})
|
|
1084
|
-
|
|
1161
|
+
.finally(() => {
|
|
1162
|
+
this.unregistrationPromise = null;
|
|
1163
|
+
});
|
|
1164
|
+
|
|
1165
|
+
return this.unregistrationPromise;
|
|
1085
1166
|
}
|
|
1086
1167
|
|
|
1087
1168
|
/**
|