From 14e317d473f2ed7c7f1a8e0dc9f26ecc39e6a37f Mon Sep 17 00:00:00 2001 From: Robert Kossessa Date: Fri, 1 Mar 2024 21:32:42 +0100 Subject: [PATCH] FIX: ipc & app id --- src/main/index.ts | 51 ++++++++++------------------------- src/renderer/src/App.vue | 58 +++++++++++++++++++++++----------------- 2 files changed, 48 insertions(+), 61 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 6e61c65..3af04bf 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,4 +1,4 @@ -import { app, shell, BrowserWindow, ipcMain, Menu, MenuItem, globalShortcut } from 'electron' +import { app, shell, BrowserWindow, ipcMain, Menu, MenuItem } from 'electron' import { join } from 'path' import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' @@ -28,40 +28,6 @@ const appMenu = { } } -// Default main window function from electron-vite -// Kept for reference -function createWindow(): void { - // Create the browser window. - const mainWindow = new BrowserWindow({ - width: 900, - height: 670, - show: false, - autoHideMenuBar: true, - ...(process.platform === 'linux' ? { icon } : {}), - webPreferences: { - preload: join(__dirname, '../preload/index.js'), - sandbox: false - } - }) - - mainWindow.on('ready-to-show', () => { - mainWindow.show() - }) - - mainWindow.webContents.setWindowOpenHandler((details) => { - shell.openExternal(details.url) - return { action: 'deny' } - }) - - // HMR for renderer base on electron-vite cli. - // Load the remote URL for development or the local html file for production. - if (is.dev && process.env['ELECTRON_RENDERER_URL']) { - mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) - } else { - mainWindow.loadFile(join(__dirname, '../renderer/index.html')) - } -} - const createMainWindow = () => { // Create the browser window. const mainWindow = new BrowserWindow({ @@ -100,6 +66,11 @@ const createMainWindow = () => { mainWindow.webContents.send('electron:unmaximized') }) + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + // HMR for renderer base on electron-vite cli. // Load the remote URL for development or the local html file for production. if (is.dev && process.env['ELECTRON_RENDERER_URL']) { @@ -165,7 +136,7 @@ const createLoadingWindow = (mainWindow) => { // Some APIs can only be used after this event occurs. app.whenReady().then(() => { // Set app user model id for windows - electronApp.setAppUserModelId('com.electron') + electronApp.setAppUserModelId('ZERO/ONE') // Default open or close DevTools by F12 in development // and ignore CommandOrControl + R in production. @@ -257,7 +228,13 @@ app.whenReady().then(() => { app.on('activate', function () { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow() + if (BrowserWindow.getAllWindows().length === 0) { + const mainWindow = createMainWindow() + mainWindow.webContents.once('did-finish-load', () => { + mainWindow.show() + mainWindow.focus() + }) + } }) }) diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index d7d356c..df3cce9 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -4,36 +4,46 @@ import DevicePreview from '@renderer/components/device/DevicePreview.vue' import ConfigPane from '@renderer/components/config/ConfigPane.vue' import Navbar from '@renderer/components/navbar/Navbar.vue' import { useStore } from '@renderer/store' -// import { useMessageHandlers } from '@renderer/device' +import { useMessageHandlers } from '@renderer/device' -// const { electron } = window +const { electron } = window const store = useStore() -// const menuActions = { -// connect: () => store.setConnected(!store.connected), -// orientation: () => store.cycleScreenOrientation(), -// skin: () => store.switchPreviewDeviceModel(), -// } +const menuActions = { + connect: () => store.setConnected(!store.connected), + orientation: () => store.cycleScreenOrientation(), + skin: () => store.switchPreviewDeviceModel() +} -// electron?.onMenu((key) => { -// console.log('menu', key) -// if (menuActions[key]) { -// menuActions[key]() -// } -// }) +electron?.onMenu((key) => { + console.log('menu', key) + if (menuActions[key]) { + menuActions[key]() + } +}) -// store.fetchProfiles() // TODO remove me! +store.fetchProfiles() // TODO remove me! -// // handle device events -// const handlers = useMessageHandlers(store) -// window.nanodevices.on_event('device-attached', (evt, deviceid, data) => store.device_attached(deviceid)) -// window.nanodevices.on_event('device-detached', (evt, deviceid, data) => store.device_detached(deviceid)) -// window.nanodevices.on_event('device-error', (evt, deviceid, data) => { /* TODO handle connection errors */ }) -// window.nanodevices.on_event('connected', (evt, deviceid, data) => store.device_connected(deviceid)) -// window.nanodevices.on_event('disconnected', (evt, deviceid, data) => store.device_disconnected(deviceid)) -// window.nanodevices.on_event('update', (evt, deviceid, data) => { handlers.handle_message(data) }) -// // get list of the currently attached devices -// window.nanodevices.list_devices().then((devs)=>store.init_devices(devs)) +// handle device events +const handlers = useMessageHandlers(store) +window.nanodevices.on_event('device-attached', (evt, deviceid, data) => + store.device_attached(deviceid) +) +window.nanodevices.on_event('device-detached', (evt, deviceid, data) => + store.device_detached(deviceid) +) +window.nanodevices.on_event('device-error', (evt, deviceid, data) => { + /* TODO handle connection errors */ +}) +window.nanodevices.on_event('connected', (evt, deviceid, data) => store.device_connected(deviceid)) +window.nanodevices.on_event('disconnected', (evt, deviceid, data) => + store.device_disconnected(deviceid) +) +window.nanodevices.on_event('update', (evt, deviceid, data) => { + handlers.handle_message(data) +}) +// get list of the currently attached devices +window.nanodevices.list_devices().then((devs) => store.init_devices(devs))