import { app, BrowserWindow, ipcMain, shell } from 'electron'
import path from 'path'
import os from 'os'
// needed in case process is undefined under Linux
const platform = process.platform || os.platform()
let mainWindow
function createWindow () {
/**
* Initial window options
*/
mainWindow = new BrowserWindow({
icon: path.resolve(__dirname, 'icons/icon.png'), // tray icon
width: 1000,
minWidth: 1000,
minHeight: 600,
height: 600,
autoHideMenuBar: true,
useContentSize: true,
webPreferences: {
contextIsolation: true,
// More info: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/electron-preload-script
preload: path.resolve(__dirname, process.env.QUASAR_ELECTRON_PRELOAD)
}
})
mainWindow.loadURL(process.env.APP_URL)
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
shell.openExternal(url)
return { action: 'deny' }
})
if (process.env.DEBUGGING) {
// if on DEV or Production with debug enabled
mainWindow.webContents.openDevTools()
} else {
// we're on production; no access to devtools pls
mainWindow.webContents.on('devtools-opened', () => {
mainWindow.webContents.closeDevTools()
})
}
ipcMain.handle('get-opened-file', async () => {
let file = null
// open file on wiwindows using process.argv
if (platform === 'win32' && process.argv.length >= 2) {
process.argv.forEach((val, index) => {
if (val.endsWith('.newsletter')) {
// read file contents to string
const fs = require('fs')
const data = fs.readFileSync(val, 'utf8')
file = data
}
})
}
return file
})
mainWindow.on('closed', () => {
mainWindow = null
})
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
if (platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (mainWindow === null) {
createWindow()
}
})