ADD: Loading window & vite-eslint

This commit is contained in:
Robert Kossessa
2024-02-07 17:41:45 +01:00
parent b957c11526
commit 9ce9fe434a
12 changed files with 248 additions and 79 deletions

View File

@@ -11,13 +11,16 @@ if (ess) {
app.quit()
}
const splashTime = 6000
const zoomFactor = 1
const width = 1111
const height = 666
const createWindow = () => {
const createMainWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
show: false,
width: width,
height: height,
titleBarStyle: 'hidden',
@@ -34,7 +37,6 @@ const createWindow = () => {
devTools: !app.isPackaged,
preload: path.join(__dirname, 'preload.js'),
zoomFactor: zoomFactor,
enableRemoteModule: true,
},
})
@@ -54,7 +56,7 @@ const createWindow = () => {
// and load the index.html of the app.
if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL)
mainWindow.loadURL(`${MAIN_WINDOW_VITE_DEV_SERVER_URL}/index.html`)
} else {
mainWindow.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`))
}
@@ -62,6 +64,46 @@ const createWindow = () => {
return mainWindow
}
const createLoadingWindow = (mainWindow) => {
const loadingWindow = new BrowserWindow({
show: false,
width: 400,
height: 600,
transparent: true,
frame: false,
center: true,
webPreferences: {
devTools: !app.isPackaged,
},
})
const startTime = Date.now()
let loading = true
let loadingTimeout
loadingWindow.once('show', () => {
mainWindow.webContents.once('ready-to-show', () => {
loadingTimeout = setTimeout(() => {
loading = false
mainWindow.show()
loadingWindow.close()
}, Math.max(0, splashTime - (Date.now() - startTime)))
})
})
loadingWindow.once('closed', () => {
if (loading) {
clearTimeout(loadingTimeout)
mainWindow.close()
}
})
loadingWindow.once('ready-to-show', () => {
loadingWindow.show()
})
if (LOADING_WINDOW_VITE_DEV_SERVER_URL) {
loadingWindow.loadURL(`${LOADING_WINDOW_VITE_DEV_SERVER_URL}/loading.html`)
} else {
loadingWindow.loadFile(path.join(__dirname, `../renderer/${LOADING_WINDOW_VITE_NAME}/loading.html`))
}
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
@@ -71,7 +113,8 @@ app.whenReady().then(() => {
ipcMain.handle('nanodevices:disconnect', nanodevices.disconnect)
ipcMain.handle('nano:get', nano.get)
ipcMain.handle('nano:set', nano.set)
const mainWindow = createWindow()
const mainWindow = createMainWindow()
createLoadingWindow(mainWindow)
ipcMain.on('electron:minimizeWindow', () => mainWindow.minimize())
ipcMain.on('electron:toggleMaximizeWindow', () => {
if (mainWindow.isMaximized()) {
@@ -109,7 +152,10 @@ app.on('activate', () => {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
const mainWindow = createMainWindow()
mainWindow.once('ready-to-show', () => {
mainWindow.show()
})
}
})