const {app, BrowserWindow} = require('electron') const e = require('express') const path = require('path') function createWindow () { const mainWindow = new BrowserWindow({ width: 800, height: 600 }) let grantedDeviceThroughPermHandler mainWindow.webContents.session.on('select-usb-device', (event, details, callback) => { //Add events to handle devices being added or removed before the callback on //`select-usb-device` is called. mainWindow.webContents.session.on('usb-device-added', (event, device) => { console.log('usb-device-added FIRED WITH', device) //Optionally update details.deviceList }) mainWindow.webContents.session.on('usb-device-removed', (event, device) => { console.log('usb-device-removed FIRED WITH', device) //Optionally update details.deviceList }) event.preventDefault() if (details.deviceList && details.deviceList.length > 0) { const deviceToReturn = details.deviceList.find((device) => { if (!grantedDeviceThroughPermHandler || (device.deviceId != grantedDeviceThroughPermHandler.deviceId)) { return true } }) if (deviceToReturn) { callback(deviceToReturn.deviceId) } else { callback() } } }) mainWindow.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => { if (permission === 'usb' && details.securityOrigin === 'file:///') { return true } }) mainWindow.webContents.session.setDevicePermissionHandler((details) => { if (details.deviceType === 'usb' && details.origin === 'file://') { if (!grantedDeviceThroughPermHandler) { grantedDeviceThroughPermHandler = details.device return true } else { return false } } }) mainWindow.loadFile('index.html') } app.whenReady().then(() => { createWindow() app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow() }) }) app.on('window-all-closed', function () { if (process.platform !== 'darwin') app.quit() })