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.
|
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
|
```javascript
|
||||||
api.addEventListener(event, listener)
|
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`.
|
You can also add multiple event listeners by using `addEventListeners`.
|
||||||
This method requires one argument of type Object. The object argument must
|
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.
|
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
|
```javascript
|
||||||
function incomingMessageListener(object)
|
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.
|
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
|
```javascript
|
||||||
api.removeEventListener("incomingMessage");
|
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.
|
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
|
```javascript
|
||||||
api.removeEventListeners(["incomingMessage", "outgoingMessageListener"]);
|
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
|
[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
|
[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);
|
const logger = require("jitsi-meet-logger").getLogger(__filename);
|
||||||
import postisInit from "postis";
|
import postisInit from "postis";
|
||||||
|
import EventEmitter from "events";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The minimum width for the Jitsi Meet frame
|
* The minimum width for the Jitsi Meet frame
|
||||||
|
@ -99,7 +100,7 @@ function configToURLParamsArray(config) {
|
||||||
/**
|
/**
|
||||||
* The IFrame API interface class.
|
* The IFrame API interface class.
|
||||||
*/
|
*/
|
||||||
class JitsiMeetExternalAPI {
|
class JitsiMeetExternalAPI extends EventEmitter {
|
||||||
/**
|
/**
|
||||||
* Constructs new API instance. Creates iframe element that loads
|
* Constructs new API instance. Creates iframe element that loads
|
||||||
* Jitsi Meet.
|
* Jitsi Meet.
|
||||||
|
@ -119,6 +120,8 @@ class JitsiMeetExternalAPI {
|
||||||
*/
|
*/
|
||||||
constructor(domain, room_name, width, height, parentNode,
|
constructor(domain, room_name, width, height, parentNode,
|
||||||
configOverwrite, interfaceConfigOverwrite, noSsl, jwt) {
|
configOverwrite, interfaceConfigOverwrite, noSsl, jwt) {
|
||||||
|
super();
|
||||||
|
|
||||||
if (!width || width < MIN_WIDTH) {
|
if (!width || width < MIN_WIDTH) {
|
||||||
width = MIN_WIDTH;
|
width = MIN_WIDTH;
|
||||||
}
|
}
|
||||||
|
@ -283,6 +286,8 @@ class JitsiMeetExternalAPI {
|
||||||
* readyToClose - all hangup operations are completed and Jitsi Meet is
|
* readyToClose - all hangup operations are completed and Jitsi Meet is
|
||||||
* ready to be disposed.
|
* ready to be disposed.
|
||||||
* @param object
|
* @param object
|
||||||
|
*
|
||||||
|
* NOTE: This method is not removed for backward comatability purposes.
|
||||||
*/
|
*/
|
||||||
addEventListeners(object) {
|
addEventListeners(object) {
|
||||||
for (var i in object) {
|
for (var i in object) {
|
||||||
|
@ -336,41 +341,26 @@ class JitsiMeetExternalAPI {
|
||||||
* }}
|
* }}
|
||||||
* @param event the name of the event
|
* @param event the name of the event
|
||||||
* @param listener the listener
|
* @param listener the listener
|
||||||
|
*
|
||||||
|
* NOTE: This method is not removed for backward comatability purposes.
|
||||||
*/
|
*/
|
||||||
addEventListener(event, listener) {
|
addEventListener(event, listener) {
|
||||||
if (!(event in events)) {
|
this.on(event, listener);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes event listener.
|
* Removes event listener.
|
||||||
* @param event the name of the event.
|
* @param event the name of the event.
|
||||||
|
* NOTE: This method is not removed for backward comatability purposes.
|
||||||
*/
|
*/
|
||||||
removeEventListener(event) {
|
removeEventListener(event) {
|
||||||
if(!(event in this.eventHandlers))
|
this.removeListeners(event);
|
||||||
{
|
|
||||||
logger.error("The event " + event + " is not registered.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
delete this.eventHandlers[event];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes event listeners.
|
* Removes event listeners.
|
||||||
* @param events array with the names of the events.
|
* @param events array with the names of the events.
|
||||||
|
* NOTE: This method is not removed for backward comatability purposes.
|
||||||
*/
|
*/
|
||||||
removeEventListeners(events) {
|
removeEventListeners(events) {
|
||||||
for(var i = 0; i < events.length; i++) {
|
for(var i = 0; i < events.length; i++) {
|
||||||
|
@ -395,6 +385,12 @@ class JitsiMeetExternalAPI {
|
||||||
changeParticipantNumber.bind(null, this, 1));
|
changeParticipantNumber.bind(null, this, 1));
|
||||||
this.postis.listen("participant-left",
|
this.postis.listen("participant-left",
|
||||||
changeParticipantNumber.bind(null, this, -1));
|
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