1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 09:46:22 +00:00

move ipc server to main process

This commit is contained in:
Dick Choi
2016-08-23 00:52:33 +09:00
parent cff3fdae6e
commit 282ca3ea2a
15 changed files with 147 additions and 513 deletions

View File

@@ -54,6 +54,7 @@ trayMenu.append(new MenuItem({
finderWindow.webContents.send('open-main-from-tray')
}
}))
if (process.env.platform !== 'linux' || process.env.DESKTOP_SESSION === 'cinnamon') {
trayMenu.append(new MenuItem({
label: 'Open Finder window',
@@ -62,6 +63,7 @@ if (process.env.platform !== 'linux' || process.env.DESKTOP_SESSION === 'cinnamo
}
}))
}
trayMenu.append(new MenuItem({
label: 'Quit',
click: function () {

View File

@@ -1,52 +0,0 @@
const electron = require('electron')
const ipc = electron.ipcMain
const Menu = electron.Menu
const globalShortcut = electron.globalShortcut
const mainWindow = require('./main-window')
function toggleFinder () {
mainWindow.webContents.send('open-finder', {})
}
function toggleMain () {
if (mainWindow.isFocused()) {
if (process.platform === 'darwin') {
Menu.sendActionToFirstResponder('hide:')
} else {
mainWindow.minimize()
}
} else {
if (process.platform === 'darwin') {
mainWindow.show()
} else {
mainWindow.minimize()
mainWindow.restore()
}
}
}
ipc.on('config-renew', (e, payload) => {
globalShortcut.unregisterAll()
var { config } = payload
var errors = []
try {
globalShortcut.register(config.hotkey.toggleFinder, toggleFinder)
} catch (err) {
errors.push('toggleFinder')
}
try {
globalShortcut.register(config.hotkey.toggleMain, toggleMain)
} catch (err) {
errors.push('toggleMain')
}
if (!config.silent) {
if (errors.length === 0) {
mainWindow.webContents.send('APP_SETTING_DONE', {})
} else {
mainWindow.webContents.send('APP_SETTING_ERROR', {
message: 'Failed to apply hotkey: ' + errors.join(' ')
})
}
}
})

90
lib/ipcServer.js Normal file
View File

@@ -0,0 +1,90 @@
const nodeIpc = require('node-ipc')
const { app, Menu, globalShortcut, ipcMain } = require('electron')
const path = require('path')
const mainWindow = require('./main-window')
nodeIpc.config.id = 'node'
nodeIpc.config.retry = 1500
nodeIpc.config.silent = true
function toggleMainWindow () {
switch (global.process.platform) {
case 'darwin':
if (mainWindow.isFocused()) {
Menu.sendActionToFirstResponder('hide:')
} else {
mainWindow.show()
}
return
default:
if (mainWindow.isFocused()) {
mainWindow.minimize()
} else {
mainWindow.minimize()
mainWindow.restore()
}
}
}
function toggleFinder () {
nodeIpc.server.broadcast('open-finder')
}
ipcMain.on('config-renew', (e, payload) => {
nodeIpc.server.broadcast('config-renew', payload)
globalShortcut.unregisterAll()
var { config } = payload
var errors = []
try {
globalShortcut.register(config.hotkey.toggleFinder, toggleFinder)
} catch (err) {
errors.push('toggleFinder')
}
try {
globalShortcut.register(config.hotkey.toggleMain, toggleMainWindow)
} catch (err) {
errors.push('toggleMain')
}
if (!config.silent) {
if (errors.length === 0) {
mainWindow.webContents.send('APP_SETTING_DONE', {})
} else {
mainWindow.webContents.send('APP_SETTING_ERROR', {
message: 'Failed to apply hotkey: ' + errors.join(' ')
})
}
}
})
nodeIpc.serve(
path.join(app.getPath('userData'), 'boostnote.service'),
function () {
nodeIpc.server.on('open-main-from-finder', toggleMainWindow)
nodeIpc.server.on('quit-from-finder', function () {
app.quit()
})
nodeIpc.server.on('connect', function (socket) {
nodeIpc.log('ipc server >> socket joinned'.rainbow)
socket.on('close', function () {
nodeIpc.log('ipc server >> socket closed'.rainbow)
})
})
nodeIpc.server.on('error', function (err) {
nodeIpc.log('Node IPC error'.rainbow, err)
})
// Todo: Direct connection between Main window renderer & Finder window renderer
nodeIpc.server.on('request-data-from-finder', function () {
nodeIpc.server.broadcast('request-data-from-finder')
})
nodeIpc.server.on('throttle-data', function (payload) {
nodeIpc.server.broadcast('throttle-data', payload)
})
}
)
module.exports = nodeIpc

View File

@@ -8,7 +8,7 @@ const ChildProcess = require('child_process')
const _ = require('lodash')
const GhReleases = require('electron-gh-releases')
// electron.crashReporter.start()
require('./ipc')
var ipcServer = null
var mainWindow = null
var finderWindow = null
@@ -112,8 +112,8 @@ app.on('ready', function () {
}, 1000 * 60 * 60)
checkUpdate()
require('./hotkey')
ipcServer = require('./ipcServer')
ipcServer.server.start()
})
module.exports = app

View File

@@ -2,7 +2,6 @@ const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
const path = require('path')
const ipc = require('./ipc')
var mainWindow = new BrowserWindow({
width: 1080,