6a6908c4c8
* fix: allow cancelling of bluetooth requests allows cancelling of bluetooth requests when no devices present * docs: update docs to reflect how bluetooth works.
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
const {app, BrowserWindow, ipcMain} = require('electron')
|
|
const path = require('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()
|
|
})
|