Files
jitsi-meet/react/features/screenshot-capture/functions.js
Robert Pintilii f0118c0fb5 fix(screenshot-capture) Updated feature (#10865)
Added config to choose between recording and always mode
Created function to check if feature should be used
Removed check from stop feature as it now checks if the feature was previously on
Only get video track on feature start
2022-01-28 11:11:35 +02:00

81 lines
2.3 KiB
JavaScript

// @flow
import { getCurrentConference } from '../base/conference';
import { JitsiRecordingConstants } from '../base/lib-jitsi-meet';
import { toState } from '../base/redux';
import { getActiveSession } from '../recording/functions';
import { isScreenVideoShared } from '../screen-share';
import ScreenshotCaptureSummary from './ScreenshotCaptureSummary';
/**
* Creates a new instance of ScreenshotCapture.
*
* @param {Object | Function} stateful - The redux store, state, or
* {@code getState} function.
* @returns {Promise<ScreenshotCapture>}
*/
export function createScreenshotCaptureSummary(stateful: Object | Function) {
if (!MediaStreamTrack.prototype.getSettings && !MediaStreamTrack.prototype.getConstraints) {
return Promise.reject(new Error('ScreenshotCaptureSummary not supported!'));
}
return new ScreenshotCaptureSummary(toState(stateful));
}
/**
* Get a participant's connection JID given its ID.
*
* @param {Object} state - The redux store state.
* @param {string} participantId - ID of the given participant.
* @returns {string|undefined} - The participant connection JID if found.
*/
export function getParticipantJid(state: Object, participantId: string) {
const conference = getCurrentConference(state);
if (!conference) {
return;
}
const participant = conference.getParticipantById(participantId);
if (!participant) {
return;
}
return participant.getJid();
}
/**
* Checks if the screenshot capture is enabled based on the config.
*
* @param {Object} state - Redux state.
* @param {boolean} checkSharing - Whether to check if screensharing is on.
* @param {boolean} checkRecording - Whether to check is recording is on.
* @returns {boolean}
*/
export function isScreenshotCaptureEnabled(state: Object, checkSharing, checkRecording) {
const { screenshotCapture } = state['features/base/config'];
if (!screenshotCapture?.enabled) {
return false;
}
if (checkSharing && !isScreenVideoShared(state)) {
return false;
}
if (checkRecording) {
// Feature enabled always.
if (screenshotCapture.mode === 'always') {
return true;
}
// Feature enabled only when recording is also on.
return Boolean(getActiveSession(state, JitsiRecordingConstants.mode.FILE));
}
return true;
}