62 lines
1.8 KiB
JavaScript
62 lines
1.8 KiB
JavaScript
const { app, BrowserWindow } = require('electron/main')
|
|
|
|
function createWindow () {
|
|
const mainWindow = new BrowserWindow({
|
|
width: 800,
|
|
height: 600
|
|
})
|
|
|
|
mainWindow.webContents.session.on('select-serial-port', (event, portList, webContents, callback) => {
|
|
// Add listeners to handle ports being added or removed before the callback for `select-serial-port`
|
|
// is called.
|
|
mainWindow.webContents.session.on('serial-port-added', (event, port) => {
|
|
console.log('serial-port-added FIRED WITH', port)
|
|
// Optionally update portList to add the new port
|
|
})
|
|
|
|
mainWindow.webContents.session.on('serial-port-removed', (event, port) => {
|
|
console.log('serial-port-removed FIRED WITH', port)
|
|
// Optionally update portList to remove the port
|
|
})
|
|
|
|
event.preventDefault()
|
|
if (portList && portList.length > 0) {
|
|
callback(portList[0].portId)
|
|
} else {
|
|
// eslint-disable-next-line n/no-callback-literal
|
|
callback('') // Could not find any matching devices
|
|
}
|
|
})
|
|
|
|
mainWindow.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
|
|
if (permission === 'serial' && details.securityOrigin === 'file:///') {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
})
|
|
|
|
mainWindow.webContents.session.setDevicePermissionHandler((details) => {
|
|
if (details.deviceType === 'serial' && details.origin === 'file://') {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
})
|
|
|
|
mainWindow.loadFile('index.html')
|
|
|
|
mainWindow.webContents.openDevTools()
|
|
}
|
|
|
|
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()
|
|
})
|