Pārlūkot izejas kodu

refactor(conference.js) hangup functionality

master
hristoterezov 8 gadus atpakaļ
vecāks
revīzija
7f24d14832
1 mainītis faili ar 33 papildinājumiem un 54 dzēšanām
  1. 33
    54
      conference.js

+ 33
- 54
conference.js Parādīt failu

16
 
16
 
17
 import {reportError} from './modules/util/helpers';
17
 import {reportError} from './modules/util/helpers';
18
 
18
 
19
-import UIErrors from './modules/UI/UIErrors';
20
 import UIUtil from './modules/UI/util/UIUtil';
19
 import UIUtil from './modules/UI/util/UIUtil';
21
 
20
 
22
 const ConnectionErrors = JitsiMeetJS.errors.connection;
21
 const ConnectionErrors = JitsiMeetJS.errors.connection;
42
 /**
41
 /**
43
  * Listens whether conference had been left from local user when we are trying
42
  * Listens whether conference had been left from local user when we are trying
44
  * to navigate away from current page.
43
  * to navigate away from current page.
45
- * @type {ConferenceLeftListener}
44
+ * @type {HangupConferenceLeftListener}
46
  */
45
  */
47
 let conferenceLeftListener = null;
46
 let conferenceLeftListener = null;
48
 
47
 
220
     }, 3000);
219
     }, 3000);
221
 }
220
 }
222
 
221
 
223
-/**
224
- * Executes connection.disconnect and shows the feedback dialog
225
- * @param {boolean} [requestFeedback=false] if user feedback should be requested
226
- * @returns Promise.
227
- */
228
-function disconnectAndShowFeedback(requestFeedback) {
229
-    APP.UI.hideRingOverLay();
230
-    connection.disconnect();
231
-    APP.API.notifyConferenceLeft(APP.conference.roomName);
232
-    let promise = (requestFeedback?
233
-        APP.UI.requestFeedback(): Promise.resolve());
234
-    promise.then(() => APP.API.notifyReadyToClose());
235
-    return promise;
236
-}
237
 
222
 
238
 /**
223
 /**
239
- * Listens for CONFERENCE_LEFT event so we can check whether it has finished.
240
- * The handler will be called once the conference had been left or if it
241
- * was already left when we are adding the handler.
224
+ * Listens for CONFERENCE_LEFT event after hangup function has been executed.
242
  */
225
  */
243
-class ConferenceLeftListener {
226
+class HangupConferenceLeftListener {
244
     /**
227
     /**
245
-     * Creates ConferenceLeftListener and start listening for conference
246
-     * failed event.
247
-     * @param {Function} handler the function that will be called when
248
-     * CONFERENCE_LEFT event is fired.
249
-     * @param errCallback
228
+     * Creates HangupConferenceLeftListener and start listening for conference
229
+     * left event. On CONFERENCE_LEFT event calls should disconnect the user
230
+     * and maybe show the feedback dialog.
231
+     * @param {boolean} [requestFeedback=false] if user feedback should be
232
+     * requested
250
      */
233
      */
251
-    constructor(handler) {
252
-        this.handler = handler;
234
+    constructor(requestFeedback) {
235
+        this.requestFeedback = requestFeedback;
253
         room.on(ConferenceEvents.CONFERENCE_LEFT,
236
         room.on(ConferenceEvents.CONFERENCE_LEFT,
254
             this._handleConferenceLeft.bind(this));
237
             this._handleConferenceLeft.bind(this));
255
     }
238
     }
256
 
239
 
257
     /**
240
     /**
258
-     * Handles the conference left event, if we have a handler we invoke it.
241
+     * Handles the conference left event.
259
      * @private
242
      * @private
260
      */
243
      */
261
     _handleConferenceLeft() {
244
     _handleConferenceLeft() {
262
-        this.handler()
263
-            .then(maybeRedirectToWelcomePage)
264
-            .catch(function(err){
265
-                console.log(err);
266
-            });
245
+        this._disconnectAndShowFeedback()
246
+            .then(() => {
247
+                APP.API.notifyReadyToClose();
248
+                maybeRedirectToWelcomePage();
249
+            }).catch(console.log);
250
+    }
251
+
252
+    /**
253
+     * Executes connection.disconnect and shows the feedback dialog
254
+     * @returns Promise.
255
+     * @private
256
+     */
257
+    _disconnectAndShowFeedback() {
258
+        APP.UI.hideRingOverLay();
259
+        connection.disconnect();
260
+        APP.API.notifyConferenceLeft(APP.conference.roomName);
261
+        return (this.requestFeedback) ?
262
+            APP.UI.requestFeedback() : Promise.resolve();
267
     }
263
     }
268
 }
264
 }
269
 
265
 
1780
      * requested
1776
      * requested
1781
      */
1777
      */
1782
     hangup (requestFeedback = false) {
1778
     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) {
1779
         if (!conferenceLeftListener) {
1803
             conferenceLeftListener
1780
             conferenceLeftListener
1804
-                = new ConferenceLeftListener(disconnect, errCallback);
1781
+                = new HangupConferenceLeftListener(requestFeedback);
1805
         }
1782
         }
1806
 
1783
 
1807
-        room.leave().catch(errCallback);
1784
+        //FIXME: Do something for the use case when we are not receiving
1785
+        // CONFERENCE_LEFT for some reason
1786
+        room.leave();
1808
     }
1787
     }
1809
 };
1788
 };

Notiek ielāde…
Atcelt
Saglabāt