1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // @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;
-
- }
|