Added simple electron wrapper
This commit is contained in:
parent
f33cbcb7d0
commit
86aa075c8d
57
index.js
Normal file
57
index.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
const { app, BrowserWindow, globalShortcut, ipcMain, shell} = require('electron')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const PORT = process.env.PORT || '6595'
|
||||||
|
|
||||||
|
function isDev() {
|
||||||
|
return process.argv[2] == '--dev';
|
||||||
|
}
|
||||||
|
|
||||||
|
function createWindow () {
|
||||||
|
require('./server/dist/app.js')
|
||||||
|
const win = new BrowserWindow({
|
||||||
|
width: 800,
|
||||||
|
height: 600,
|
||||||
|
useContentSize: true,
|
||||||
|
autoHideMenuBar: true,
|
||||||
|
webPreferences: {
|
||||||
|
preload: path.join(__dirname, 'preload.js')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
win.setMenu(null)
|
||||||
|
|
||||||
|
if (isDev()){
|
||||||
|
globalShortcut.register('f5', function() {
|
||||||
|
win.reload()
|
||||||
|
})
|
||||||
|
globalShortcut.register('f12', function() {
|
||||||
|
win.webContents.openDevTools()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open links in external browser
|
||||||
|
win.webContents.on('new-window', function(e, url) {
|
||||||
|
e.preventDefault()
|
||||||
|
shell.openExternal(url)
|
||||||
|
})
|
||||||
|
|
||||||
|
win.loadURL(`http://localhost:${PORT}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
app.whenReady().then(() => {
|
||||||
|
createWindow()
|
||||||
|
|
||||||
|
// Only one istance per time
|
||||||
|
app.on('activate', () => {
|
||||||
|
if (BrowserWindow.getAllWindows().length === 0) {
|
||||||
|
createWindow()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
if (process.platform !== 'darwin') {
|
||||||
|
app.quit()
|
||||||
|
}
|
||||||
|
})
|
17
package.json
Normal file
17
package.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "deemix-gui",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"repository": "https://gitlab.com/RemixDev/deemix-gui.git",
|
||||||
|
"author": "RemixDev <RemixDev64@gmail.com>",
|
||||||
|
"license": "GPL-3.0-only",
|
||||||
|
"scripts": {
|
||||||
|
"start": "electron . --dev",
|
||||||
|
"pack": "electron-builder --dir",
|
||||||
|
"dist": "electron-builder"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"electron": "^12.0.9",
|
||||||
|
"electron-builder": "^22.10.5"
|
||||||
|
}
|
||||||
|
}
|
25
preload.js
Normal file
25
preload.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
const {
|
||||||
|
contextBridge,
|
||||||
|
ipcRenderer
|
||||||
|
} = require("electron");
|
||||||
|
|
||||||
|
// Expose protected methods that allow the renderer process to use
|
||||||
|
// the ipcRenderer without exposing the entire object
|
||||||
|
contextBridge.exposeInMainWorld(
|
||||||
|
"api", {
|
||||||
|
send: (channel, data) => {
|
||||||
|
// whitelist channels
|
||||||
|
let validChannels = [];
|
||||||
|
if (validChannels.includes(channel)) {
|
||||||
|
ipcRenderer.send(channel, data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
receive: (channel, func) => {
|
||||||
|
let validChannels = [];
|
||||||
|
if (validChannels.includes(channel)) {
|
||||||
|
// Deliberately strip event as it includes `sender`
|
||||||
|
ipcRenderer.on(channel, (event, ...args) => func(...args));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
Loading…
Reference in New Issue
Block a user