1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- const { app, BrowserWindow } = require('electron')
- 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) => {
- return !grantedDeviceThroughPermHandler || (device.deviceId !== grantedDeviceThroughPermHandler.deviceId)
- })
- 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.webContents.session.setUSBProtectedClassesHandler((details) => {
- return details.protectedClasses.filter((usbClass) => {
- // Exclude classes except for audio classes
- return usbClass.indexOf('audio') === -1
- })
- })
- 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()
- })
|