mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-16 03:27:47 +00:00
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
81 lines
2.3 KiB
JavaScript
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;
|
|
|
|
}
|