49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const electron = require('electron');
 | 
						|
const fs = require('fs');
 | 
						|
const path = require('path');
 | 
						|
 | 
						|
let blobId = 0;
 | 
						|
let blobRequests = {};
 | 
						|
 | 
						|
electron.ipcRenderer.on('blob-loaded', (event, args) => {
 | 
						|
	const blobRequest = blobRequests[args.id];
 | 
						|
	delete blobRequests[args.id];
 | 
						|
	blobRequest.done(new Uint8Array(args.data));
 | 
						|
});
 | 
						|
 | 
						|
electron.ipcRenderer.on('blob-failed', (event, args) => {
 | 
						|
	const blobRequest = blobRequests[args.id];
 | 
						|
	delete blobRequests[args.id];
 | 
						|
	blobRequest.failed({url: args.url, error: args.error});
 | 
						|
});
 | 
						|
 | 
						|
electron.contextBridge.exposeInMainWorld(
 | 
						|
	'electron', {
 | 
						|
		{Expose}
 | 
						|
		showWindow: (title, x, y, width, height) => {
 | 
						|
			if (electron.webFrame.setZoomLevelLimits != null) { // TODO: Figure out why this check is sometimes required
 | 
						|
				electron.webFrame.setZoomLevelLimits(1, 1);
 | 
						|
			}
 | 
						|
			const options = {
 | 
						|
				title: title,
 | 
						|
				x: x,
 | 
						|
				y: y,
 | 
						|
				width: width,
 | 
						|
				height: height,
 | 
						|
			};
 | 
						|
			electron.ipcRenderer.send('show-window', options);
 | 
						|
		},
 | 
						|
		loadBlob: (desc, done, failed) => {
 | 
						|
			const options = {
 | 
						|
				file: desc.files[0],
 | 
						|
				id: blobId++
 | 
						|
			};
 | 
						|
			blobRequests[options.id] = {
 | 
						|
				done: done,
 | 
						|
				failed: failed
 | 
						|
			};
 | 
						|
			electron.ipcRenderer.send('load-blob', options);
 | 
						|
		}
 | 
						|
	}
 | 
						|
);
 |