Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function readAndUnlinkP(p) {
return new Promise((resolve, reject) => {
readFileP(p)
.then((img) => {
unlinkP(p)
.then(() => resolve(img))
.catch(reject);
})
.catch(reject);
});
}
if (process.platform === 'darwin') {
screenshot.darwinSnapshot = function darwinSnapshot(options = {}) {
return new Promise((resolve, reject) => {
const displayId = options.screen || 0;
if (!Number.isInteger(displayId) || displayId < 0) {
reject(new Error(`Invalid choice of displayId: ${displayId}`));
} else {
const format = options.format || 'jpg';
let filename;
let suffix;
if (options.filename) {
const ix = options.filename.lastIndexOf('.');
suffix = ix >= 0 ? options.filename.slice(ix) : `.${format}`;
filename = '"' + options.filename.replace(/"/g, '\\"') + '"' // eslint-disable-line
} else {
suffix = `.${format}`;
}
reject(err);
} else {
if (options.filename) { // eslint-disable-line
resolve(imgPath);
} else {
readAndUnlinkP(tmpPath)
.then(resolve)
.catch(reject);
}
}
},
);
});
};
screenshot.listDisplays = function listDisplays() {
return new Promise((resolve, reject) => {
exec(
`"${path.join(libPath, 'screenCapture_1.3.2.bat')}" /list`,
{
cwd: libPath,
},
(err, stdout) => {
if (err) {
return reject(err);
}
return resolve(screenshot.parseDisplaysOutput(stdout));
},
);
});
};
}
process.env.NODE_ENV === 'development'
? (
path.join(
appPath.split('node_modules')[0],
'node_modules/screenshot-desktop/lib/win32',
)
) : (
path.join(
appPath.split('app.asar')[0],
'screenshot-desktop/',
)
)
);
screenshot.windowsSnapshot = function windowsSnapshot(options = {}) {
return new Promise((resolve, reject) => {
const displayName = options.screen;
const format = options.format || 'jpg';
const tmpPath = temp.path({
suffix: `.${format}`,
});
const imgPath = path.resolve(options.filename || tmpPath);
const displayChoice = displayName ? ` /d "${displayName}"` : '';
exec(
`"${path.join(libPath, 'screenCapture_1.3.2.bat')}" "${imgPath}" ${displayChoice}`,
{
cwd: libPath,
},
(err) => {
const snapshotFunc = () => {
switch (process.platform) {
case 'darwin':
return screenshot.darwinSnapshot;
case 'win32':
case 'windows':
return screenshot.windowsSnapshot;
default:
return screenshot;
}
};
const images = yield eff.all(
export function* takeScreenshotRequest() {
while (true) {
const {
isTest,
time,
timestamp,
} = yield eff.take(actionTypes.TAKE_SCREENSHOT_REQUEST);
try {
yield eff.put(uiActions.setUiState({
takeScreenshotLoading: true,
}));
trackMixpanel('Take screenshot request');
const displays = yield eff.call(screenshot.listDisplays);
const snapshotFunc = () => {
switch (process.platform) {
case 'darwin':
return screenshot.darwinSnapshot;
case 'win32':
case 'windows':
return screenshot.windowsSnapshot;
default:
return screenshot;
}
};
const images = yield eff.all(
displays.map(
d => eff.call(
snapshotFunc(),
{
const snapshotFunc = () => {
switch (process.platform) {
case 'darwin':
return screenshot.darwinSnapshot;
case 'win32':
case 'windows':
return screenshot.windowsSnapshot;
default:
return screenshot;
}
};
const images = yield eff.all(
(err, stdout) => {
if (err) {
return reject(err);
}
return resolve(screenshot.parseDisplaysOutput(stdout));
},
);