import Statistics from '../statistics/statistics'; const logger = require('@jitsi/logger').getLogger(__filename); /** * Creates new instance of ComponentsVersions which will be discovering * the versions of conferencing system components in given * JitsiConference. * @param conference JitsiConference instance which will be used to * listen for focus presence updates. * @constructor */ export default function ComponentsVersions(conference) { this.versions = {}; this.conference = conference; this.conference.addCommandListener( 'versions', this.processVersions.bind(this)); } ComponentsVersions.prototype.processVersions = function(versions, mucResource, mucJid) { if (!this.conference.isFocus(mucJid)) { logger.warn( `Received versions not from the focus user: ${versions}`, mucJid); return; } const log = []; versions.children.forEach(component => { const name = component.attributes.name; const version = component.value; if (this.versions[name] !== version) { this.versions[name] = version; logger.info(`Got ${name} version: ${version}`); log.push({ id: 'component_version', component: name, version }); } }); // logs versions to stats if (log.length > 0) { Statistics.sendLog(JSON.stringify(log)); } }; /** * Obtains the version of conferencing system component. * @param componentName the name of the component for which we want to obtain * the version. * @returns {String} which describes the version of the component identified by * given componentName or undefined if not found. */ ComponentsVersions.prototype.getComponentVersion = function(componentName) { return this.versions[componentName]; };