Use the electron Clipboard module when using "Copy image to clipboard"

This commit is contained in:
perf3ct 2024-09-28 17:41:59 -07:00
parent 9220616bb5
commit cfc32a14e0
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232

View File

@ -24,13 +24,23 @@ function setupContextMenu($image) {
},
{title: "Copy image to clipboard", command: "copyImageToClipboard", uiIcon: "bx bx-empty"},
],
selectMenuItemHandler: ({command}) => {
selectMenuItemHandler: async ({command}) => {
if (command === 'copyImageReferenceToClipboard') {
imageService.copyImageReferenceToClipboard($image);
} else if (command === 'copyImageToClipboard') {
const webContents = utils.dynamicRequire('@electron/remote').getCurrentWebContents();
utils.dynamicRequire('electron');
webContents.copyImageAt(e.pageX, e.pageY);
try {
const imageUrl = $image.attr('src');
const response = await fetch(imageUrl);
const blob = await response.blob();
const arrayBuffer = await blob.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
const nativeImage = utils.dynamicRequire('electron').nativeImage;
const clipboard = utils.dynamicRequire('electron').clipboard;
const image = nativeImage.createFromBuffer(buffer);
clipboard.writeImage(image);
} catch (error) {
console.error('Failed to copy image to clipboard:', error);
}
} else {
throw new Error(`Unrecognized command '${command}'`);
}
@ -41,4 +51,4 @@ function setupContextMenu($image) {
export default {
setupContextMenu
};
};