Browse Source

fix(ScreenShare): remove listener for native events when app unmounts

master
Alex Bumbu 3 years ago
parent
commit
724391648e
No account linked to committer's email address
1 changed files with 22 additions and 1 deletions
  1. 22
    1
      react/features/mobile/external-api/middleware.js

+ 22
- 1
react/features/mobile/external-api/middleware.js View File

@@ -5,7 +5,7 @@ import { NativeEventEmitter, NativeModules } from 'react-native';
5 5
 
6 6
 import { ENDPOINT_TEXT_MESSAGE_NAME } from '../../../../modules/API/constants';
7 7
 import { appNavigate } from '../../app/actions';
8
-import { APP_WILL_MOUNT } from '../../base/app/actionTypes';
8
+import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../../base/app/actionTypes';
9 9
 import {
10 10
     CONFERENCE_FAILED,
11 11
     CONFERENCE_JOINED,
@@ -93,6 +93,9 @@ MiddlewareRegistry.register(store => next => action => {
93 93
     case APP_WILL_MOUNT:
94 94
         _registerForNativeEvents(store);
95 95
         break;
96
+    case APP_WILL_UNMOUNT:
97
+        _unregisterForNativeEvents();
98
+        break;
96 99
     case CONFERENCE_FAILED: {
97 100
         const { error, ...data } = action;
98 101
 
@@ -349,6 +352,24 @@ function _registerForNativeEvents(store) {
349 352
 
350 353
 }
351 354
 
355
+/**
356
+ * Unregister for events sent from the native side via NativeEventEmitter.
357
+ *
358
+ * @private
359
+ * @returns {void}
360
+ */
361
+function _unregisterForNativeEvents() {
362
+    eventEmitter.removeAllListeners(ExternalAPI.HANG_UP);
363
+    eventEmitter.removeAllListeners(ExternalAPI.SET_AUDIO_MUTED);
364
+    eventEmitter.removeAllListeners(ExternalAPI.SET_VIDEO_MUTED);
365
+    eventEmitter.removeAllListeners(ExternalAPI.SEND_ENDPOINT_TEXT_MESSAGE);
366
+    eventEmitter.removeAllListeners(ExternalAPI.TOGGLE_SCREEN_SHARE);
367
+    eventEmitter.removeAllListeners(ExternalAPI.RETRIEVE_PARTICIPANTS_INFO);
368
+    eventEmitter.removeAllListeners(ExternalAPI.OPEN_CHAT);
369
+    eventEmitter.removeAllListeners(ExternalAPI.CLOSE_CHAT);
370
+    eventEmitter.removeAllListeners(ExternalAPI.SEND_CHAT_MESSAGE);
371
+}
372
+
352 373
 /**
353 374
  * Registers for endpoint messages sent on conference data channel.
354 375
  *

Loading…
Cancel
Save