Sfoglia il codice sorgente

ref(remotecontrol): To use transport module instead of API

j8
hristoterezov 8 anni fa
parent
commit
54388b6a0a

+ 1
- 1
conference.js Vedi File

603
 
603
 
604
                 APP.store.dispatch(showDesktopSharingButton());
604
                 APP.store.dispatch(showDesktopSharingButton());
605
 
605
 
606
-                APP.remoteControl.init();
607
                 this._createRoom(tracks);
606
                 this._createRoom(tracks);
607
+                APP.remoteControl.init();
608
 
608
 
609
                 if (UIUtil.isButtonEnabled('contacts')
609
                 if (UIUtil.isButtonEnabled('contacts')
610
                     && !interfaceConfig.filmStripOnly) {
610
                     && !interfaceConfig.filmStripOnly) {

+ 1
- 13
modules/API/API.js Vedi File

35
         'toggle-share-screen': toggleScreenSharing,
35
         'toggle-share-screen': toggleScreenSharing,
36
         'video-hangup': () => APP.conference.hangup(),
36
         'video-hangup': () => APP.conference.hangup(),
37
         'email': APP.conference.changeLocalEmail,
37
         'email': APP.conference.changeLocalEmail,
38
-        'avatar-url': APP.conference.changeLocalAvatarUrl,
39
-        'remote-control-event':
40
-            event => APP.remoteControl.onRemoteControlAPIEvent(event)
38
+        'avatar-url': APP.conference.changeLocalAvatarUrl
41
     };
39
     };
42
     transport.on('event', event => {
40
     transport.on('event', event => {
43
         const { name, data } = event;
41
         const { name, data } = event;
237
         this._sendEvent('video-ready-to-close', {});
235
         this._sendEvent('video-ready-to-close', {});
238
     }
236
     }
239
 
237
 
240
-    /**
241
-     * Sends remote control event.
242
-     *
243
-     * @param {RemoteControlEvent} event - The remote control event.
244
-     * @returns {void}
245
-     */
246
-    sendRemoteControlEvent(event) {
247
-        this._sendEvent('remote-control-event', event);
248
-    }
249
-
250
     /**
238
     /**
251
      * Disposes the allocated resources.
239
      * Disposes the allocated resources.
252
      *
240
      *

+ 65
- 11
modules/remotecontrol/Receiver.js Vedi File

1
-/* global APP, JitsiMeetJS, interfaceConfig */
2
-const logger = require("jitsi-meet-logger").getLogger(__filename);
3
-import {DISCO_REMOTE_CONTROL_FEATURE, REMOTE_CONTROL_EVENT_TYPE, EVENT_TYPES,
4
-    PERMISSIONS_ACTIONS} from "../../service/remotecontrol/Constants";
5
-import RemoteControlParticipant from "./RemoteControlParticipant";
1
+/* global APP, JitsiMeetJS, interfaceConfig, config */
6
 import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
2
 import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
3
+import {
4
+    DISCO_REMOTE_CONTROL_FEATURE,
5
+    EVENT_TYPES,
6
+    PERMISSIONS_ACTIONS,
7
+    REMOTE_CONTROL_EVENT_TYPE
8
+} from "../../service/remotecontrol/Constants";
9
+import { transport } from '../transport';
10
+
11
+import RemoteControlParticipant from "./RemoteControlParticipant";
7
 
12
 
13
+const logger = require("jitsi-meet-logger").getLogger(__filename);
8
 const ConferenceEvents = JitsiMeetJS.events.conference;
14
 const ConferenceEvents = JitsiMeetJS.events.conference;
9
 
15
 
10
 /**
16
 /**
25
             = this._onRemoteControlEvent.bind(this);
31
             = this._onRemoteControlEvent.bind(this);
26
         this._userLeftListener = this._onUserLeft.bind(this);
32
         this._userLeftListener = this._onUserLeft.bind(this);
27
         this._hangupListener = this._onHangup.bind(this);
33
         this._hangupListener = this._onHangup.bind(this);
34
+        // We expect here that even if we receive the supported event earlier
35
+        // it will be cached and we'll receive it.
36
+        transport.on('event', data => {
37
+            if(data.name === REMOTE_CONTROL_EVENT_TYPE) {
38
+                this._onRemoteControlAPIEvent(data.event);
39
+
40
+                return true;
41
+            }
42
+
43
+            return false;
44
+        });
28
     }
45
     }
29
 
46
 
30
     /**
47
     /**
31
      * Enables / Disables the remote control
48
      * Enables / Disables the remote control
32
      * @param {boolean} enabled the new state.
49
      * @param {boolean} enabled the new state.
33
      */
50
      */
34
-    enable(enabled) {
51
+    _enable(enabled) {
35
         if(this.enabled === enabled) {
52
         if(this.enabled === enabled) {
36
             return;
53
             return;
37
         }
54
         }
73
         this.controller = null;
90
         this.controller = null;
74
         APP.conference.removeConferenceListener(ConferenceEvents.USER_LEFT,
91
         APP.conference.removeConferenceListener(ConferenceEvents.USER_LEFT,
75
             this._userLeftListener);
92
             this._userLeftListener);
76
-        APP.API.sendRemoteControlEvent({
77
-            type: EVENT_TYPES.stop
93
+        transport.sendEvent({
94
+            name: REMOTE_CONTROL_EVENT_TYPE,
95
+            event: {
96
+                type: EVENT_TYPES.stop
97
+            }
78
         });
98
         });
79
         if(!dontShowDialog) {
99
         if(!dontShowDialog) {
80
             APP.UI.messageHandler.openMessageDialog(
100
             APP.UI.messageHandler.openMessageDialog(
113
             if(this.controller === null
133
             if(this.controller === null
114
                 && remoteControlEvent.type === EVENT_TYPES.permissions
134
                 && remoteControlEvent.type === EVENT_TYPES.permissions
115
                 && remoteControlEvent.action === PERMISSIONS_ACTIONS.request) {
135
                 && remoteControlEvent.action === PERMISSIONS_ACTIONS.request) {
136
+                // FIXME: Maybe use transport.sendRequest in this case???
116
                 remoteControlEvent.userId = participant.getId();
137
                 remoteControlEvent.userId = participant.getId();
117
                 remoteControlEvent.userJID = participant.getJid();
138
                 remoteControlEvent.userJID = participant.getJid();
118
                 remoteControlEvent.displayName = participant.getDisplayName()
139
                 remoteControlEvent.displayName = participant.getDisplayName()
125
                 this._stop();
146
                 this._stop();
126
                 return;
147
                 return;
127
             }
148
             }
128
-            APP.API.sendRemoteControlEvent(remoteControlEvent);
149
+            transport.sendEvent({
150
+                name: REMOTE_CONTROL_EVENT_TYPE,
151
+                event: remoteControlEvent
152
+            });
129
         } else if(event.type === REMOTE_CONTROL_EVENT_TYPE) {
153
         } else if(event.type === REMOTE_CONTROL_EVENT_TYPE) {
130
             logger.log("Remote control event is ignored because remote "
154
             logger.log("Remote control event is ignored because remote "
131
                 + "control is disabled", event);
155
                 + "control is disabled", event);
133
     }
157
     }
134
 
158
 
135
     /**
159
     /**
136
-     * Handles remote control permission events received from the API module.
160
+     * Handles remote control permission events.
137
      * @param {String} userId the user id of the participant related to the
161
      * @param {String} userId the user id of the participant related to the
138
      * event.
162
      * event.
139
      * @param {PERMISSIONS_ACTIONS} action the action related to the event.
163
      * @param {PERMISSIONS_ACTIONS} action the action related to the event.
173
         });
197
         });
174
     }
198
     }
175
 
199
 
200
+    /**
201
+     * Handles remote control events from the external app. Currently only
202
+     * events with type = EVENT_TYPES.supported or EVENT_TYPES.permissions
203
+     * @param {RemoteControlEvent} event the remote control event.
204
+     */
205
+    _onRemoteControlAPIEvent(event) {
206
+        switch(event.type) {
207
+            case EVENT_TYPES.supported:
208
+                this._onRemoteControlSupported();
209
+                break;
210
+            case EVENT_TYPES.permissions:
211
+                this._onRemoteControlPermissionsEvent(
212
+                    event.userId, event.action);
213
+                break;
214
+        }
215
+    }
216
+
217
+    /**
218
+     * Handles events for support for executing remote control events into
219
+     * the wrapper application.
220
+     */
221
+    _onRemoteControlSupported() {
222
+        logger.log("Remote Control supported.");
223
+        if(!config.disableRemoteControl) {
224
+            this._enable(true);
225
+        } else {
226
+            logger.log("Remote Control disabled.");
227
+        }
228
+    }
229
+
176
     /**
230
     /**
177
      * Calls the stop method if the other side have left.
231
      * Calls the stop method if the other side have left.
178
      * @param {string} id - the user id for the participant that have left
232
      * @param {string} id - the user id for the participant that have left
187
      * Handles hangup events. Disables the receiver.
241
      * Handles hangup events. Disables the receiver.
188
      */
242
      */
189
     _onHangup() {
243
     _onHangup() {
190
-        this.enable(false);
244
+        this._enable(false);
191
     }
245
     }
192
 }
246
 }

+ 9
- 47
modules/remotecontrol/RemoteControl.js Vedi File

1
 /* global APP, config */
1
 /* global APP, config */
2
-const logger = require("jitsi-meet-logger").getLogger(__filename);
3
-import Controller from "./Controller";
4
-import Receiver from "./Receiver";
5
-import {EVENT_TYPES, DISCO_REMOTE_CONTROL_FEATURE}
6
-    from "../../service/remotecontrol/Constants";
2
+import { DISCO_REMOTE_CONTROL_FEATURE }
3
+    from '../../service/remotecontrol/Constants';
4
+
5
+import Controller from './Controller';
6
+import Receiver from './Receiver';
7
+
8
+const logger = require('jitsi-meet-logger').getLogger(__filename);
7
 
9
 
8
 /**
10
 /**
9
  * Implements the remote control functionality.
11
  * Implements the remote control functionality.
15
      */
17
      */
16
     constructor() {
18
     constructor() {
17
         this.controller = new Controller();
19
         this.controller = new Controller();
18
-        this.receiver = new Receiver();
19
-        this.enabled = false;
20
         this.initialized = false;
20
         this.initialized = false;
21
     }
21
     }
22
 
22
 
23
     /**
23
     /**
24
      * Initializes the remote control - checks if the remote control should be
24
      * Initializes the remote control - checks if the remote control should be
25
-     * enabled or not, initializes the API module.
25
+     * enabled or not.
26
      */
26
      */
27
     init() {
27
     init() {
28
         if(config.disableRemoteControl || this.initialized
28
         if(config.disableRemoteControl || this.initialized
31
         }
31
         }
32
         logger.log("Initializing remote control.");
32
         logger.log("Initializing remote control.");
33
         this.initialized = true;
33
         this.initialized = true;
34
-        APP.API.init({
35
-            forceEnable: true,
36
-        });
37
         this.controller.enable(true);
34
         this.controller.enable(true);
38
-        if(this.enabled) { // supported message came before init.
39
-            this._onRemoteControlSupported();
40
-        }
41
-    }
42
-
43
-    /**
44
-     * Handles remote control events from the API module. Currently only events
45
-     * with type = EVENT_TYPES.supported or EVENT_TYPES.permissions
46
-     * @param {RemoteControlEvent} event the remote control event.
47
-     */
48
-    onRemoteControlAPIEvent(event) {
49
-        switch(event.type) {
50
-            case EVENT_TYPES.supported:
51
-                this._onRemoteControlSupported();
52
-                break;
53
-            case EVENT_TYPES.permissions:
54
-                this.receiver._onRemoteControlPermissionsEvent(
55
-                    event.userId, event.action);
56
-                break;
57
-        }
58
-    }
59
-
60
-    /**
61
-     * Handles API event for support for executing remote control events into
62
-     * the wrapper application.
63
-     */
64
-    _onRemoteControlSupported() {
65
-        logger.log("Remote Control supported.");
66
-        if(!config.disableRemoteControl) {
67
-            this.enabled = true;
68
-            if(this.initialized) {
69
-                this.receiver.enable(true);
70
-            }
71
-        } else {
72
-            logger.log("Remote Control disabled.");
73
-        }
35
+        this.receiver = new Receiver();
74
     }
36
     }
75
 
37
 
76
     /**
38
     /**

Loading…
Annulla
Salva