Browse Source

ref(iframe_api): Use EventEmitter

j8
hristoterezov 8 years ago
parent
commit
d416fd8c0f
2 changed files with 24 additions and 24 deletions
  1. 6
    2
      doc/api.md
  2. 18
    22
      modules/API/external/external_api.js

+ 6
- 2
doc/api.md View File

123
 ```javascript
123
 ```javascript
124
 api.executeCommands(commands)
124
 api.executeCommands(commands)
125
 ```
125
 ```
126
-The `commands` parameter is an object with the names of the commands as keys and the arguments for the commands asvalues:
126
+The `commands` parameter is an object with the names of the commands as keys and the arguments for the commands as values:
127
 ```javascript
127
 ```javascript
128
 api.executeCommands({displayName: ['nickname'], toggleAudio: []});
128
 api.executeCommands({displayName: ['nickname'], toggleAudio: []});
129
 ```
129
 ```
130
 
130
 
131
 You can add event listeners to the embedded Jitsi Meet using the `addEventListener` method.
131
 You can add event listeners to the embedded Jitsi Meet using the `addEventListener` method.
132
+*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods (`addListener` or `on`).*
132
 ```javascript
133
 ```javascript
133
 api.addEventListener(event, listener)
134
 api.addEventListener(event, listener)
134
 ```
135
 ```
198
 You can also add multiple event listeners by using `addEventListeners`.
199
 You can also add multiple event listeners by using `addEventListeners`.
199
 This method requires one argument of type Object. The object argument must
200
 This method requires one argument of type Object. The object argument must
200
 have the names of the events as keys and the listeners of the events as values.
201
 have the names of the events as keys and the listeners of the events as values.
202
+*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.*
201
 
203
 
202
 ```javascript
204
 ```javascript
203
 function incomingMessageListener(object)
205
 function incomingMessageListener(object)
216
 ```
218
 ```
217
 
219
 
218
 If you want to remove a listener you can use `removeEventListener` method with argument the name of the event.
220
 If you want to remove a listener you can use `removeEventListener` method with argument the name of the event.
219
-
221
+*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods( `removeListener`).*
220
 ```javascript
222
 ```javascript
221
 api.removeEventListener("incomingMessage");
223
 api.removeEventListener("incomingMessage");
222
 ```
224
 ```
223
 
225
 
224
 If you want to remove more than one event you can use `removeEventListeners` method with an Array with the names of the events as an argument.
226
 If you want to remove more than one event you can use `removeEventListeners` method with an Array with the names of the events as an argument.
227
+*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.*
225
 ```javascript
228
 ```javascript
226
 api.removeEventListeners(["incomingMessage", "outgoingMessageListener"]);
229
 api.removeEventListeners(["incomingMessage", "outgoingMessageListener"]);
227
 ```
230
 ```
240
 
243
 
241
 [config.js]: https://github.com/jitsi/jitsi-meet/blob/master/config.js
244
 [config.js]: https://github.com/jitsi/jitsi-meet/blob/master/config.js
242
 [interface_config.js]: https://github.com/jitsi/jitsi-meet/blob/master/interface_config.js
245
 [interface_config.js]: https://github.com/jitsi/jitsi-meet/blob/master/interface_config.js
246
+[EventEmitter]: https://nodejs.org/api/events.html

+ 18
- 22
modules/API/external/external_api.js View File

1
 const logger = require("jitsi-meet-logger").getLogger(__filename);
1
 const logger = require("jitsi-meet-logger").getLogger(__filename);
2
 import postisInit from "postis";
2
 import postisInit from "postis";
3
+import EventEmitter from "events";
3
 
4
 
4
 /**
5
 /**
5
  * The minimum width for the Jitsi Meet frame
6
  * The minimum width for the Jitsi Meet frame
99
 /**
100
 /**
100
  * The IFrame API interface class.
101
  * The IFrame API interface class.
101
  */
102
  */
102
-class JitsiMeetExternalAPI {
103
+class JitsiMeetExternalAPI extends EventEmitter {
103
     /**
104
     /**
104
      * Constructs new API instance. Creates iframe element that loads
105
      * Constructs new API instance. Creates iframe element that loads
105
      * Jitsi Meet.
106
      * Jitsi Meet.
119
      */
120
      */
120
     constructor(domain, room_name, width, height, parentNode,
121
     constructor(domain, room_name, width, height, parentNode,
121
         configOverwrite, interfaceConfigOverwrite, noSsl, jwt) {
122
         configOverwrite, interfaceConfigOverwrite, noSsl, jwt) {
123
+        super();
124
+
122
         if (!width || width < MIN_WIDTH) {
125
         if (!width || width < MIN_WIDTH) {
123
             width = MIN_WIDTH;
126
             width = MIN_WIDTH;
124
         }
127
         }
283
      * readyToClose - all hangup operations are completed and Jitsi Meet is
286
      * readyToClose - all hangup operations are completed and Jitsi Meet is
284
      * ready to be disposed.
287
      * ready to be disposed.
285
      * @param object
288
      * @param object
289
+     *
290
+     * NOTE: This method is not removed for backward comatability purposes.
286
      */
291
      */
287
     addEventListeners(object) {
292
     addEventListeners(object) {
288
         for (var i in object) {
293
         for (var i in object) {
336
      * }}
341
      * }}
337
      * @param event the name of the event
342
      * @param event the name of the event
338
      * @param listener the listener
343
      * @param listener the listener
344
+     *
345
+     * NOTE: This method is not removed for backward comatability purposes.
339
      */
346
      */
340
     addEventListener(event, listener) {
347
     addEventListener(event, listener) {
341
-        if (!(event in events)) {
342
-            logger.error("Not supported event name.");
343
-            return;
344
-        }
345
-        // We cannot remove listeners from postis that's why we are handling the
346
-        // callback that way.
347
-        if (!this.postisListeners[event]) {
348
-            this.postis.listen(events[event], data => {
349
-                if((event in this.eventHandlers) &&
350
-                    typeof this.eventHandlers[event] === "function")
351
-                    this.eventHandlers[event].call(null, data);
352
-            });
353
-            this.postisListeners[event] = true;
354
-        }
355
-        this.eventHandlers[event] = listener;
348
+        this.on(event, listener);
356
     }
349
     }
357
 
350
 
358
     /**
351
     /**
359
      * Removes event listener.
352
      * Removes event listener.
360
      * @param event the name of the event.
353
      * @param event the name of the event.
354
+     * NOTE: This method is not removed for backward comatability purposes.
361
      */
355
      */
362
     removeEventListener(event) {
356
     removeEventListener(event) {
363
-        if(!(event in this.eventHandlers))
364
-        {
365
-            logger.error("The event " + event + " is not registered.");
366
-            return;
367
-        }
368
-        delete this.eventHandlers[event];
357
+        this.removeListeners(event);
369
     }
358
     }
370
 
359
 
371
     /**
360
     /**
372
      * Removes event listeners.
361
      * Removes event listeners.
373
      * @param events array with the names of the events.
362
      * @param events array with the names of the events.
363
+     * NOTE: This method is not removed for backward comatability purposes.
374
      */
364
      */
375
     removeEventListeners(events) {
365
     removeEventListeners(events) {
376
         for(var i = 0; i < events.length; i++) {
366
         for(var i = 0; i < events.length; i++) {
395
             changeParticipantNumber.bind(null, this, 1));
385
             changeParticipantNumber.bind(null, this, 1));
396
         this.postis.listen("participant-left",
386
         this.postis.listen("participant-left",
397
             changeParticipantNumber.bind(null, this, -1));
387
             changeParticipantNumber.bind(null, this, -1));
388
+
389
+        for (const eventName in events) {
390
+            const postisMethod = events[eventName];
391
+            this.postis.listen(postisMethod,
392
+                (...args) => this.emit(eventName, ...args));
393
+        }
398
     }
394
     }
399
 
395
 
400
     /**
396
     /**

Loading…
Cancel
Save