ref(analytics): centralize all event names (#2272)
* ref(analytics): centralize all event names * squash: fix typo and alpha ordering * squash: rename file to AnalyticsEvents to parallel lib-jitsi-meet
This commit is contained in:
parent
ee1ec42463
commit
9b67e796bd
|
@ -15,7 +15,21 @@ import UIEvents from './service/UI/UIEvents';
|
||||||
import UIUtil from './modules/UI/util/UIUtil';
|
import UIUtil from './modules/UI/util/UIUtil';
|
||||||
import * as JitsiMeetConferenceEvents from './ConferenceEvents';
|
import * as JitsiMeetConferenceEvents from './ConferenceEvents';
|
||||||
|
|
||||||
import { initAnalytics, sendAnalyticsEvent } from './react/features/analytics';
|
import {
|
||||||
|
CONFERENCE_AUDIO_INITIALLY_MUTED,
|
||||||
|
CONFERENCE_SHARING_DESKTOP_START,
|
||||||
|
CONFERENCE_SHARING_DESKTOP_STOP,
|
||||||
|
CONFERENCE_VIDEO_INITIALLY_MUTED,
|
||||||
|
DEVICE_LIST_CHANGED_AUDIO_MUTED,
|
||||||
|
DEVICE_LIST_CHANGED_VIDEO_MUTED,
|
||||||
|
SELECT_PARTICIPANT_FAILED,
|
||||||
|
SETTINGS_CHANGE_DEVICE_AUDIO_OUT,
|
||||||
|
SETTINGS_CHANGE_DEVICE_AUDIO_IN,
|
||||||
|
SETTINGS_CHANGE_DEVICE_VIDEO,
|
||||||
|
STREAM_SWITCH_DELAY,
|
||||||
|
initAnalytics,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from './react/features/analytics';
|
||||||
|
|
||||||
import EventEmitter from 'events';
|
import EventEmitter from 'events';
|
||||||
|
|
||||||
|
@ -724,12 +738,12 @@ export default {
|
||||||
.then(([ tracks, con ]) => {
|
.then(([ tracks, con ]) => {
|
||||||
tracks.forEach(track => {
|
tracks.forEach(track => {
|
||||||
if (track.isAudioTrack() && this.isLocalAudioMuted()) {
|
if (track.isAudioTrack() && this.isLocalAudioMuted()) {
|
||||||
sendAnalyticsEvent('conference.audio.initiallyMuted');
|
sendAnalyticsEvent(CONFERENCE_AUDIO_INITIALLY_MUTED);
|
||||||
logger.log('Audio mute: initially muted');
|
logger.log('Audio mute: initially muted');
|
||||||
track.mute();
|
track.mute();
|
||||||
} else if (track.isVideoTrack()
|
} else if (track.isVideoTrack()
|
||||||
&& this.isLocalVideoMuted()) {
|
&& this.isLocalVideoMuted()) {
|
||||||
sendAnalyticsEvent('conference.video.initiallyMuted');
|
sendAnalyticsEvent(CONFERENCE_VIDEO_INITIALLY_MUTED);
|
||||||
logger.log('Video mute: initially muted');
|
logger.log('Video mute: initially muted');
|
||||||
track.mute();
|
track.mute();
|
||||||
}
|
}
|
||||||
|
@ -1434,8 +1448,7 @@ export default {
|
||||||
promise = createLocalTracksF({ devices: [ 'video' ] })
|
promise = createLocalTracksF({ devices: [ 'video' ] })
|
||||||
.then(([ stream ]) => this.useVideoStream(stream))
|
.then(([ stream ]) => this.useVideoStream(stream))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(CONFERENCE_SHARING_DESKTOP_STOP);
|
||||||
'conference.sharingDesktop.stop');
|
|
||||||
logger.log('switched back to local video');
|
logger.log('switched back to local video');
|
||||||
if (!this.localVideo && wasVideoMuted) {
|
if (!this.localVideo && wasVideoMuted) {
|
||||||
return Promise.reject('No local video to be muted!');
|
return Promise.reject('No local video to be muted!');
|
||||||
|
@ -1614,7 +1627,7 @@ export default {
|
||||||
.then(stream => this.useVideoStream(stream))
|
.then(stream => this.useVideoStream(stream))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.videoSwitchInProgress = false;
|
this.videoSwitchInProgress = false;
|
||||||
sendAnalyticsEvent('conference.sharingDesktop.start');
|
sendAnalyticsEvent(CONFERENCE_SHARING_DESKTOP_START);
|
||||||
logger.log('sharing local desktop');
|
logger.log('sharing local desktop');
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
|
@ -1910,8 +1923,7 @@ export default {
|
||||||
|
|
||||||
room.selectParticipant(id);
|
room.selectParticipant(id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(SELECT_PARTICIPANT_FAILED);
|
||||||
'selectParticipant.failed');
|
|
||||||
reportError(e);
|
reportError(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -2151,7 +2163,7 @@ export default {
|
||||||
// Longer delays will be caused by something else and will just
|
// Longer delays will be caused by something else and will just
|
||||||
// poison the data.
|
// poison the data.
|
||||||
if (delay < 2000) {
|
if (delay < 2000) {
|
||||||
sendAnalyticsEvent('stream.switch.delay', { value: delay });
|
sendAnalyticsEvent(STREAM_SWITCH_DELAY, { value: delay });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2178,7 +2190,7 @@ export default {
|
||||||
cameraDeviceId => {
|
cameraDeviceId => {
|
||||||
const videoWasMuted = this.isLocalVideoMuted();
|
const videoWasMuted = this.isLocalVideoMuted();
|
||||||
|
|
||||||
sendAnalyticsEvent('settings.changeDevice.video');
|
sendAnalyticsEvent(SETTINGS_CHANGE_DEVICE_VIDEO);
|
||||||
createLocalTracksF({
|
createLocalTracksF({
|
||||||
devices: [ 'video' ],
|
devices: [ 'video' ],
|
||||||
cameraDeviceId,
|
cameraDeviceId,
|
||||||
|
@ -2217,8 +2229,7 @@ export default {
|
||||||
micDeviceId => {
|
micDeviceId => {
|
||||||
const audioWasMuted = this.isLocalAudioMuted();
|
const audioWasMuted = this.isLocalAudioMuted();
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(SETTINGS_CHANGE_DEVICE_AUDIO_IN);
|
||||||
'settings.changeDevice.audioIn');
|
|
||||||
createLocalTracksF({
|
createLocalTracksF({
|
||||||
devices: [ 'audio' ],
|
devices: [ 'audio' ],
|
||||||
cameraDeviceId: null,
|
cameraDeviceId: null,
|
||||||
|
@ -2248,8 +2259,7 @@ export default {
|
||||||
APP.UI.addListener(
|
APP.UI.addListener(
|
||||||
UIEvents.AUDIO_OUTPUT_DEVICE_CHANGED,
|
UIEvents.AUDIO_OUTPUT_DEVICE_CHANGED,
|
||||||
audioOutputDeviceId => {
|
audioOutputDeviceId => {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(SETTINGS_CHANGE_DEVICE_AUDIO_OUT);
|
||||||
'settings.changeDevice.audioOut');
|
|
||||||
APP.settings.setAudioOutputDeviceId(audioOutputDeviceId)
|
APP.settings.setAudioOutputDeviceId(audioOutputDeviceId)
|
||||||
.then(() => logger.log('changed audio output device'))
|
.then(() => logger.log('changed audio output device'))
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
@ -2514,7 +2524,7 @@ export default {
|
||||||
// If audio was muted before, or we unplugged current device
|
// If audio was muted before, or we unplugged current device
|
||||||
// and selected new one, then mute new audio track.
|
// and selected new one, then mute new audio track.
|
||||||
if (audioWasMuted) {
|
if (audioWasMuted) {
|
||||||
sendAnalyticsEvent('deviceListChanged.audio.muted');
|
sendAnalyticsEvent(DEVICE_LIST_CHANGED_AUDIO_MUTED);
|
||||||
logger.log('Audio mute: device list changed');
|
logger.log('Audio mute: device list changed');
|
||||||
muteLocalAudio(true);
|
muteLocalAudio(true);
|
||||||
}
|
}
|
||||||
|
@ -2522,7 +2532,7 @@ export default {
|
||||||
// If video was muted before, or we unplugged current device
|
// If video was muted before, or we unplugged current device
|
||||||
// and selected new one, then mute new video track.
|
// and selected new one, then mute new video track.
|
||||||
if (!this.isSharingScreen && videoWasMuted) {
|
if (!this.isSharingScreen && videoWasMuted) {
|
||||||
sendAnalyticsEvent('deviceListChanged.video.muted');
|
sendAnalyticsEvent(DEVICE_LIST_CHANGED_VIDEO_MUTED);
|
||||||
logger.log('Video mute: device list changed');
|
logger.log('Video mute: device list changed');
|
||||||
muteLocalVideo(true);
|
muteLocalVideo(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
|
import * as JitsiMeetConferenceEvents from '../../ConferenceEvents';
|
||||||
import { parseJWTFromURLParams } from '../../react/features/base/jwt';
|
import { parseJWTFromURLParams } from '../../react/features/base/jwt';
|
||||||
import { sendAnalyticsEvent } from '../../react/features/analytics';
|
import {
|
||||||
|
API_TOGGLE_AUDIO,
|
||||||
|
API_TOGGLE_VIDEO,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../react/features/analytics';
|
||||||
import { getJitsiMeetTransport } from '../transport';
|
import { getJitsiMeetTransport } from '../transport';
|
||||||
|
|
||||||
import { API_ID } from './constants';
|
import { API_ID } from './constants';
|
||||||
|
@ -55,12 +59,12 @@ function initCommands() {
|
||||||
'display-name':
|
'display-name':
|
||||||
APP.conference.changeLocalDisplayName.bind(APP.conference),
|
APP.conference.changeLocalDisplayName.bind(APP.conference),
|
||||||
'toggle-audio': () => {
|
'toggle-audio': () => {
|
||||||
sendAnalyticsEvent('api.toggle.audio');
|
sendAnalyticsEvent(API_TOGGLE_AUDIO);
|
||||||
logger.log('Audio toggle: API command received');
|
logger.log('Audio toggle: API command received');
|
||||||
APP.conference.toggleAudioMuted(false /* no UI */);
|
APP.conference.toggleAudioMuted(false /* no UI */);
|
||||||
},
|
},
|
||||||
'toggle-video': () => {
|
'toggle-video': () => {
|
||||||
sendAnalyticsEvent('api.toggle.video');
|
sendAnalyticsEvent(API_TOGGLE_VIDEO);
|
||||||
logger.log('Video toggle: API command received');
|
logger.log('Video toggle: API command received');
|
||||||
APP.conference.toggleVideoMuted(false /* no UI */);
|
APP.conference.toggleVideoMuted(false /* no UI */);
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,6 +24,10 @@ import {
|
||||||
JitsiRecordingStatus
|
JitsiRecordingStatus
|
||||||
} from '../../../react/features/base/lib-jitsi-meet';
|
} from '../../../react/features/base/lib-jitsi-meet';
|
||||||
import {
|
import {
|
||||||
|
RECORDING_CANCELED,
|
||||||
|
RECORDING_CLICKED,
|
||||||
|
RECORDING_STARTED,
|
||||||
|
RECORDING_STOPPED,
|
||||||
sendAnalyticsEvent
|
sendAnalyticsEvent
|
||||||
} from '../../../react/features/analytics';
|
} from '../../../react/features/analytics';
|
||||||
import { setToolboxEnabled } from '../../../react/features/toolbox';
|
import { setToolboxEnabled } from '../../../react/features/toolbox';
|
||||||
|
@ -467,7 +471,7 @@ const Recording = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendAnalyticsEvent('recording.clicked');
|
sendAnalyticsEvent(RECORDING_CLICKED);
|
||||||
switch (this.currentState) {
|
switch (this.currentState) {
|
||||||
case JitsiRecordingStatus.ON:
|
case JitsiRecordingStatus.ON:
|
||||||
case JitsiRecordingStatus.RETRYING:
|
case JitsiRecordingStatus.RETRYING:
|
||||||
|
@ -475,7 +479,7 @@ const Recording = {
|
||||||
_showStopRecordingPrompt(this.recordingType).then(
|
_showStopRecordingPrompt(this.recordingType).then(
|
||||||
() => {
|
() => {
|
||||||
this.eventEmitter.emit(UIEvents.RECORDING_TOGGLED);
|
this.eventEmitter.emit(UIEvents.RECORDING_TOGGLED);
|
||||||
sendAnalyticsEvent('recording.stopped');
|
sendAnalyticsEvent(RECORDING_STOPPED);
|
||||||
},
|
},
|
||||||
() => {}); // eslint-disable-line no-empty-function
|
() => {}); // eslint-disable-line no-empty-function
|
||||||
break;
|
break;
|
||||||
|
@ -488,11 +492,11 @@ const Recording = {
|
||||||
this.eventEmitter.emit(
|
this.eventEmitter.emit(
|
||||||
UIEvents.RECORDING_TOGGLED,
|
UIEvents.RECORDING_TOGGLED,
|
||||||
{ streamId });
|
{ streamId });
|
||||||
sendAnalyticsEvent('recording.started');
|
sendAnalyticsEvent(RECORDING_STARTED);
|
||||||
})
|
})
|
||||||
.catch(reason => {
|
.catch(reason => {
|
||||||
if (reason === APP.UI.messageHandler.CANCEL) {
|
if (reason === APP.UI.messageHandler.CANCEL) {
|
||||||
sendAnalyticsEvent('recording.canceled');
|
sendAnalyticsEvent(RECORDING_CANCELED);
|
||||||
} else {
|
} else {
|
||||||
logger.error(reason);
|
logger.error(reason);
|
||||||
}
|
}
|
||||||
|
@ -502,7 +506,7 @@ const Recording = {
|
||||||
this.eventEmitter.emit(
|
this.eventEmitter.emit(
|
||||||
UIEvents.RECORDING_TOGGLED,
|
UIEvents.RECORDING_TOGGLED,
|
||||||
{ token: this.predefinedToken });
|
{ token: this.predefinedToken });
|
||||||
sendAnalyticsEvent('recording.started');
|
sendAnalyticsEvent(RECORDING_STARTED);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -511,11 +515,11 @@ const Recording = {
|
||||||
this.eventEmitter.emit(
|
this.eventEmitter.emit(
|
||||||
UIEvents.RECORDING_TOGGLED,
|
UIEvents.RECORDING_TOGGLED,
|
||||||
{ token });
|
{ token });
|
||||||
sendAnalyticsEvent('recording.started');
|
sendAnalyticsEvent(RECORDING_STARTED);
|
||||||
})
|
})
|
||||||
.catch(reason => {
|
.catch(reason => {
|
||||||
if (reason === APP.UI.messageHandler.CANCEL) {
|
if (reason === APP.UI.messageHandler.CANCEL) {
|
||||||
sendAnalyticsEvent('recording.canceled');
|
sendAnalyticsEvent(RECORDING_CANCELED);
|
||||||
} else {
|
} else {
|
||||||
logger.error(reason);
|
logger.error(reason);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,17 @@ import VideoLayout from '../videolayout/VideoLayout';
|
||||||
import LargeContainer from '../videolayout/LargeContainer';
|
import LargeContainer from '../videolayout/LargeContainer';
|
||||||
import Filmstrip from '../videolayout/Filmstrip';
|
import Filmstrip from '../videolayout/Filmstrip';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../../react/features/analytics';
|
import {
|
||||||
|
SHARED_VIDEO_ALREADY_SHARED,
|
||||||
|
SHARED_VIDEO_AUDIO_MUTED,
|
||||||
|
SHARED_VIDEO_AUDIO_UNMUTED,
|
||||||
|
SHARED_VIDEO_CANCELED,
|
||||||
|
SHARED_VIDEO_PAUSED,
|
||||||
|
SHARED_VIDEO_STARTED,
|
||||||
|
SHARED_VIDEO_STOPPED,
|
||||||
|
SHARED_VIDEO_VOLUME_CHANGED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../../react/features/analytics';
|
||||||
import {
|
import {
|
||||||
participantJoined,
|
participantJoined,
|
||||||
participantLeft
|
participantLeft
|
||||||
|
@ -85,11 +95,11 @@ export default class SharedVideoManager {
|
||||||
url => {
|
url => {
|
||||||
this.emitter.emit(
|
this.emitter.emit(
|
||||||
UIEvents.UPDATE_SHARED_VIDEO, url, 'start');
|
UIEvents.UPDATE_SHARED_VIDEO, url, 'start');
|
||||||
sendAnalyticsEvent('sharedvideo.started');
|
sendAnalyticsEvent(SHARED_VIDEO_STARTED);
|
||||||
},
|
},
|
||||||
err => {
|
err => {
|
||||||
logger.log('SHARED VIDEO CANCELED', err);
|
logger.log('SHARED VIDEO CANCELED', err);
|
||||||
sendAnalyticsEvent('sharedvideo.canceled');
|
sendAnalyticsEvent(SHARED_VIDEO_CANCELED);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -109,7 +119,7 @@ export default class SharedVideoManager {
|
||||||
}
|
}
|
||||||
this.emitter.emit(
|
this.emitter.emit(
|
||||||
UIEvents.UPDATE_SHARED_VIDEO, this.url, 'stop');
|
UIEvents.UPDATE_SHARED_VIDEO, this.url, 'stop');
|
||||||
sendAnalyticsEvent('sharedvideo.stoped');
|
sendAnalyticsEvent(SHARED_VIDEO_STOPPED);
|
||||||
},
|
},
|
||||||
() => {}); // eslint-disable-line no-empty-function
|
() => {}); // eslint-disable-line no-empty-function
|
||||||
} else {
|
} else {
|
||||||
|
@ -117,7 +127,7 @@ export default class SharedVideoManager {
|
||||||
descriptionKey: 'dialog.alreadySharedVideoMsg',
|
descriptionKey: 'dialog.alreadySharedVideoMsg',
|
||||||
titleKey: 'dialog.alreadySharedVideoTitle'
|
titleKey: 'dialog.alreadySharedVideoTitle'
|
||||||
});
|
});
|
||||||
sendAnalyticsEvent('sharedvideo.alreadyshared');
|
sendAnalyticsEvent(SHARED_VIDEO_ALREADY_SHARED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +236,7 @@ export default class SharedVideoManager {
|
||||||
// eslint-disable-next-line eqeqeq
|
// eslint-disable-next-line eqeqeq
|
||||||
} else if (event.data == YT.PlayerState.PAUSED) {
|
} else if (event.data == YT.PlayerState.PAUSED) {
|
||||||
self.smartAudioUnmute();
|
self.smartAudioUnmute();
|
||||||
sendAnalyticsEvent('sharedvideo.paused');
|
sendAnalyticsEvent(SHARED_VIDEO_PAUSED);
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line eqeqeq
|
// eslint-disable-next-line eqeqeq
|
||||||
self.fireSharedVideoEvent(event.data == YT.PlayerState.PAUSED);
|
self.fireSharedVideoEvent(event.data == YT.PlayerState.PAUSED);
|
||||||
|
@ -258,7 +268,7 @@ export default class SharedVideoManager {
|
||||||
} else if (event.data.volume <= 0 || event.data.muted) {
|
} else if (event.data.volume <= 0 || event.data.muted) {
|
||||||
self.smartAudioUnmute();
|
self.smartAudioUnmute();
|
||||||
}
|
}
|
||||||
sendAnalyticsEvent('sharedvideo.volumechanged');
|
sendAnalyticsEvent(SHARED_VIDEO_VOLUME_CHANGED);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.onPlayerReady = function(event) {
|
window.onPlayerReady = function(event) {
|
||||||
|
@ -564,7 +574,7 @@ export default class SharedVideoManager {
|
||||||
if (APP.conference.isLocalAudioMuted()
|
if (APP.conference.isLocalAudioMuted()
|
||||||
&& !this.mutedWithUserInteraction
|
&& !this.mutedWithUserInteraction
|
||||||
&& !this.isSharedVideoVolumeOn()) {
|
&& !this.isSharedVideoVolumeOn()) {
|
||||||
sendAnalyticsEvent('sharedvideo.audio.unmuted');
|
sendAnalyticsEvent(SHARED_VIDEO_AUDIO_UNMUTED);
|
||||||
logger.log('Shared video: audio unmuted');
|
logger.log('Shared video: audio unmuted');
|
||||||
this.emitter.emit(UIEvents.AUDIO_MUTED, false, false);
|
this.emitter.emit(UIEvents.AUDIO_MUTED, false, false);
|
||||||
this.showMicMutedPopup(false);
|
this.showMicMutedPopup(false);
|
||||||
|
@ -578,7 +588,7 @@ export default class SharedVideoManager {
|
||||||
smartAudioMute() {
|
smartAudioMute() {
|
||||||
if (!APP.conference.isLocalAudioMuted()
|
if (!APP.conference.isLocalAudioMuted()
|
||||||
&& this.isSharedVideoVolumeOn()) {
|
&& this.isSharedVideoVolumeOn()) {
|
||||||
sendAnalyticsEvent('sharedvideo.audio.muted');
|
sendAnalyticsEvent(SHARED_VIDEO_AUDIO_MUTED);
|
||||||
logger.log('Shared video: audio muted');
|
logger.log('Shared video: audio muted');
|
||||||
this.emitter.emit(UIEvents.AUDIO_MUTED, true, false);
|
this.emitter.emit(UIEvents.AUDIO_MUTED, true, false);
|
||||||
this.showMicMutedPopup(true);
|
this.showMicMutedPopup(true);
|
||||||
|
|
|
@ -3,7 +3,11 @@ import UIUtil from '../../util/UIUtil';
|
||||||
import UIEvents from '../../../../service/UI/UIEvents';
|
import UIEvents from '../../../../service/UI/UIEvents';
|
||||||
import Settings from '../../../settings/Settings';
|
import Settings from '../../../settings/Settings';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../../../react/features/analytics';
|
import {
|
||||||
|
AUTHENTICATE_LOGIN_CLICKED,
|
||||||
|
AUTHENTICATE_LOGOUT_CLICKED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../../../react/features/analytics';
|
||||||
|
|
||||||
const sidePanelsContainerId = 'sideToolbarContainer';
|
const sidePanelsContainerId = 'sideToolbarContainer';
|
||||||
const htmlStr = `
|
const htmlStr = `
|
||||||
|
@ -91,7 +95,7 @@ export default {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function loginClicked() {
|
function loginClicked() {
|
||||||
sendAnalyticsEvent('authenticate.login.clicked');
|
sendAnalyticsEvent(AUTHENTICATE_LOGIN_CLICKED);
|
||||||
emitter.emit(UIEvents.AUTH_CLICKED);
|
emitter.emit(UIEvents.AUTH_CLICKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +108,7 @@ export default {
|
||||||
const titleKey = 'dialog.logoutTitle';
|
const titleKey = 'dialog.logoutTitle';
|
||||||
const msgKey = 'dialog.logoutQuestion';
|
const msgKey = 'dialog.logoutQuestion';
|
||||||
|
|
||||||
sendAnalyticsEvent('authenticate.logout.clicked');
|
sendAnalyticsEvent(AUTHENTICATE_LOGOUT_CLICKED);
|
||||||
|
|
||||||
// Ask for confirmation
|
// Ask for confirmation
|
||||||
APP.UI.messageHandler.openTwoButtonDialog({
|
APP.UI.messageHandler.openTwoButtonDialog({
|
||||||
|
|
|
@ -5,7 +5,10 @@ import { setFilmstripVisibility } from '../../../react/features/filmstrip';
|
||||||
import UIEvents from '../../../service/UI/UIEvents';
|
import UIEvents from '../../../service/UI/UIEvents';
|
||||||
import UIUtil from '../util/UIUtil';
|
import UIUtil from '../util/UIUtil';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../../react/features/analytics';
|
import {
|
||||||
|
TOOLBAR_FILMSTRIP_TOGGLED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../../react/features/analytics';
|
||||||
|
|
||||||
const Filmstrip = {
|
const Filmstrip = {
|
||||||
/**
|
/**
|
||||||
|
@ -150,7 +153,7 @@ const Filmstrip = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (sendAnalytics) {
|
if (sendAnalytics) {
|
||||||
sendAnalyticsEvent('toolbar.filmstrip.toggled');
|
sendAnalyticsEvent(TOOLBAR_FILMSTRIP_TOGGLED);
|
||||||
}
|
}
|
||||||
this.filmstrip.toggleClass('hidden');
|
this.filmstrip.toggleClass('hidden');
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
/* global APP, $, interfaceConfig */
|
/* global APP, $, interfaceConfig */
|
||||||
|
|
||||||
import { toggleDialog } from '../../react/features/base/dialog';
|
import { toggleDialog } from '../../react/features/base/dialog';
|
||||||
import { sendAnalyticsEvent } from '../../react/features/analytics';
|
import {
|
||||||
|
SHORTCUT_HELP,
|
||||||
|
SHORTCUT_SPEAKER_STATS_CLICKED,
|
||||||
|
SHORTCUT_TALK_CLICKED,
|
||||||
|
SHORTCUT_TALK_RELEASED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../react/features/analytics';
|
||||||
import { KeyboardShortcutsDialog }
|
import { KeyboardShortcutsDialog }
|
||||||
from '../../react/features/keyboard-shortcuts';
|
from '../../react/features/keyboard-shortcuts';
|
||||||
import { SpeakerStats } from '../../react/features/speaker-stats';
|
import { SpeakerStats } from '../../react/features/speaker-stats';
|
||||||
|
@ -66,7 +72,7 @@ const KeyboardShortcut = {
|
||||||
|| $(':focus').is('textarea'))) {
|
|| $(':focus').is('textarea'))) {
|
||||||
if (this._getKeyboardKey(e).toUpperCase() === ' ') {
|
if (this._getKeyboardKey(e).toUpperCase() === ' ') {
|
||||||
if (APP.conference.isLocalAudioMuted()) {
|
if (APP.conference.isLocalAudioMuted()) {
|
||||||
sendAnalyticsEvent('shortcut.talk.released');
|
sendAnalyticsEvent(SHORTCUT_TALK_RELEASED);
|
||||||
logger.log('Talk shortcut released');
|
logger.log('Talk shortcut released');
|
||||||
APP.conference.muteAudio(false);
|
APP.conference.muteAudio(false);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +175,7 @@ const KeyboardShortcut = {
|
||||||
*/
|
*/
|
||||||
_initGlobalShortcuts() {
|
_initGlobalShortcuts() {
|
||||||
this.registerShortcut('?', null, () => {
|
this.registerShortcut('?', null, () => {
|
||||||
sendAnalyticsEvent('shortcut.shortcut.help');
|
sendAnalyticsEvent(SHORTCUT_HELP);
|
||||||
APP.store.dispatch(toggleDialog(KeyboardShortcutsDialog, {
|
APP.store.dispatch(toggleDialog(KeyboardShortcutsDialog, {
|
||||||
shortcutDescriptions: _shortcutsHelp
|
shortcutDescriptions: _shortcutsHelp
|
||||||
}));
|
}));
|
||||||
|
@ -178,7 +184,7 @@ const KeyboardShortcut = {
|
||||||
// register SPACE shortcut in two steps to insure visibility of help
|
// register SPACE shortcut in two steps to insure visibility of help
|
||||||
// message
|
// message
|
||||||
this.registerShortcut(' ', null, () => {
|
this.registerShortcut(' ', null, () => {
|
||||||
sendAnalyticsEvent('shortcut.talk.clicked');
|
sendAnalyticsEvent(SHORTCUT_TALK_CLICKED);
|
||||||
logger.log('Talk shortcut pressed');
|
logger.log('Talk shortcut pressed');
|
||||||
APP.conference.muteAudio(true);
|
APP.conference.muteAudio(true);
|
||||||
});
|
});
|
||||||
|
@ -186,7 +192,7 @@ const KeyboardShortcut = {
|
||||||
|
|
||||||
if (!interfaceConfig.filmStripOnly) {
|
if (!interfaceConfig.filmStripOnly) {
|
||||||
this.registerShortcut('T', null, () => {
|
this.registerShortcut('T', null, () => {
|
||||||
sendAnalyticsEvent('shortcut.speakerStats.clicked');
|
sendAnalyticsEvent(SHORTCUT_SPEAKER_STATS_CLICKED);
|
||||||
APP.store.dispatch(toggleDialog(SpeakerStats, {
|
APP.store.dispatch(toggleDialog(SpeakerStats, {
|
||||||
conference: APP.conference
|
conference: APP.conference
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -0,0 +1,663 @@
|
||||||
|
/**
|
||||||
|
* The target of a pin or unpin event was the local participant.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* pinned.local
|
||||||
|
* unpinned.local
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const _LOCAL = 'local';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The target of a pin or unpin event was a remote participant.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* pinned.remote
|
||||||
|
* unpinned.remote
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const _REMOTE = 'remote';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio mute toggled was triggered through the jitsi-meet api.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const API_TOGGLE_AUDIO = 'api.toggle.audio';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video mute toggling was triggered through the jitsi-meet api.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const API_TOGGLE_VIDEO = 'api.toggle.video';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio only mode has been turned off.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const AUDIO_ONLY_DISABLED = 'audioonly.disabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The login button in the profile pane was clicked.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const AUTHENTICATE_LOGIN_CLICKED = 'authenticate.login.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The logout button in the profile pane was clicked.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const AUTHENTICATE_LOGOUT_CLICKED = 'authenticate.logout.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performing a mute or unmute event based on a callkit setMuted event.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* callkit.audio.muted
|
||||||
|
* callkit.audio.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CALLKIT_AUDIO_ = 'callkit.audio';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggling remote and local video display when entering or exiting backgrounded
|
||||||
|
* app state.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CALLKIT_BACKGROUND_VIDEO_MUTED = 'callkit.background.video.muted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant joined audio muted.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CONFERENCE_AUDIO_INITIALLY_MUTED
|
||||||
|
= 'conference.audio.initiallyMuted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant has started desktop sharing.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CONFERENCE_SHARING_DESKTOP_START
|
||||||
|
= 'conference.sharingDesktop.start';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant was desktop sharing but has stopped.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CONFERENCE_SHARING_DESKTOP_STOP
|
||||||
|
= 'conference.sharingDesktop.stop';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant joined video muted.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const CONFERENCE_VIDEO_INITIALLY_MUTED
|
||||||
|
= 'conference.video.initiallyMuted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The list of known input/output devices was changed and new audio input has
|
||||||
|
* been used and should start as muted.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const DEVICE_LIST_CHANGED_AUDIO_MUTED = 'deviceListChanged.audio.muted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The list of known devices was changed and new video input has been used
|
||||||
|
* and should start as muted.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const DEVICE_LIST_CHANGED_VIDEO_MUTED = 'deviceListChanged.video.muted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The feedback dialog is displayed.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const FEEDBACK_OPEN = 'feedback.open';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Page reload overlay has been displayed.
|
||||||
|
*
|
||||||
|
* Properties: label: reason for reload
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const PAGE_RELOAD = 'page.reload';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant has pinned a participant to remain on large video.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* pinned.local
|
||||||
|
* pinned.remote
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const PINNED_ = 'pinned';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recording start was attempted but the local user canceled the request.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const RECORDING_CANCELED = 'recording.canceled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recording button has been clicked.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const RECORDING_CLICKED = 'recording.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recording has been started.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const RECORDING_STARTED = 'recording.started';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recording has been stopped by clicking the recording button.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const RECORDING_STOPPED = 'recording.stopped';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked on the button to kick a remote participant from the conference.
|
||||||
|
*
|
||||||
|
* Properties: value: 1, label: participantID
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const REMOTE_VIDEO_MENU_KICK = 'remotevideomenu.kick';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked on the button to audio mute a remote participant.
|
||||||
|
*
|
||||||
|
* Properties: value: 1, label: participantID
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const REMOTE_VIDEO_MENU_MUTE_CLICKED = 'remotevideomenu.mute.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Confirmed the muting of a remote participant.
|
||||||
|
*
|
||||||
|
* Properties: value: 1, label: participantID
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const REMOTE_VIDEO_MENU_MUTE_CONFIRMED
|
||||||
|
= 'remotevideomenu.mute.confirmed';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked on the remote control option in the remote menu.
|
||||||
|
*
|
||||||
|
* Properties: value: 1, label: participantID
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* remotevideomenu.remotecontrol.stop
|
||||||
|
* remotevideomenu.remotecontrol.start
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const REMOTE_VIDEO_MENU_REMOTE_CONTROL_
|
||||||
|
= 'remotevideomenu.remotecontrol';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replacing the currently used track of specified type with a new track of the
|
||||||
|
* same type. The event is fired when changing devices.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* replacetrack.audio
|
||||||
|
* replacetrack.video
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const REPLACE_TRACK_ = 'replacetrack';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant failed to start receiving high quality video from
|
||||||
|
* a remote participant, which is usually initiated by the remote participant
|
||||||
|
* being put on large video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SELECT_PARTICIPANT_FAILED = 'selectParticipant.failed';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant began using a different audio input device (mic).
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SETTINGS_CHANGE_DEVICE_AUDIO_IN = 'settings.changeDevice.audioIn';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant began using a different audio output device (speaker).
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SETTINGS_CHANGE_DEVICE_AUDIO_OUT
|
||||||
|
= 'settings.changeDevice.audioOut';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant began using a different camera.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SETTINGS_CHANGE_DEVICE_VIDEO = 'settings.changeDevice.video';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempted to start sharing a YouTube video but one is already being shared.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_ALREADY_SHARED = 'sharedvideo.alreadyshared';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant's mic was muted automatically during a shared video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_AUDIO_MUTED = 'sharedvideo.audio.muted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant's mic was unmuted automatically during a shared video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_AUDIO_UNMUTED = 'sharedvideo.audio.unmuted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Canceled the prompt to enter a YouTube video to share.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_CANCELED = 'sharedvideo.canceled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The shared YouTube video has been paused.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_PAUSED = 'sharedvideo.paused';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Started sharing a YouTube video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_STARTED = 'sharedvideo.started';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Confirmed stoppage of the shared YouTube video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_STOPPED = 'sharedvideo.stoped';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The shared YouTube video had its volume change.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHARED_VIDEO_VOLUME_CHANGED = 'sharedvideo.volumechanged';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pressed the keyboard shortcut for toggling audio mute.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_AUDIO_MUTE_TOGGLED = 'shortcut.audiomute.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pressed the keyboard shortcut for toggling chat panel display.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_CHAT_TOGGLED = 'shortcut.chat.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggled the display of the keyboard shortcuts help dialog.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_HELP = 'shortcut.shortcut.help';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pressed the keyboard shortcut for togglgin raise hand status.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_RAISE_HAND_CLICKED = 'shortcut.raisehand.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pressed the keyboard shortcut for toggling screenshare.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_SCREEN_TOGGLED = 'shortcut.screen.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggled the display of the speaker stats dialog.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_SPEAKER_STATS_CLICKED = 'shortcut.speakerStats.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Started pressing the key that undoes audio mute while the key is pressed.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_TALK_CLICKED = 'shortcut.talk.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Released the key used to talk while audio muted, returning to the audio muted
|
||||||
|
* state.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_TALK_RELEASED = 'shortcut.talk.released';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggling video mute state using a keyboard shortcut.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SHORTCUT_VIDEO_MUTE_TOGGLED = 'shortcut.videomute.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config specifies the local participant should start with audio only mode
|
||||||
|
* enabled or disabled.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* startaudioonly.enabled
|
||||||
|
* startaudioonly.disabled
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const START_AUDIO_ONLY_ = 'startaudioonly';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config specifies the local participant should start with audio mute
|
||||||
|
* enabled or disabled.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* startmuted.client.audio.muted
|
||||||
|
* startmuted.client.audio.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const START_MUTED_CLIENT_AUDIO_ = 'startmuted.client.audio';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The config specifies the local participant should start with video mute
|
||||||
|
* enabled or disabled.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* startmuted.client.video.muted
|
||||||
|
* startmuted.client.video.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const START_MUTED_CLIENT_VIDEO_ = 'startmuted.client.video';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant has received an event from the server stating to
|
||||||
|
* start audio muted or unmuted.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* startmuted.server.audio.muted
|
||||||
|
* startmuted.server.audio.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const START_MUTED_SERVER_AUDIO_ = 'startmuted.server.audio';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant has received an event from the server stating to
|
||||||
|
* start video muted or unmuted.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* startmuted.server.video.muted
|
||||||
|
* startmuted.server.video.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const START_MUTED_SERVER_VIDEO_ = 'startmuted.server.video';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How long it took to switch between simulcast streams.
|
||||||
|
*
|
||||||
|
* Properties: value
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const STREAM_SWITCH_DELAY = 'stream.switch.delay';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically changing the mute state of a media track in order to match
|
||||||
|
* the current stored state in redux.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* synctrackstate.audio.muted
|
||||||
|
* synctrackstate.audio.unmuted
|
||||||
|
* synctrackstate.video.muted
|
||||||
|
* synctrackstate.video.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const SYNC_TRACK_STATE_ = 'synctrackstate';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to enter audio mute state.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_AUDIO_MUTED = 'toolbar.audio.muted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked within a toolbar menu to enable audio only.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_AUDIO_ONLY_ENABLED = 'toolbar.audioonly.enabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to exit audio mute state.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_AUDIO_UNMUTED = 'toolbar.audio.unmuted';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling chat panel display.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_CHAT_TOGGLED = 'toolbar.chat.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling contact list panel display.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_CONTACTS_TOGGLED = 'toolbar.contacts.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to toggle display of etherpad (collaborative
|
||||||
|
* document writing).
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_ETHERPACK_CLICKED = 'toolbar.etherpad.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pressed the keyboard shortcut to open the device selection window while in
|
||||||
|
* filmstrip only mode.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_FILMSTRIP_ONLY_DEVICE_SELECTION_TOGGLED
|
||||||
|
= 'toolbar.fodeviceselection.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visibility of the filmstrip has been toggled.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_FILMSTRIP_TOGGLED = 'toolbar.filmstrip.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to toggle display full screen mode.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_FULLSCREEN_ENABLED = 'toolbar.fullscreen.enabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to leave the conference.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_HANGUP = 'toolbar.hangup';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to open the invite dialog.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_INVITE_CLICKED = 'toolbar.invite.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The invite dialog has been dismissed.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_INVITE_CLOSE = 'toolbar.invite.close';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling the display of the profile panel.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_PROFILE_TOGGLED = 'toolbar.profile.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling raise hand status.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_RAISE_HAND_CLICKED = 'toolbar.raiseHand.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to stop screensharing.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_SCREEN_DISABLED = 'toolbar.screen.disabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to start screensharing.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_SCREEN_ENABLED = 'toolbar.screen.enabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling display of the settings menu.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_SETTINGS_TOGGLED = 'toolbar.settings.toggled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button for toggling a shared YouTube video.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_SHARED_VIDEO_CLICKED = 'toolbar.sharedvideo.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked the toolbar button to open the dial-out feature.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_SIP_DIALPAD_CLICKED = 'toolbar.sip.dialpad.clicked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In the mobile app, clicked on the toolbar button to toggle video mute.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* toolbar.video.muted
|
||||||
|
* toolbar.video.unmuted
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_ = 'toolbar.video';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked on the toolbar to video unmute.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_DISABLED = 'toolbar.video.disabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked on the toolbar to video mute.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_ENABLED = 'toolbar.video.enabled';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked within a toolbar menu to set max incoming video quality to high
|
||||||
|
* definition.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_QUALITY_HIGH = 'toolbar.videoquality.high';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked within a toolbar menu to set max incoming video quality to low
|
||||||
|
* definition.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_QUALITY_LOW = 'toolbar.videoquality.low';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clicked within a toolbar menu to set max incoming video quality to standard
|
||||||
|
* definition.
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const TOOLBAR_VIDEO_QUALITY_STANDARD = 'toolbar.videoquality.standard';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The local participant has unpinned a participant so the participant doesn't
|
||||||
|
* remain permanently on local large video.
|
||||||
|
*
|
||||||
|
* Known full event names:
|
||||||
|
* unpinned.local
|
||||||
|
* unpinned.remote
|
||||||
|
*
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
export const UNPINNED_ = 'unpinned';
|
|
@ -1,3 +1,4 @@
|
||||||
|
export * from './AnalyticsEvents';
|
||||||
export * from './functions';
|
export * from './functions';
|
||||||
|
|
||||||
import './middleware';
|
import './middleware';
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
import UIEvents from '../../../../service/UI/UIEvents';
|
import UIEvents from '../../../../service/UI/UIEvents';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
START_MUTED_SERVER_AUDIO_,
|
||||||
|
START_MUTED_SERVER_VIDEO_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { getName } from '../../app';
|
import { getName } from '../../app';
|
||||||
import { JitsiConferenceEvents } from '../lib-jitsi-meet';
|
import { JitsiConferenceEvents } from '../lib-jitsi-meet';
|
||||||
import { setAudioMuted, setVideoMuted } from '../media';
|
import { setAudioMuted, setVideoMuted } from '../media';
|
||||||
|
@ -85,9 +89,11 @@ function _addConferenceListeners(conference, dispatch) {
|
||||||
const videoMuted = Boolean(conference.startVideoMuted);
|
const videoMuted = Boolean(conference.startVideoMuted);
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`startmuted.server.audio.${audioMuted ? 'muted' : 'unmuted'}`);
|
`${START_MUTED_SERVER_AUDIO_}.${
|
||||||
|
audioMuted ? 'muted' : 'unmuted'}`);
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`startmuted.server.video.${videoMuted ? 'muted' : 'unmuted'}`);
|
`${START_MUTED_SERVER_VIDEO_}.${
|
||||||
|
videoMuted ? 'muted' : 'unmuted'}`);
|
||||||
logger.log(`Start muted: ${audioMuted ? 'audio, ' : ''}${
|
logger.log(`Start muted: ${audioMuted ? 'audio, ' : ''}${
|
||||||
videoMuted ? 'video' : ''}`);
|
videoMuted ? 'video' : ''}`);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,14 @@
|
||||||
|
|
||||||
import UIEvents from '../../../../service/UI/UIEvents';
|
import UIEvents from '../../../../service/UI/UIEvents';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
_LOCAL,
|
||||||
|
_REMOTE,
|
||||||
|
AUDIO_ONLY_DISABLED,
|
||||||
|
PINNED_,
|
||||||
|
UNPINNED_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { CONNECTION_ESTABLISHED } from '../connection';
|
import { CONNECTION_ESTABLISHED } from '../connection';
|
||||||
import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../media';
|
import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../media';
|
||||||
import {
|
import {
|
||||||
|
@ -124,7 +131,7 @@ function _conferenceFailedOrLeft({ dispatch, getState }, next, action) {
|
||||||
const result = next(action);
|
const result = next(action);
|
||||||
|
|
||||||
if (getState()['features/base/conference'].audioOnly) {
|
if (getState()['features/base/conference'].audioOnly) {
|
||||||
sendAnalyticsEvent('audioonly.disabled');
|
sendAnalyticsEvent(AUDIO_ONLY_DISABLED);
|
||||||
logger.log('Audio only disabled');
|
logger.log('Audio only disabled');
|
||||||
dispatch(setAudioOnly(false));
|
dispatch(setAudioOnly(false));
|
||||||
}
|
}
|
||||||
|
@ -186,14 +193,14 @@ function _pinParticipant(store, next, action) {
|
||||||
|
|
||||||
if (typeof APP !== 'undefined') {
|
if (typeof APP !== 'undefined') {
|
||||||
const pinnedParticipant = getPinnedParticipant(participants);
|
const pinnedParticipant = getPinnedParticipant(participants);
|
||||||
const actionName = action.participant.id ? 'pinned' : 'unpinned';
|
const actionName = action.participant.id ? PINNED_ : UNPINNED_;
|
||||||
let videoType;
|
let videoType;
|
||||||
|
|
||||||
if ((participantById && participantById.local)
|
if ((participantById && participantById.local)
|
||||||
|| (!id && pinnedParticipant && pinnedParticipant.local)) {
|
|| (!id && pinnedParticipant && pinnedParticipant.local)) {
|
||||||
videoType = 'local';
|
videoType = _LOCAL;
|
||||||
} else {
|
} else {
|
||||||
videoType = 'remote';
|
videoType = _REMOTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
/* @flow */
|
/* @flow */
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
START_AUDIO_ONLY_,
|
||||||
|
START_MUTED_CLIENT_AUDIO_,
|
||||||
|
START_MUTED_CLIENT_VIDEO_,
|
||||||
|
SYNC_TRACK_STATE_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { SET_ROOM, setAudioOnly } from '../conference';
|
import { SET_ROOM, setAudioOnly } from '../conference';
|
||||||
import { parseURLParams } from '../config';
|
import { parseURLParams } from '../config';
|
||||||
import JitsiMeetJS from '../lib-jitsi-meet';
|
import JitsiMeetJS from '../lib-jitsi-meet';
|
||||||
|
@ -87,9 +93,9 @@ function _setRoom({ dispatch, getState }, next, action) {
|
||||||
// Apply the config.
|
// Apply the config.
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`startmuted.client.audio.${audioMuted ? 'muted' : 'unmuted'}`);
|
`${START_MUTED_CLIENT_AUDIO_}.${audioMuted ? 'muted' : 'unmuted'}`);
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`startmuted.client.video.${videoMuted ? 'muted' : 'unmuted'}`);
|
`${START_MUTED_CLIENT_VIDEO_}.${videoMuted ? 'muted' : 'unmuted'}`);
|
||||||
|
|
||||||
logger.log(`Start muted: ${audioMuted ? 'audio, ' : ''}${
|
logger.log(`Start muted: ${audioMuted ? 'audio, ' : ''}${
|
||||||
videoMuted ? 'video' : ''}`);
|
videoMuted ? 'video' : ''}`);
|
||||||
|
@ -123,7 +129,7 @@ function _setRoom({ dispatch, getState }, next, action) {
|
||||||
}
|
}
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`startaudioonly.${audioOnly ? 'enabled' : 'disabled'}`);
|
`${START_AUDIO_ONLY_}.${audioOnly ? 'enabled' : 'disabled'}`);
|
||||||
logger.log(`Start audio only set to ${audioOnly.toString()}`);
|
logger.log(`Start audio only set to ${audioOnly.toString()}`);
|
||||||
dispatch(setAudioOnly(audioOnly));
|
dispatch(setAudioOnly(audioOnly));
|
||||||
}
|
}
|
||||||
|
@ -150,7 +156,8 @@ function _syncTrackMutedState({ getState }, track) {
|
||||||
// fired before track gets to state.
|
// fired before track gets to state.
|
||||||
if (track.muted !== muted) {
|
if (track.muted !== muted) {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`synctrackstate.${track.mediaType}.${muted ? 'muted' : 'unmuted'}`);
|
`${SYNC_TRACK_STATE_}.${track.mediaType}.${
|
||||||
|
muted ? 'muted' : 'unmuted'}`);
|
||||||
logger.log(`Sync ${track.mediaType} track muted state to ${
|
logger.log(`Sync ${track.mediaType} track muted state to ${
|
||||||
muted ? 'muted' : 'unmuted'}`);
|
muted ? 'muted' : 'unmuted'}`);
|
||||||
track.muted = muted;
|
track.muted = muted;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
REPLACE_TRACK_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { JitsiTrackErrors, JitsiTrackEvents } from '../lib-jitsi-meet';
|
import { JitsiTrackErrors, JitsiTrackEvents } from '../lib-jitsi-meet';
|
||||||
import {
|
import {
|
||||||
CAMERA_FACING_MODE,
|
CAMERA_FACING_MODE,
|
||||||
|
@ -217,7 +220,7 @@ export function replaceLocalTrack(oldTrack, newTrack, conference) {
|
||||||
: setAudioMuted;
|
: setAudioMuted;
|
||||||
const isMuted = newTrack.isMuted();
|
const isMuted = newTrack.isMuted();
|
||||||
|
|
||||||
sendAnalyticsEvent(`replacetrack.${
|
sendAnalyticsEvent(`${REPLACE_TRACK_}.${
|
||||||
newTrack.getType()}.${
|
newTrack.getType()}.${
|
||||||
isMuted ? 'muted' : 'unmuted'}`);
|
isMuted ? 'muted' : 'unmuted'}`);
|
||||||
logger.log(`Replace ${newTrack.getType()} track - ${
|
logger.log(`Replace ${newTrack.getType()} track - ${
|
||||||
|
|
|
@ -6,7 +6,10 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
FEEDBACK_OPEN,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { Dialog } from '../../base/dialog';
|
import { Dialog } from '../../base/dialog';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
|
|
||||||
|
@ -145,7 +148,7 @@ class FeedbackDialog extends Component {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
sendAnalyticsEvent('feedback.open');
|
sendAnalyticsEvent(FEEDBACK_OPEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,7 +2,10 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
TOOLBAR_INVITE_CLOSE,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { getInviteURL } from '../../base/connection';
|
import { getInviteURL } from '../../base/connection';
|
||||||
import { Dialog } from '../../base/dialog';
|
import { Dialog } from '../../base/dialog';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
|
@ -51,7 +54,7 @@ class InviteDialog extends Component {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
sendAnalyticsEvent('toolbar.invite.close');
|
sendAnalyticsEvent(TOOLBAR_INVITE_CLOSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
/* @flow */
|
/* @flow */
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
CALLKIT_BACKGROUND_VIDEO_MUTED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { setLastN } from '../../base/conference';
|
import { setLastN } from '../../base/conference';
|
||||||
import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../../base/media';
|
import { setVideoMuted, VIDEO_MUTISM_AUTHORITY } from '../../base/media';
|
||||||
|
|
||||||
|
@ -43,7 +46,7 @@ export function _setBackgroundVideoMuted(muted: boolean) {
|
||||||
|
|
||||||
audioOnly || dispatch(setLastN(muted ? 0 : undefined));
|
audioOnly || dispatch(setLastN(muted ? 0 : undefined));
|
||||||
|
|
||||||
sendAnalyticsEvent('callkit.background.video.muted');
|
sendAnalyticsEvent(CALLKIT_BACKGROUND_VIDEO_MUTED);
|
||||||
|
|
||||||
dispatch(setVideoMuted(muted, VIDEO_MUTISM_AUTHORITY.BACKGROUND));
|
dispatch(setVideoMuted(muted, VIDEO_MUTISM_AUTHORITY.BACKGROUND));
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
import { NativeModules } from 'react-native';
|
import { NativeModules } from 'react-native';
|
||||||
import uuid from 'uuid';
|
import uuid from 'uuid';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
CALLKIT_AUDIO_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { APP_WILL_MOUNT, APP_WILL_UNMOUNT, appNavigate } from '../../app';
|
import { APP_WILL_MOUNT, APP_WILL_UNMOUNT, appNavigate } from '../../app';
|
||||||
import {
|
import {
|
||||||
CONFERENCE_FAILED,
|
CONFERENCE_FAILED,
|
||||||
|
@ -276,7 +279,8 @@ function _onPerformSetMutedCallAction({ callUUID, muted: newValue }) {
|
||||||
if (oldValue !== newValue) {
|
if (oldValue !== newValue) {
|
||||||
const value = Boolean(newValue);
|
const value = Boolean(newValue);
|
||||||
|
|
||||||
sendAnalyticsEvent(`callkit.audio.${value ? 'muted' : 'unmuted'}`);
|
sendAnalyticsEvent(`${CALLKIT_AUDIO_}.${
|
||||||
|
value ? 'muted' : 'unmuted'}`);
|
||||||
dispatch(setAudioMuted(value));
|
dispatch(setAudioMuted(value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
|
import { PAGE_RELOAD } from '../../analytics';
|
||||||
import {
|
import {
|
||||||
isFatalJitsiConferenceError,
|
isFatalJitsiConferenceError,
|
||||||
isFatalJitsiConnectionError
|
isFatalJitsiConnectionError
|
||||||
|
@ -156,7 +157,7 @@ export default class AbstractPageReloadOverlay extends Component<*, *> {
|
||||||
// sent to the backed.
|
// sent to the backed.
|
||||||
// FIXME: We should dispatch action for this.
|
// FIXME: We should dispatch action for this.
|
||||||
APP.conference.logEvent(
|
APP.conference.logEvent(
|
||||||
'page.reload',
|
PAGE_RELOAD,
|
||||||
/* value */ undefined,
|
/* value */ undefined,
|
||||||
/* label */ this.props.reason);
|
/* label */ this.props.reason);
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|
|
@ -2,7 +2,10 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
REMOTE_VIDEO_MENU_KICK,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
import { kickParticipant } from '../../base/participants';
|
import { kickParticipant } from '../../base/participants';
|
||||||
|
|
||||||
|
@ -84,7 +87,7 @@ class KickButton extends Component {
|
||||||
const { dispatch, onClick, participantID } = this.props;
|
const { dispatch, onClick, participantID } = this.props;
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
'remotevideomenu.kick',
|
REMOTE_VIDEO_MENU_KICK,
|
||||||
{
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
label: participantID
|
label: participantID
|
||||||
|
|
|
@ -2,7 +2,10 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
REMOTE_VIDEO_MENU_MUTE_CLICKED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
import { openDialog } from '../../base/dialog';
|
import { openDialog } from '../../base/dialog';
|
||||||
|
|
||||||
|
@ -99,7 +102,7 @@ class MuteButton extends Component {
|
||||||
const { dispatch, onClick, participantID } = this.props;
|
const { dispatch, onClick, participantID } = this.props;
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
'remotevideomenu.mute.clicked',
|
REMOTE_VIDEO_MENU_MUTE_CLICKED,
|
||||||
{
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
label: participantID
|
label: participantID
|
||||||
|
|
|
@ -5,7 +5,10 @@ import { connect } from 'react-redux';
|
||||||
import { Dialog } from '../../base/dialog';
|
import { Dialog } from '../../base/dialog';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
REMOTE_VIDEO_MENU_MUTE_CONFIRMED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { muteRemoteParticipant } from '../../base/participants';
|
import { muteRemoteParticipant } from '../../base/participants';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +83,7 @@ class MuteRemoteParticipantDialog extends Component {
|
||||||
const { dispatch, participantID } = this.props;
|
const { dispatch, participantID } = this.props;
|
||||||
|
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
'remotevideomenu.mute.confirmed',
|
REMOTE_VIDEO_MENU_MUTE_CONFIRMED,
|
||||||
{
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
label: participantID
|
label: participantID
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
REMOTE_VIDEO_MENU_REMOTE_CONTROL_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import { translate } from '../../base/i18n';
|
import { translate } from '../../base/i18n';
|
||||||
|
|
||||||
import RemoteVideoMenuButton from './RemoteVideoMenuButton';
|
import RemoteVideoMenuButton from './RemoteVideoMenuButton';
|
||||||
|
@ -131,7 +134,7 @@ class RemoteControlButton extends Component {
|
||||||
|
|
||||||
if (eventName) {
|
if (eventName) {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
`remotevideomenu.remotecontrol.${eventName}`,
|
`${REMOTE_VIDEO_MENU_REMOTE_CONTROL_}.${eventName}`,
|
||||||
{
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
label: participantID
|
label: participantID
|
||||||
|
|
|
@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import { TOOLBAR_PROFILE_TOGGLED, sendAnalyticsEvent } from '../../analytics';
|
||||||
import { DEFAULT_AVATAR_RELATIVE_PATH } from '../../base/participants';
|
import { DEFAULT_AVATAR_RELATIVE_PATH } from '../../base/participants';
|
||||||
import UIEvents from '../../../../service/UI/UIEvents';
|
import UIEvents from '../../../../service/UI/UIEvents';
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ class ProfileButton extends Component<*> {
|
||||||
*/
|
*/
|
||||||
_onClick() {
|
_onClick() {
|
||||||
if (!this.props._unclickable) {
|
if (!this.props._unclickable) {
|
||||||
sendAnalyticsEvent('toolbar.profile.toggled');
|
sendAnalyticsEvent(TOOLBAR_PROFILE_TOGGLED);
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_PROFILE);
|
APP.UI.emitEvent(UIEvents.TOGGLE_PROFILE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,12 @@ import React, { Component } from 'react';
|
||||||
import { View } from 'react-native';
|
import { View } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
TOOLBAR_AUDIO_MUTED,
|
||||||
|
TOOLBAR_AUDIO_UNMUTED,
|
||||||
|
TOOLBAR_VIDEO_,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import {
|
import {
|
||||||
isNarrowAspectRatio,
|
isNarrowAspectRatio,
|
||||||
makeAspectRatioAware
|
makeAspectRatioAware
|
||||||
|
@ -183,7 +188,7 @@ class Toolbox extends Component {
|
||||||
_onToggleAudio() {
|
_onToggleAudio() {
|
||||||
const mute = !this.props._audioMuted;
|
const mute = !this.props._audioMuted;
|
||||||
|
|
||||||
sendAnalyticsEvent(`toolbar.audio.${mute ? 'muted' : 'unmuted'}`);
|
sendAnalyticsEvent(mute ? TOOLBAR_AUDIO_MUTED : TOOLBAR_AUDIO_UNMUTED);
|
||||||
|
|
||||||
// The user sees the reality i.e. the state of base/tracks and intends
|
// The user sees the reality i.e. the state of base/tracks and intends
|
||||||
// to change reality by tapping on the respective button i.e. the user
|
// to change reality by tapping on the respective button i.e. the user
|
||||||
|
@ -206,7 +211,7 @@ class Toolbox extends Component {
|
||||||
_onToggleVideo() {
|
_onToggleVideo() {
|
||||||
const mute = !this.props._videoMuted;
|
const mute = !this.props._videoMuted;
|
||||||
|
|
||||||
sendAnalyticsEvent(`toolbar.video.${mute ? 'muted' : 'unmuted'}`);
|
sendAnalyticsEvent(`${TOOLBAR_VIDEO_}.${mute ? 'muted' : 'unmuted'}`);
|
||||||
|
|
||||||
// The user sees the reality i.e. the state of base/tracks and intends
|
// The user sees the reality i.e. the state of base/tracks and intends
|
||||||
// to change reality by tapping on the respective button i.e. the user
|
// to change reality by tapping on the respective button i.e. the user
|
||||||
|
|
|
@ -2,7 +2,31 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../analytics';
|
import {
|
||||||
|
SHORTCUT_AUDIO_MUTE_TOGGLED,
|
||||||
|
SHORTCUT_CHAT_TOGGLED,
|
||||||
|
SHORTCUT_RAISE_HAND_CLICKED,
|
||||||
|
SHORTCUT_SCREEN_TOGGLED,
|
||||||
|
SHORTCUT_VIDEO_MUTE_TOGGLED,
|
||||||
|
TOOLBAR_AUDIO_MUTED,
|
||||||
|
TOOLBAR_AUDIO_UNMUTED,
|
||||||
|
TOOLBAR_CHAT_TOGGLED,
|
||||||
|
TOOLBAR_CONTACTS_TOGGLED,
|
||||||
|
TOOLBAR_ETHERPACK_CLICKED,
|
||||||
|
TOOLBAR_FILMSTRIP_ONLY_DEVICE_SELECTION_TOGGLED,
|
||||||
|
TOOLBAR_FULLSCREEN_ENABLED,
|
||||||
|
TOOLBAR_HANGUP,
|
||||||
|
TOOLBAR_INVITE_CLICKED,
|
||||||
|
TOOLBAR_RAISE_HAND_CLICKED,
|
||||||
|
TOOLBAR_SCREEN_DISABLED,
|
||||||
|
TOOLBAR_SCREEN_ENABLED,
|
||||||
|
TOOLBAR_SETTINGS_TOGGLED,
|
||||||
|
TOOLBAR_SHARED_VIDEO_CLICKED,
|
||||||
|
TOOLBAR_SIP_DIALPAD_CLICKED,
|
||||||
|
TOOLBAR_VIDEO_DISABLED,
|
||||||
|
TOOLBAR_VIDEO_ENABLED,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../analytics';
|
||||||
import { ParticipantCounter } from '../contact-list';
|
import { ParticipantCounter } from '../contact-list';
|
||||||
import { openDeviceSelectionDialog } from '../device-selection';
|
import { openDeviceSelectionDialog } from '../device-selection';
|
||||||
import { InfoDialogButton, openInviteDialog } from '../invite';
|
import { InfoDialogButton, openInviteDialog } from '../invite';
|
||||||
|
@ -42,9 +66,9 @@ export default function getDefaultButtons() {
|
||||||
const newVideoMutedState = !APP.conference.isLocalVideoMuted();
|
const newVideoMutedState = !APP.conference.isLocalVideoMuted();
|
||||||
|
|
||||||
if (newVideoMutedState) {
|
if (newVideoMutedState) {
|
||||||
sendAnalyticsEvent('toolbar.video.enabled');
|
sendAnalyticsEvent(TOOLBAR_VIDEO_ENABLED);
|
||||||
} else {
|
} else {
|
||||||
sendAnalyticsEvent('toolbar.video.disabled');
|
sendAnalyticsEvent(TOOLBAR_VIDEO_DISABLED);
|
||||||
}
|
}
|
||||||
APP.UI.emitEvent(UIEvents.VIDEO_MUTED, newVideoMutedState);
|
APP.UI.emitEvent(UIEvents.VIDEO_MUTED, newVideoMutedState);
|
||||||
},
|
},
|
||||||
|
@ -64,7 +88,7 @@ export default function getDefaultButtons() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendAnalyticsEvent('shortcut.videomute.toggled');
|
sendAnalyticsEvent(SHORTCUT_VIDEO_MUTE_TOGGLED);
|
||||||
APP.conference.toggleVideoMuted();
|
APP.conference.toggleVideoMuted();
|
||||||
},
|
},
|
||||||
shortcutDescription: 'keyboardShortcuts.videoMute',
|
shortcutDescription: 'keyboardShortcuts.videoMute',
|
||||||
|
@ -81,13 +105,13 @@ export default function getDefaultButtons() {
|
||||||
<span id = 'unreadMessages' /></span>,
|
<span id = 'unreadMessages' /></span>,
|
||||||
id: 'toolbar_button_chat',
|
id: 'toolbar_button_chat',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.chat.toggled');
|
sendAnalyticsEvent(TOOLBAR_CHAT_TOGGLED);
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_CHAT);
|
APP.UI.emitEvent(UIEvents.TOGGLE_CHAT);
|
||||||
},
|
},
|
||||||
shortcut: 'C',
|
shortcut: 'C',
|
||||||
shortcutAttr: 'toggleChatPopover',
|
shortcutAttr: 'toggleChatPopover',
|
||||||
shortcutFunc() {
|
shortcutFunc() {
|
||||||
sendAnalyticsEvent('shortcut.chat.toggled');
|
sendAnalyticsEvent(SHORTCUT_CHAT_TOGGLED);
|
||||||
APP.UI.toggleChat();
|
APP.UI.toggleChat();
|
||||||
},
|
},
|
||||||
shortcutDescription: 'keyboardShortcuts.toggleChat',
|
shortcutDescription: 'keyboardShortcuts.toggleChat',
|
||||||
|
@ -104,8 +128,7 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_contact_list',
|
id: 'toolbar_contact_list',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(TOOLBAR_CONTACTS_TOGGLED);
|
||||||
'toolbar.contacts.toggled');
|
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_CONTACT_LIST);
|
APP.UI.emitEvent(UIEvents.TOGGLE_CONTACT_LIST);
|
||||||
},
|
},
|
||||||
sideContainerId: 'contacts_container',
|
sideContainerId: 'contacts_container',
|
||||||
|
@ -121,9 +144,9 @@ export default function getDefaultButtons() {
|
||||||
id: 'toolbar_button_desktopsharing',
|
id: 'toolbar_button_desktopsharing',
|
||||||
onClick() {
|
onClick() {
|
||||||
if (APP.conference.isSharingScreen) {
|
if (APP.conference.isSharingScreen) {
|
||||||
sendAnalyticsEvent('toolbar.screen.disabled');
|
sendAnalyticsEvent(TOOLBAR_SCREEN_DISABLED);
|
||||||
} else {
|
} else {
|
||||||
sendAnalyticsEvent('toolbar.screen.enabled');
|
sendAnalyticsEvent(TOOLBAR_SCREEN_ENABLED);
|
||||||
}
|
}
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_SCREENSHARING);
|
APP.UI.emitEvent(UIEvents.TOGGLE_SCREENSHARING);
|
||||||
},
|
},
|
||||||
|
@ -137,7 +160,7 @@ export default function getDefaultButtons() {
|
||||||
shortcut: 'D',
|
shortcut: 'D',
|
||||||
shortcutAttr: 'toggleDesktopSharingPopover',
|
shortcutAttr: 'toggleDesktopSharingPopover',
|
||||||
shortcutFunc() {
|
shortcutFunc() {
|
||||||
sendAnalyticsEvent('shortcut.screen.toggled');
|
sendAnalyticsEvent(SHORTCUT_SCREEN_TOGGLED);
|
||||||
|
|
||||||
// eslint-disable-next-line no-empty-function
|
// eslint-disable-next-line no-empty-function
|
||||||
APP.conference.toggleScreenSharing().catch(() => {});
|
APP.conference.toggleScreenSharing().catch(() => {});
|
||||||
|
@ -158,7 +181,7 @@ export default function getDefaultButtons() {
|
||||||
id: 'toolbar_button_fodeviceselection',
|
id: 'toolbar_button_fodeviceselection',
|
||||||
onClick(dispatch: Function) {
|
onClick(dispatch: Function) {
|
||||||
sendAnalyticsEvent(
|
sendAnalyticsEvent(
|
||||||
'toolbar.fodeviceselection.toggled');
|
TOOLBAR_FILMSTRIP_ONLY_DEVICE_SELECTION_TOGGLED);
|
||||||
|
|
||||||
dispatch(openDeviceSelectionDialog());
|
dispatch(openDeviceSelectionDialog());
|
||||||
},
|
},
|
||||||
|
@ -177,7 +200,7 @@ export default function getDefaultButtons() {
|
||||||
hidden: true,
|
hidden: true,
|
||||||
id: 'toolbar_button_dialpad',
|
id: 'toolbar_button_dialpad',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.sip.dialpad.clicked');
|
sendAnalyticsEvent(TOOLBAR_SIP_DIALPAD_CLICKED);
|
||||||
},
|
},
|
||||||
tooltipKey: 'toolbar.dialpad'
|
tooltipKey: 'toolbar.dialpad'
|
||||||
},
|
},
|
||||||
|
@ -191,7 +214,7 @@ export default function getDefaultButtons() {
|
||||||
hidden: true,
|
hidden: true,
|
||||||
id: 'toolbar_button_etherpad',
|
id: 'toolbar_button_etherpad',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.etherpad.clicked');
|
sendAnalyticsEvent(TOOLBAR_ETHERPACK_CLICKED);
|
||||||
APP.UI.emitEvent(UIEvents.ETHERPAD_CLICKED);
|
APP.UI.emitEvent(UIEvents.ETHERPAD_CLICKED);
|
||||||
},
|
},
|
||||||
tooltipKey: 'toolbar.etherpad'
|
tooltipKey: 'toolbar.etherpad'
|
||||||
|
@ -205,7 +228,7 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_button_fullScreen',
|
id: 'toolbar_button_fullScreen',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.fullscreen.enabled');
|
sendAnalyticsEvent(TOOLBAR_FULLSCREEN_ENABLED);
|
||||||
|
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_FULLSCREEN);
|
APP.UI.emitEvent(UIEvents.TOGGLE_FULLSCREEN);
|
||||||
},
|
},
|
||||||
|
@ -229,7 +252,7 @@ export default function getDefaultButtons() {
|
||||||
isDisplayed: () => true,
|
isDisplayed: () => true,
|
||||||
id: 'toolbar_button_hangup',
|
id: 'toolbar_button_hangup',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.hangup');
|
sendAnalyticsEvent(TOOLBAR_HANGUP);
|
||||||
APP.UI.emitEvent(UIEvents.HANGUP);
|
APP.UI.emitEvent(UIEvents.HANGUP);
|
||||||
},
|
},
|
||||||
tooltipKey: 'toolbar.hangup'
|
tooltipKey: 'toolbar.hangup'
|
||||||
|
@ -252,7 +275,7 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_button_link',
|
id: 'toolbar_button_link',
|
||||||
onClick(dispatch: Function) {
|
onClick(dispatch: Function) {
|
||||||
sendAnalyticsEvent('toolbar.invite.clicked');
|
sendAnalyticsEvent(TOOLBAR_INVITE_CLICKED);
|
||||||
|
|
||||||
dispatch(openInviteDialog());
|
dispatch(openInviteDialog());
|
||||||
},
|
},
|
||||||
|
@ -280,11 +303,11 @@ export default function getDefaultButtons() {
|
||||||
APP.UI.showCustomToolbarPopup(
|
APP.UI.showCustomToolbarPopup(
|
||||||
'microphone', 'unableToUnmutePopup', true, 5000);
|
'microphone', 'unableToUnmutePopup', true, 5000);
|
||||||
} else {
|
} else {
|
||||||
sendAnalyticsEvent('toolbar.audio.unmuted');
|
sendAnalyticsEvent(TOOLBAR_AUDIO_UNMUTED);
|
||||||
APP.UI.emitEvent(UIEvents.AUDIO_MUTED, false, true);
|
APP.UI.emitEvent(UIEvents.AUDIO_MUTED, false, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sendAnalyticsEvent('toolbar.audio.muted');
|
sendAnalyticsEvent(TOOLBAR_AUDIO_MUTED);
|
||||||
APP.UI.emitEvent(UIEvents.AUDIO_MUTED, true, true);
|
APP.UI.emitEvent(UIEvents.AUDIO_MUTED, true, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -305,7 +328,7 @@ export default function getDefaultButtons() {
|
||||||
shortcut: 'M',
|
shortcut: 'M',
|
||||||
shortcutAttr: 'mutePopover',
|
shortcutAttr: 'mutePopover',
|
||||||
shortcutFunc() {
|
shortcutFunc() {
|
||||||
sendAnalyticsEvent('shortcut.audiomute.toggled');
|
sendAnalyticsEvent(SHORTCUT_AUDIO_MUTE_TOGGLED);
|
||||||
APP.conference.toggleAudioMuted();
|
APP.conference.toggleAudioMuted();
|
||||||
},
|
},
|
||||||
shortcutDescription: 'keyboardShortcuts.mute',
|
shortcutDescription: 'keyboardShortcuts.mute',
|
||||||
|
@ -328,14 +351,14 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_button_raisehand',
|
id: 'toolbar_button_raisehand',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.raiseHand.clicked');
|
sendAnalyticsEvent(TOOLBAR_RAISE_HAND_CLICKED);
|
||||||
APP.conference.maybeToggleRaisedHand();
|
APP.conference.maybeToggleRaisedHand();
|
||||||
},
|
},
|
||||||
shortcut: 'R',
|
shortcut: 'R',
|
||||||
shortcutAttr: 'raiseHandPopover',
|
shortcutAttr: 'raiseHandPopover',
|
||||||
shortcutDescription: 'keyboardShortcuts.raiseHand',
|
shortcutDescription: 'keyboardShortcuts.raiseHand',
|
||||||
shortcutFunc() {
|
shortcutFunc() {
|
||||||
sendAnalyticsEvent('shortcut.raisehand.clicked');
|
sendAnalyticsEvent(SHORTCUT_RAISE_HAND_CLICKED);
|
||||||
APP.conference.maybeToggleRaisedHand();
|
APP.conference.maybeToggleRaisedHand();
|
||||||
},
|
},
|
||||||
tooltipKey: 'toolbar.raiseHand'
|
tooltipKey: 'toolbar.raiseHand'
|
||||||
|
@ -363,7 +386,7 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_button_settings',
|
id: 'toolbar_button_settings',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.settings.toggled');
|
sendAnalyticsEvent(TOOLBAR_SETTINGS_TOGGLED);
|
||||||
APP.UI.emitEvent(UIEvents.TOGGLE_SETTINGS);
|
APP.UI.emitEvent(UIEvents.TOGGLE_SETTINGS);
|
||||||
},
|
},
|
||||||
sideContainerId: 'settings_container',
|
sideContainerId: 'settings_container',
|
||||||
|
@ -378,7 +401,7 @@ export default function getDefaultButtons() {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
id: 'toolbar_button_sharedvideo',
|
id: 'toolbar_button_sharedvideo',
|
||||||
onClick() {
|
onClick() {
|
||||||
sendAnalyticsEvent('toolbar.sharedvideo.clicked');
|
sendAnalyticsEvent(TOOLBAR_SHARED_VIDEO_CLICKED);
|
||||||
APP.UI.emitEvent(UIEvents.SHARED_VIDEO_CLICKED);
|
APP.UI.emitEvent(UIEvents.SHARED_VIDEO_CLICKED);
|
||||||
},
|
},
|
||||||
popups: [
|
popups: [
|
||||||
|
|
|
@ -3,7 +3,13 @@ import PropTypes from 'prop-types';
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { sendAnalyticsEvent } from '../../analytics';
|
import {
|
||||||
|
TOOLBAR_AUDIO_ONLY_ENABLED,
|
||||||
|
TOOLBAR_VIDEO_QUALITY_HIGH,
|
||||||
|
TOOLBAR_VIDEO_QUALITY_LOW,
|
||||||
|
TOOLBAR_VIDEO_QUALITY_STANDARD,
|
||||||
|
sendAnalyticsEvent
|
||||||
|
} from '../../analytics';
|
||||||
import {
|
import {
|
||||||
setAudioOnly,
|
setAudioOnly,
|
||||||
setReceiveVideoQuality,
|
setReceiveVideoQuality,
|
||||||
|
@ -249,7 +255,7 @@ class VideoQualityDialog extends Component {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
_enableAudioOnly() {
|
_enableAudioOnly() {
|
||||||
sendAnalyticsEvent('toolbar.audioonly.enabled');
|
sendAnalyticsEvent(TOOLBAR_AUDIO_ONLY_ENABLED);
|
||||||
logger.log('Video quality: audio only enabled');
|
logger.log('Video quality: audio only enabled');
|
||||||
this.props.dispatch(setAudioOnly(true));
|
this.props.dispatch(setAudioOnly(true));
|
||||||
}
|
}
|
||||||
|
@ -262,7 +268,7 @@ class VideoQualityDialog extends Component {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
_enableHighDefinition() {
|
_enableHighDefinition() {
|
||||||
sendAnalyticsEvent('toolbar.videoquality.high');
|
sendAnalyticsEvent(TOOLBAR_VIDEO_QUALITY_HIGH);
|
||||||
logger.log('Video quality: high enabled');
|
logger.log('Video quality: high enabled');
|
||||||
this.props.dispatch(setReceiveVideoQuality(HIGH));
|
this.props.dispatch(setReceiveVideoQuality(HIGH));
|
||||||
}
|
}
|
||||||
|
@ -275,7 +281,7 @@ class VideoQualityDialog extends Component {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
_enableLowDefinition() {
|
_enableLowDefinition() {
|
||||||
sendAnalyticsEvent('toolbar.videoquality.low');
|
sendAnalyticsEvent(TOOLBAR_VIDEO_QUALITY_LOW);
|
||||||
logger.log('Video quality: low enabled');
|
logger.log('Video quality: low enabled');
|
||||||
this.props.dispatch(setReceiveVideoQuality(LOW));
|
this.props.dispatch(setReceiveVideoQuality(LOW));
|
||||||
}
|
}
|
||||||
|
@ -288,7 +294,7 @@ class VideoQualityDialog extends Component {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
_enableStandardDefinition() {
|
_enableStandardDefinition() {
|
||||||
sendAnalyticsEvent('toolbar.videoquality.standard');
|
sendAnalyticsEvent(TOOLBAR_VIDEO_QUALITY_STANDARD);
|
||||||
logger.log('Video quality: standard enabled');
|
logger.log('Video quality: standard enabled');
|
||||||
this.props.dispatch(setReceiveVideoQuality(STANDARD));
|
this.props.dispatch(setReceiveVideoQuality(STANDARD));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue