12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
-
- const logger = require('jitsi-meet-logger').getLogger(__filename);
-
- /**
- * Begins a request to get available DesktopCapturerSources.
- *
- * @param {Array} types - An array with DesktopCapturerSource type strings.
- * @param {Object} options - Additional configuration for getting a list of
- * sources.
- * @param {Object} options.thumbnailSize - The desired height and width of the
- * return native image object used for the preview image of the source.
- * @returns {Function}
- */
- export function obtainDesktopSources(types, options = {}) {
- const capturerOptions = {
- types
- };
-
- if (options.thumbnailSize) {
- capturerOptions.thumbnailSize = options.thumbnailSize;
- }
-
- return new Promise((resolve, reject) => {
- const { JitsiMeetElectron } = window;
-
- if (JitsiMeetElectron && JitsiMeetElectron.obtainDesktopStreams) {
- JitsiMeetElectron.obtainDesktopStreams(
- sources => resolve(_seperateSourcesByType(sources)),
- error => {
- logger.error(
- `Error while obtaining desktop sources: ${error}`);
- reject(error);
- },
- capturerOptions
- );
- } else {
- const reason = 'Called JitsiMeetElectron.obtainDesktopStreams'
- + ' but it is not defined';
-
- logger.error(reason);
-
- return Promise.reject(new Error(reason));
- }
- });
- }
-
-
- /**
- * Converts an array of DesktopCapturerSources to an object with types for keys
- * and values being an array with sources of the key's type.
- *
- * @param {Array} sources - DesktopCapturerSources.
- * @private
- * @returns {Object} An object with the sources split into seperate arrays based
- * on source type.
- */
- function _seperateSourcesByType(sources = []) {
- const sourcesByType = {
- screen: [],
- window: []
- };
-
- sources.forEach(source => {
- const idParts = source.id.split(':');
- const type = idParts[0];
-
- if (sourcesByType[type]) {
- sourcesByType[type].push(source);
- }
- });
-
- return sourcesByType;
- }
|