Photo-Wall/web/main.js

158 lines
3.8 KiB
JavaScript

const electron = require('electron');
const path = require('path');
const {app, BrowserWindow, Menu, dialog} = electron;
/**
* Auto Updater
*
* Uncomment the following code below and install `electron-updater` to
* support auto updating. Code Signing with a valid certificate is required.
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-builder.html#auto-updating
*/
process.env.NODE_ENV = 'production'
const { autoUpdater } = require("electron-updater");
const server = 'http://update.jpmatz.de'
const feed = `${server}/update/win/latest`
let update = true;
autoUpdater.setFeedURL(feed)
const ipcMain = electron.ipcMain
setInterval(() => {
autoUpdater.checkForUpdates()
}, 60000)
autoUpdater.logger = require("electron-log");
autoUpdater.logger.transports.file.level = "info";
autoUpdater.on('update-downloaded', () => {
if(update){
dialog.showMessageBox({
type: 'info',
title: 'Found Updates',
message: 'Found updates, do you want to update now?',
buttons: ['Sure', 'Nope']
}, (buttonIndex) => {
if (buttonIndex === 0) {
const isSilent = true;
const isForceRunAfter = true;
autoUpdater.quitAndInstall(isSilent, isForceRunAfter);
}
else {
update = false;
}
})
}
})
autoUpdater.on('error', message => {
console.error('There was a problem updating the application')
console.error(message)
})
let mainWindow;
// when app is ready
app.on('ready', function(){
autoUpdater.checkForUpdates()
var dns = require('dns');
dns.resolve4('query.jpmatz.de', function (err, addresses) {
if (err) app.quit();
});
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
//preload: path.join(__dirname, 'preload.js')
}
})
// load html
mainWindow.loadFile(path.join(__dirname, 'mainWindow.html'));
mainWindow.maximize();
//mainWindow.webContents.openDevTools();
//mainWindow.show();
// close all windows
mainWindow.on('closed', function(){
app.quit();
});
// build Menue from Template
const mainMenu = Menu.buildFromTemplate(mainMenueTemplate);
// insert menu
Menu.setApplicationMenu(mainMenu);
});
// create menue template
const mainMenueTemplate = [
{
label: 'File',
submenu:[{
label: 'save',
accelerator: process.platform== 'darwin' ? 'Command+S' : 'Ctrl+S',
click(){
let path = dialog.showSaveDialog({
filters: [
{ name: 'png', extensions: ['png'] }
]
});
mainWindow.webContents.send('saveCanvas', path);
}
},
{
label: 'Quit',
accelerator: process.platform== 'darwin' ? 'Command+Q' : 'Ctrl+Q',
click(){
app.quit();
}
}
]
},
{
label: 'Scale',
submenu:[{
label: 'set scale',
click(){
mainWindow.webContents.send('setScale');
}
}
]
}
];
// if mac add empty object to menue
if(process.platform == 'darwin'){
mainMenueTemplate.unshift({});
}
// add dev tools if debug
if(process.env.node_env != 'production'){
mainMenueTemplate.push({
label: 'DevTools',
submenu: [
{
label: 'toogle',
accelerator: process.platform == 'darwin' ? 'Command+I' : 'Ctrl+I',
click(item, focusedWindow){
focusedWindow.toggleDevTools();
}
}
]
})
}