ref(iframe_api): ESLint support for API.js
This commit is contained in:
parent
e7a3ee477d
commit
0f42f18100
|
@ -1360,10 +1360,15 @@ export default {
|
|||
room.on(ConferenceEvents.CONNECTION_RESTORED, () => {
|
||||
APP.UI.markVideoInterrupted(false);
|
||||
});
|
||||
room.on(ConferenceEvents.MESSAGE_RECEIVED, (id, text, ts) => {
|
||||
room.on(ConferenceEvents.MESSAGE_RECEIVED, (id, body, ts) => {
|
||||
let nick = getDisplayName(id);
|
||||
APP.API.notifyReceivedChatMessage(id, nick, text, ts);
|
||||
APP.UI.addMessage(id, nick, text, ts);
|
||||
APP.API.notifyReceivedChatMessage({
|
||||
id,
|
||||
nick,
|
||||
body,
|
||||
ts
|
||||
});
|
||||
APP.UI.addMessage(id, nick, body, ts);
|
||||
});
|
||||
APP.UI.addListener(UIEvents.MESSAGE_CREATED, (message) => {
|
||||
APP.API.notifySendingChatMessage(message);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
'extends': '../../react/.eslintrc.js'
|
||||
};
|
|
@ -1,11 +1,5 @@
|
|||
/* global APP, getConfigParamsFromUrl */
|
||||
|
||||
/**
|
||||
* Implements API class that communicates with external api class
|
||||
* and provides interface to access Jitsi Meet features by external
|
||||
* applications that embed Jitsi Meet
|
||||
*/
|
||||
|
||||
import postisInit from 'postis';
|
||||
|
||||
import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
|
||||
|
@ -13,27 +7,27 @@ import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
|
|||
/**
|
||||
* List of the available commands.
|
||||
* @type {{
|
||||
* displayName: inputDisplayNameHandler,
|
||||
* toggleAudio: toggleAudio,
|
||||
* toggleVideo: toggleVideo,
|
||||
* toggleFilmStrip: toggleFilmStrip,
|
||||
* toggleChat: toggleChat,
|
||||
* toggleContactList: toggleContactList
|
||||
* }}
|
||||
* displayName: inputDisplayNameHandler,
|
||||
* toggleAudio: toggleAudio,
|
||||
* toggleVideo: toggleVideo,
|
||||
* toggleFilmStrip: toggleFilmStrip,
|
||||
* toggleChat: toggleChat,
|
||||
* toggleContactList: toggleContactList
|
||||
* }}
|
||||
*/
|
||||
let commands = {};
|
||||
|
||||
let hashParams = getConfigParamsFromUrl();
|
||||
const hashParams = getConfigParamsFromUrl();
|
||||
|
||||
/**
|
||||
* JitsiMeetExternalAPI id - unique for a webpage.
|
||||
*/
|
||||
let jitsi_meet_external_api_id = hashParams.jitsi_meet_external_api_id;
|
||||
const jitsiMeetExternalApiId = hashParams.jitsi_meet_external_api_id;
|
||||
|
||||
/**
|
||||
* Object that will execute sendMessage
|
||||
*/
|
||||
let target = window.opener ? window.opener : window.parent;
|
||||
const target = window.opener ? window.opener : window.parent;
|
||||
|
||||
/**
|
||||
* Postis instance. Used to communicate with the external application.
|
||||
|
@ -64,56 +58,64 @@ function toggleScreenSharing() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes supported commands.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
function initCommands() {
|
||||
commands = {
|
||||
"display-name":
|
||||
'display-name':
|
||||
APP.conference.changeLocalDisplayName.bind(APP.conference),
|
||||
"toggle-audio": APP.conference.toggleAudioMuted.bind(APP.conference),
|
||||
"toggle-video": APP.conference.toggleVideoMuted.bind(APP.conference),
|
||||
"toggle-film-strip": APP.UI.toggleFilmstrip,
|
||||
"toggle-chat": APP.UI.toggleChat,
|
||||
"toggle-contact-list": APP.UI.toggleContactList,
|
||||
"toggle-share-screen": toggleScreenSharing,
|
||||
"video-hangup": () => APP.conference.hangup(),
|
||||
"email": APP.conference.changeLocalEmail,
|
||||
"avatar-url": APP.conference.changeLocalAvatarUrl,
|
||||
"remote-control-event": event =>
|
||||
APP.remoteControl.onRemoteControlAPIEvent(event)
|
||||
'toggle-audio': APP.conference.toggleAudioMuted.bind(APP.conference),
|
||||
'toggle-video': APP.conference.toggleVideoMuted.bind(APP.conference),
|
||||
'toggle-film-strip': APP.UI.toggleFilmstrip,
|
||||
'toggle-chat': APP.UI.toggleChat,
|
||||
'toggle-contact-list': APP.UI.toggleContactList,
|
||||
'toggle-share-screen': toggleScreenSharing,
|
||||
'video-hangup': () => APP.conference.hangup(),
|
||||
'email': APP.conference.changeLocalEmail,
|
||||
'avatar-url': APP.conference.changeLocalAvatarUrl,
|
||||
'remote-control-event':
|
||||
event => APP.remoteControl.onRemoteControlAPIEvent(event)
|
||||
};
|
||||
Object.keys(commands).forEach(function (key) {
|
||||
postis.listen(key, args => commands[key](...args));
|
||||
});
|
||||
Object.keys(commands).forEach(
|
||||
key => postis.listen(key, args => commands[key](...args)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends message to the external application.
|
||||
* @param message {object}
|
||||
* @param method {string}
|
||||
* @param params {object} the object that will be sent as JSON string
|
||||
*
|
||||
* @param {Object} message - The message to be sent.
|
||||
* @returns {void}
|
||||
*/
|
||||
function sendMessage(message) {
|
||||
if(enabled) {
|
||||
if (enabled) {
|
||||
postis.send(message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the API should be enabled or not.
|
||||
*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function shouldBeEnabled () {
|
||||
return (typeof jitsi_meet_external_api_id === "number");
|
||||
function shouldBeEnabled() {
|
||||
return typeof jitsiMeetExternalApiId === 'number';
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends event object to the external application that has been subscribed
|
||||
* for that event.
|
||||
* @param name the name event
|
||||
* @param object data associated with the event
|
||||
*
|
||||
* @param {string} name - The name event.
|
||||
* @param {Object} object - Data associated with the event.
|
||||
* @returns {void}
|
||||
*/
|
||||
function triggerEvent (name, object) {
|
||||
if(enabled) {
|
||||
sendMessage({method: name, params: object});
|
||||
function triggerEvent(name, object) {
|
||||
if (enabled) {
|
||||
sendMessage({ method: name,
|
||||
params: object });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -130,24 +132,27 @@ function onScreenSharingEnable(enabled = false) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements API class that communicates with external api class
|
||||
* and provides interface to access Jitsi Meet features by external
|
||||
* applications that embed Jitsi Meet
|
||||
*/
|
||||
class API {
|
||||
/**
|
||||
* Constructs new instance
|
||||
* @constructor
|
||||
*/
|
||||
constructor() { }
|
||||
|
||||
/**
|
||||
* Initializes the APIConnector. Setups message event listeners that will
|
||||
* receive information from external applications that embed Jitsi Meet.
|
||||
* It also sends a message to the external application that APIConnector
|
||||
* is initialized.
|
||||
* @param options {object}
|
||||
* @param forceEnable {boolean} if true the module will be enabled.
|
||||
*
|
||||
* @param {Object} options - Optional parameters.
|
||||
* @param {boolean} options.forceEnable - If true the module will be
|
||||
* enabled.
|
||||
* @returns {void}
|
||||
*/
|
||||
init (options = {}) {
|
||||
if(!shouldBeEnabled() && !options.forceEnable)
|
||||
init(options = {}) {
|
||||
if (!shouldBeEnabled() && !options.forceEnable) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!enabled) {
|
||||
APP.conference.addListener(
|
||||
|
@ -156,122 +161,150 @@ class API {
|
|||
enabled = true;
|
||||
}
|
||||
|
||||
if(!postis) {
|
||||
if (!postis) {
|
||||
this._initPostis();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* initializes postis library.
|
||||
* Initializes postis library.
|
||||
*
|
||||
* @returns {void}
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
_initPostis() {
|
||||
let postisOptions = {
|
||||
const postisOptions = {
|
||||
window: target
|
||||
};
|
||||
if(typeof jitsi_meet_external_api_id === "number")
|
||||
|
||||
if (typeof jitsiMeetExternalApiId === 'number') {
|
||||
postisOptions.scope
|
||||
= "jitsi_meet_external_api_" + jitsi_meet_external_api_id;
|
||||
= `jitsi_meet_external_api_${jitsiMeetExternalApiId}`;
|
||||
}
|
||||
postis = postisInit(postisOptions);
|
||||
initCommands();
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that message was sent.
|
||||
* @param {string} body message body
|
||||
*
|
||||
* @param {string} body - Message body.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifySendingChatMessage (body) {
|
||||
triggerEvent("outgoing-message", {"message": body});
|
||||
notifySendingChatMessage(body) {
|
||||
triggerEvent('outgoing-message', { 'message': body });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* message was received.
|
||||
* @param {string} id user id
|
||||
* @param {string} nick user nickname
|
||||
* @param {string} body message body
|
||||
* @param {number} ts message creation timestamp
|
||||
*
|
||||
* @param {Object} options - Object with the message properties.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyReceivedChatMessage (id, nick, body, ts) {
|
||||
notifyReceivedChatMessage(options = {}) {
|
||||
const { id, nick, body, ts } = options;
|
||||
|
||||
if (APP.conference.isLocalId(id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
triggerEvent(
|
||||
"incoming-message",
|
||||
{"from": id, "nick": nick, "message": body, "stamp": ts}
|
||||
'incoming-message',
|
||||
{ 'from': id,
|
||||
'nick': nick,
|
||||
'message': body,
|
||||
'stamp': ts }
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* user joined the conference.
|
||||
* @param {string} id user id
|
||||
*
|
||||
* @param {string} id - User id.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyUserJoined (id) {
|
||||
triggerEvent("participant-joined", {id});
|
||||
notifyUserJoined(id) {
|
||||
triggerEvent('participant-joined', { id });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* user left the conference.
|
||||
* @param {string} id user id
|
||||
*
|
||||
* @param {string} id - User id.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyUserLeft (id) {
|
||||
triggerEvent("participant-left", {id});
|
||||
notifyUserLeft(id) {
|
||||
triggerEvent('participant-left', { id });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* user changed their nickname.
|
||||
* @param {string} id user id
|
||||
* @param {string} displayName user nickname
|
||||
*
|
||||
* @param {string} id - User id.
|
||||
* @param {string} displayName - User nickname.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyDisplayNameChanged (id, displayName) {
|
||||
triggerEvent("display-name-change", {id, displayname: displayName});
|
||||
notifyDisplayNameChanged(id, displayName) {
|
||||
triggerEvent('display-name-change', { id,
|
||||
displayname: displayName });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* the conference has been joined.
|
||||
*
|
||||
* @param {string} room - The room name.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyConferenceJoined(room) {
|
||||
triggerEvent('video-conference-joined', { roomName: room });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* user changed their nickname.
|
||||
* @param {string} id user id
|
||||
* @param {string} displayName user nickname
|
||||
*
|
||||
* @param {string} room - User id.
|
||||
* @param {string} displayName - User nickname.
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyConferenceJoined (room) {
|
||||
triggerEvent("video-conference-joined", {roomName: room});
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* user changed their nickname.
|
||||
* @param {string} id user id
|
||||
* @param {string} displayName user nickname
|
||||
*/
|
||||
notifyConferenceLeft (room) {
|
||||
triggerEvent("video-conference-left", {roomName: room});
|
||||
notifyConferenceLeft(room) {
|
||||
triggerEvent('video-conference-left', { roomName: room });
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify external application (if API is enabled) that
|
||||
* we are ready to be closed.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
notifyReadyToClose () {
|
||||
triggerEvent("video-ready-to-close", {});
|
||||
notifyReadyToClose() {
|
||||
triggerEvent('video-ready-to-close', {});
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends remote control event.
|
||||
* @param {RemoteControlEvent} event the remote control event.
|
||||
*
|
||||
* @param {RemoteControlEvent} event - The remote control event.
|
||||
* @returns {void}
|
||||
*/
|
||||
sendRemoteControlEvent(event) {
|
||||
sendMessage({method: "remote-control-event", params: event});
|
||||
sendMessage({ method: 'remote-control-event',
|
||||
params: event });
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the listeners.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
dispose () {
|
||||
if(enabled) {
|
||||
dispose() {
|
||||
if (enabled) {
|
||||
postis.destroy();
|
||||
APP.conference.removeListener(
|
||||
JitsiMeetConferenceEvents.DESKTOP_SHARING_ENABLED_CHANGED,
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
module.exports = {
|
||||
'extends': '../../../react/.eslintrc.js'
|
||||
};
|
Loading…
Reference in New Issue