fix(screenshare) Add timestamp to desktop track

Send screenshare duration to analytics
This commit is contained in:
robertpin 2021-10-14 13:17:56 +03:00 committed by vp8x8
parent 4b7a6741fa
commit 92c6324ff3
3 changed files with 12 additions and 3 deletions

View File

@ -107,6 +107,7 @@ import {
getLocalJitsiAudioTrack, getLocalJitsiAudioTrack,
getLocalJitsiVideoTrack, getLocalJitsiVideoTrack,
getLocalTracks, getLocalTracks,
getLocalVideoTrack,
isLocalCameraTrackMuted, isLocalCameraTrackMuted,
isLocalTrackMuted, isLocalTrackMuted,
isUserInteractionRequiredForUnmute, isUserInteractionRequiredForUnmute,
@ -1549,6 +1550,8 @@ export default {
if (config.enableScreenshotCapture) { if (config.enableScreenshotCapture) {
APP.store.dispatch(toggleScreenshotCaptureSummary(false)); APP.store.dispatch(toggleScreenshotCaptureSummary(false));
} }
const tracks = APP.store.getState()['features/base/tracks'];
const timestamp = getLocalVideoTrack(tracks)?.timestamp ?? 0;
// It can happen that presenter GUM is in progress while screensharing is being turned off. Here it needs to // It can happen that presenter GUM is in progress while screensharing is being turned off. Here it needs to
// wait for that GUM to be resolved in order to prevent leaking the presenter track(this.localPresenterVideo // wait for that GUM to be resolved in order to prevent leaking the presenter track(this.localPresenterVideo
@ -1610,7 +1613,8 @@ export default {
return promise.then( return promise.then(
() => { () => {
this.videoSwitchInProgress = false; this.videoSwitchInProgress = false;
sendAnalytics(createScreenSharingEvent('stopped')); sendAnalytics(createScreenSharingEvent('stopped',
timestamp === 0 ? null : (Date.now() / 1000) - timestamp));
logger.info('Screen sharing stopped.'); logger.info('Screen sharing stopped.');
}, },
error => { error => {

View File

@ -602,13 +602,17 @@ export function createVideoBlurEvent(action) {
* occurred (e.g. It was started or stopped). * occurred (e.g. It was started or stopped).
* *
* @param {string} action - The action which occurred. * @param {string} action - The action which occurred.
* @param {number?} value - The screenshare duration in seconds.
* @returns {Object} The event in a format suitable for sending via * @returns {Object} The event in a format suitable for sending via
* sendAnalytics. * sendAnalytics.
*/ */
export function createScreenSharingEvent(action) { export function createScreenSharingEvent(action, value = null) {
return { return {
action, action,
actionSubject: 'screen.sharing' actionSubject: 'screen.sharing',
attributes: {
value
}
}; };
} }

View File

@ -57,6 +57,7 @@ MiddlewareRegistry.register(store => next => action => {
// The devices list needs to be refreshed when no initial video permissions // The devices list needs to be refreshed when no initial video permissions
// were granted and a local video track is added by umuting the video. // were granted and a local video track is added by umuting the video.
if (action.track.local) { if (action.track.local) {
action.track.timestamp = Date.now() / 1000;
store.dispatch(getAvailableDevices()); store.dispatch(getAvailableDevices());
} }