ref(iframe_api): Use EventEmitter
This commit is contained in:
parent
78119df2db
commit
d416fd8c0f
|
@ -129,6 +129,7 @@ api.executeCommands({displayName: ['nickname'], toggleAudio: []});
|
|||
```
|
||||
|
||||
You can add event listeners to the embedded Jitsi Meet using the `addEventListener` method.
|
||||
*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods (`addListener` or `on`).*
|
||||
```javascript
|
||||
api.addEventListener(event, listener)
|
||||
```
|
||||
|
@ -198,6 +199,7 @@ changes. The listener will receive an object with the following structure:
|
|||
You can also add multiple event listeners by using `addEventListeners`.
|
||||
This method requires one argument of type Object. The object argument must
|
||||
have the names of the events as keys and the listeners of the events as values.
|
||||
*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.*
|
||||
|
||||
```javascript
|
||||
function incomingMessageListener(object)
|
||||
|
@ -216,12 +218,13 @@ api.addEventListeners({
|
|||
```
|
||||
|
||||
If you want to remove a listener you can use `removeEventListener` method with argument the name of the event.
|
||||
|
||||
*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods( `removeListener`).*
|
||||
```javascript
|
||||
api.removeEventListener("incomingMessage");
|
||||
```
|
||||
|
||||
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.
|
||||
*NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.*
|
||||
```javascript
|
||||
api.removeEventListeners(["incomingMessage", "outgoingMessageListener"]);
|
||||
```
|
||||
|
@ -240,3 +243,4 @@ NOTE: It's a good practice to remove the conference before the page is unloaded.
|
|||
|
||||
[config.js]: https://github.com/jitsi/jitsi-meet/blob/master/config.js
|
||||
[interface_config.js]: https://github.com/jitsi/jitsi-meet/blob/master/interface_config.js
|
||||
[EventEmitter]: https://nodejs.org/api/events.html
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const logger = require("jitsi-meet-logger").getLogger(__filename);
|
||||
import postisInit from "postis";
|
||||
import EventEmitter from "events";
|
||||
|
||||
/**
|
||||
* The minimum width for the Jitsi Meet frame
|
||||
|
@ -99,7 +100,7 @@ function configToURLParamsArray(config) {
|
|||
/**
|
||||
* The IFrame API interface class.
|
||||
*/
|
||||
class JitsiMeetExternalAPI {
|
||||
class JitsiMeetExternalAPI extends EventEmitter {
|
||||
/**
|
||||
* Constructs new API instance. Creates iframe element that loads
|
||||
* Jitsi Meet.
|
||||
|
@ -119,6 +120,8 @@ class JitsiMeetExternalAPI {
|
|||
*/
|
||||
constructor(domain, room_name, width, height, parentNode,
|
||||
configOverwrite, interfaceConfigOverwrite, noSsl, jwt) {
|
||||
super();
|
||||
|
||||
if (!width || width < MIN_WIDTH) {
|
||||
width = MIN_WIDTH;
|
||||
}
|
||||
|
@ -283,6 +286,8 @@ class JitsiMeetExternalAPI {
|
|||
* readyToClose - all hangup operations are completed and Jitsi Meet is
|
||||
* ready to be disposed.
|
||||
* @param object
|
||||
*
|
||||
* NOTE: This method is not removed for backward comatability purposes.
|
||||
*/
|
||||
addEventListeners(object) {
|
||||
for (var i in object) {
|
||||
|
@ -336,41 +341,26 @@ class JitsiMeetExternalAPI {
|
|||
* }}
|
||||
* @param event the name of the event
|
||||
* @param listener the listener
|
||||
*
|
||||
* NOTE: This method is not removed for backward comatability purposes.
|
||||
*/
|
||||
addEventListener(event, listener) {
|
||||
if (!(event in events)) {
|
||||
logger.error("Not supported event name.");
|
||||
return;
|
||||
}
|
||||
// We cannot remove listeners from postis that's why we are handling the
|
||||
// callback that way.
|
||||
if (!this.postisListeners[event]) {
|
||||
this.postis.listen(events[event], data => {
|
||||
if((event in this.eventHandlers) &&
|
||||
typeof this.eventHandlers[event] === "function")
|
||||
this.eventHandlers[event].call(null, data);
|
||||
});
|
||||
this.postisListeners[event] = true;
|
||||
}
|
||||
this.eventHandlers[event] = listener;
|
||||
this.on(event, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes event listener.
|
||||
* @param event the name of the event.
|
||||
* NOTE: This method is not removed for backward comatability purposes.
|
||||
*/
|
||||
removeEventListener(event) {
|
||||
if(!(event in this.eventHandlers))
|
||||
{
|
||||
logger.error("The event " + event + " is not registered.");
|
||||
return;
|
||||
}
|
||||
delete this.eventHandlers[event];
|
||||
this.removeListeners(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes event listeners.
|
||||
* @param events array with the names of the events.
|
||||
* NOTE: This method is not removed for backward comatability purposes.
|
||||
*/
|
||||
removeEventListeners(events) {
|
||||
for(var i = 0; i < events.length; i++) {
|
||||
|
@ -395,6 +385,12 @@ class JitsiMeetExternalAPI {
|
|||
changeParticipantNumber.bind(null, this, 1));
|
||||
this.postis.listen("participant-left",
|
||||
changeParticipantNumber.bind(null, this, -1));
|
||||
|
||||
for (const eventName in events) {
|
||||
const postisMethod = events[eventName];
|
||||
this.postis.listen(postisMethod,
|
||||
(...args) => this.emit(eventName, ...args));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue