diff --git a/index.js b/index.js new file mode 100644 index 000000000..85950e1f2 --- /dev/null +++ b/index.js @@ -0,0 +1,54 @@ +'use strict'; +const electron = require('electron'); + +const app = electron.app; + +// Adds debug features like hotkeys for triggering dev tools and reload +require('electron-debug')(); + +// Prevent window being garbage collected +let mainWindow; + +function onClosed() { + // Dereference the window + // For multiple windows store them in an array + mainWindow = null; +} + +function createMainWindow() { + const win = new electron.BrowserWindow({ + width: 1200, + height: 900 + }); + + win.setMenu(null); + win.loadURL('http://localhost:3000'); + win.on('closed', onClosed); + + win.webContents.on('new-window', (e, url) => { + if (url !== mainWindow.webContents.getURL()) { + e.preventDefault(); + require('electron').shell.openExternal(url); + } + }); + + return win; +} + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (!mainWindow) { + mainWindow = createMainWindow(); + } +}); + +app.on('ready', () => { + mainWindow = createMainWindow(); +}); + +require('./bin/www'); diff --git a/package.json b/package.json index 5947455a9..5161c79d2 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,17 @@ "version": "0.0.1", "private": true, "scripts": { - "start": "node ./bin/www" + "start": "node ./bin/www", + "test-electron": "xo", + "start-electron": "electron .", + "build-electron": "electron-packager . --out=dist --asar --overwrite --all" }, "dependencies": { "body-parser": "~1.18.2", "cookie-parser": "~1.4.3", "debug": "~3.1.0", "ejs": "~2.5.7", + "electron": "^1.7.9", "express": "~4.16.2", "express-session": "^1.15.6", "express-sessions": "^1.0.6", @@ -20,6 +24,20 @@ "scrypt": "^6.0.3", "serve-favicon": "~2.4.5", "session-file-store": "^1.1.2", - "sqlite": "^2.8.0" + "sqlite": "^2.8.0", + "electron-debug": "^1.0.0", + "electron-rebuild": "^1.6.0" + }, + "devDependencies": { + "devtron": "^1.1.0", + "electron-packager": "^8.0.0", + "electron": "^1.6.6", + "xo": "^0.18.0" + }, + "xo": { + "envs": [ + "node", + "browser" + ] } } diff --git a/public/javascripts/init.js b/public/javascripts/init.js index 756e34085..8b86963fd 100644 --- a/public/javascripts/init.js +++ b/public/javascripts/init.js @@ -80,4 +80,8 @@ $(document).tooltip({ }); }); } -}); \ No newline at end of file +}); + +function isElectron() { + return window && window.process && window.process.type; +} \ No newline at end of file diff --git a/views/error.ejs b/views/error.ejs deleted file mode 100644 index 7cf94edf1..000000000 --- a/views/error.ejs +++ /dev/null @@ -1,3 +0,0 @@ -
<%= error.stack %>diff --git a/views/index.ejs b/views/index.ejs index 9ea79cbeb..273e8f426 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -217,6 +217,9 @@ const baseApiUrl = 'api/'; + + + diff --git a/views/login.ejs b/views/login.ejs index 0c63ac9d5..55f4187e8 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -43,7 +43,10 @@ - + + + +