58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
const { app, BrowserWindow, ipcMain } = require('electron/main')
|
|
const path = require('node:path')
|
|
|
|
let bluetoothPinCallback
|
|
let selectBluetoothCallback
|
|
|
|
function createWindow () {
|
|
const mainWindow = new BrowserWindow({
|
|
width: 800,
|
|
height: 600,
|
|
webPreferences: {
|
|
preload: path.join(__dirname, 'preload.js')
|
|
}
|
|
})
|
|
|
|
mainWindow.webContents.on('select-bluetooth-device', (event, deviceList, callback) => {
|
|
event.preventDefault()
|
|
selectBluetoothCallback = callback
|
|
const result = deviceList.find((device) => {
|
|
return device.deviceName === 'test'
|
|
})
|
|
if (result) {
|
|
callback(result.deviceId)
|
|
} else {
|
|
// The device wasn't found so we need to either wait longer (eg until the
|
|
// device is turned on) or until the user cancels the request
|
|
}
|
|
})
|
|
|
|
ipcMain.on('cancel-bluetooth-request', (event) => {
|
|
selectBluetoothCallback('')
|
|
})
|
|
|
|
// Listen for a message from the renderer to get the response for the Bluetooth pairing.
|
|
ipcMain.on('bluetooth-pairing-response', (event, response) => {
|
|
bluetoothPinCallback(response)
|
|
})
|
|
|
|
mainWindow.webContents.session.setBluetoothPairingHandler((details, callback) => {
|
|
bluetoothPinCallback = callback
|
|
// Send a message to the renderer to prompt the user to confirm the pairing.
|
|
mainWindow.webContents.send('bluetooth-pairing-request', details)
|
|
})
|
|
|
|
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()
|
|
})
|