|
@@ -229,42 +229,10 @@ function disconnectAndShowFeedback(requestFeedback) {
|
229
|
229
|
APP.UI.hideRingOverLay();
|
230
|
230
|
connection.disconnect();
|
231
|
231
|
APP.API.notifyConferenceLeft(APP.conference.roomName);
|
232
|
|
- if (requestFeedback) {
|
233
|
|
- return APP.UI.requestFeedback();
|
234
|
|
- } else {
|
235
|
|
- return Promise.resolve();
|
236
|
|
- }
|
237
|
|
-}
|
238
|
|
-
|
239
|
|
-/**
|
240
|
|
- * Disconnect from the conference and optionally request user feedback.
|
241
|
|
- * @param {boolean} [requestFeedback=false] if user feedback should be requested
|
242
|
|
- */
|
243
|
|
-function hangup (requestFeedback = false) {
|
244
|
|
- const errCallback = (err) => {
|
245
|
|
-
|
246
|
|
- // If we want to break out the chain in our error handler, it needs
|
247
|
|
- // to return a rejected promise. In the case of feedback request
|
248
|
|
- // in progress it's important to not redirect to the welcome page
|
249
|
|
- // (see below maybeRedirectToWelcomePage call).
|
250
|
|
- if (err === UIErrors.FEEDBACK_REQUEST_IN_PROGRESS) {
|
251
|
|
- return Promise.reject('Feedback request in progress.');
|
252
|
|
- }
|
253
|
|
- else {
|
254
|
|
- console.error('Error occurred during hanging up: ', err);
|
255
|
|
- return Promise.resolve();
|
256
|
|
- }
|
257
|
|
- };
|
258
|
|
- const disconnect = disconnectAndShowFeedback.bind(null, requestFeedback);
|
259
|
|
-
|
260
|
|
- if (!conferenceLeftListener)
|
261
|
|
- conferenceLeftListener = new ConferenceLeftListener();
|
262
|
|
-
|
263
|
|
- // Make sure that leave is resolved successfully and the set the handlers
|
264
|
|
- // to be invoked once conference had been left
|
265
|
|
- APP.conference._room.leave()
|
266
|
|
- .then(conferenceLeftListener.setHandler(disconnect, errCallback))
|
267
|
|
- .catch(errCallback);
|
|
232
|
+ let promise = (requestFeedback?
|
|
233
|
+ APP.UI.requestFeedback(): Promise.resolve());
|
|
234
|
+ promise.then(() => APP.API.notifyReadyToClose());
|
|
235
|
+ return promise;
|
268
|
236
|
}
|
269
|
237
|
|
270
|
238
|
/**
|
|
@@ -276,8 +244,12 @@ class ConferenceLeftListener {
|
276
|
244
|
/**
|
277
|
245
|
* Creates ConferenceLeftListener and start listening for conference
|
278
|
246
|
* failed event.
|
|
247
|
+ * @param {Function} handler the function that will be called when
|
|
248
|
+ * CONFERENCE_LEFT event is fired.
|
|
249
|
+ * @param errCallback
|
279
|
250
|
*/
|
280
|
|
- constructor() {
|
|
251
|
+ constructor(handler) {
|
|
252
|
+ this.handler = handler;
|
281
|
253
|
room.on(ConferenceEvents.CONFERENCE_LEFT,
|
282
|
254
|
this._handleConferenceLeft.bind(this));
|
283
|
255
|
}
|
|
@@ -287,33 +259,7 @@ class ConferenceLeftListener {
|
287
|
259
|
* @private
|
288
|
260
|
*/
|
289
|
261
|
_handleConferenceLeft() {
|
290
|
|
- this.conferenceLeft = true;
|
291
|
|
-
|
292
|
|
- if (this.handler)
|
293
|
|
- this._handleLeave();
|
294
|
|
- }
|
295
|
|
-
|
296
|
|
- /**
|
297
|
|
- * Sets the handlers. If we already left the conference invoke them.
|
298
|
|
- * @param handler
|
299
|
|
- * @param errCallback
|
300
|
|
- */
|
301
|
|
- setHandler (handler, errCallback) {
|
302
|
|
- this.handler = handler;
|
303
|
|
- this.errCallback = errCallback;
|
304
|
|
-
|
305
|
|
- if (this.conferenceLeft)
|
306
|
|
- this._handleLeave();
|
307
|
|
- }
|
308
|
|
-
|
309
|
|
- /**
|
310
|
|
- * Invokes the handlers.
|
311
|
|
- * @private
|
312
|
|
- */
|
313
|
|
- _handleLeave()
|
314
|
|
- {
|
315
|
262
|
this.handler()
|
316
|
|
- .catch(this.errCallback)
|
317
|
263
|
.then(maybeRedirectToWelcomePage)
|
318
|
264
|
.catch(function(err){
|
319
|
265
|
console.log(err);
|
|
@@ -1477,16 +1423,16 @@ export default {
|
1477
|
1423
|
|
1478
|
1424
|
// call hangup
|
1479
|
1425
|
APP.UI.addListener(UIEvents.HANGUP, () => {
|
1480
|
|
- hangup(true);
|
|
1426
|
+ this.hangup(true);
|
1481
|
1427
|
});
|
1482
|
1428
|
|
1483
|
1429
|
// logout
|
1484
|
1430
|
APP.UI.addListener(UIEvents.LOGOUT, () => {
|
1485
|
|
- AuthHandler.logout(room).then(function (url) {
|
|
1431
|
+ AuthHandler.logout(room).then(url => {
|
1486
|
1432
|
if (url) {
|
1487
|
1433
|
window.location.href = url;
|
1488
|
1434
|
} else {
|
1489
|
|
- hangup(true);
|
|
1435
|
+ this.hangup(true);
|
1490
|
1436
|
}
|
1491
|
1437
|
});
|
1492
|
1438
|
});
|
|
@@ -1827,5 +1773,37 @@ export default {
|
1827
|
1773
|
if(room) {
|
1828
|
1774
|
room.sendApplicationLog(JSON.stringify({name, value}));
|
1829
|
1775
|
}
|
|
1776
|
+ },
|
|
1777
|
+ /**
|
|
1778
|
+ * Disconnect from the conference and optionally request user feedback.
|
|
1779
|
+ * @param {boolean} [requestFeedback=false] if user feedback should be
|
|
1780
|
+ * requested
|
|
1781
|
+ */
|
|
1782
|
+ hangup (requestFeedback = false) {
|
|
1783
|
+ const errCallback = (err) => {
|
|
1784
|
+ // If we want to break out the chain in our error handler, it needs
|
|
1785
|
+ // to return a rejected promise. In the case of feedback request
|
|
1786
|
+ // in progress it's important to not redirect to the welcome page
|
|
1787
|
+ // (see below maybeRedirectToWelcomePage call).
|
|
1788
|
+ if (err === UIErrors.FEEDBACK_REQUEST_IN_PROGRESS) {
|
|
1789
|
+ return Promise.reject('Feedback request in progress.');
|
|
1790
|
+ }
|
|
1791
|
+ else {
|
|
1792
|
+ console.error('Error occurred during hanging up: ', err);
|
|
1793
|
+ return Promise.resolve();
|
|
1794
|
+ }
|
|
1795
|
+ };
|
|
1796
|
+
|
|
1797
|
+ const disconnect = () => {
|
|
1798
|
+ return disconnectAndShowFeedback(requestFeedback)
|
|
1799
|
+ .catch(errCallback);
|
|
1800
|
+ };
|
|
1801
|
+
|
|
1802
|
+ if (!conferenceLeftListener) {
|
|
1803
|
+ conferenceLeftListener
|
|
1804
|
+ = new ConferenceLeftListener(disconnect, errCallback);
|
|
1805
|
+ }
|
|
1806
|
+
|
|
1807
|
+ room.leave().catch(errCallback);
|
1830
|
1808
|
}
|
1831
|
1809
|
};
|