titlebar fixes
This commit is contained in:
		
							
								
								
									
										3
									
								
								app.js
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								app.js
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| const { app, BrowserWindow, ipcMain, dialog, Tray, Menu } = require('electron'); | ||||
| const { setupTitlebar, attachTitlebarToWindow } = require('custom-electron-titlebar/main'); | ||||
| const { setupTitlebar } = require('custom-electron-titlebar/main'); | ||||
| const windowManager = require('./ui/windowManager'); | ||||
| const osuUtil = require('./osuUtil'); | ||||
| const ezppUtil = require('./ezppUtil'); | ||||
| @@ -376,7 +376,6 @@ function createWindow() { | ||||
|  | ||||
|     win.loadFile('./html/index.html'); | ||||
|  | ||||
|     attachTitlebarToWindow(win); | ||||
|     win.webContents.setWindowOpenHandler(() => "deny"); | ||||
|     win.webContents.on('did-finish-load', function () { | ||||
|         if (win.webContents.getZoomFactor() != 0.9) | ||||
|   | ||||
| @@ -1,256 +1,256 @@ | ||||
| const { ipcRenderer, shell } = require('electron'); | ||||
| const { Titlebar, Color } = require('custom-electron-titlebar'); | ||||
| const { Titlebar, TitlebarColor } = require('custom-electron-titlebar'); | ||||
| const appInfo = require('../appInfo'); | ||||
| let titlebar; | ||||
| let currentPage = "loading"; | ||||
| let loggedIn = false; | ||||
|  | ||||
| window.addEventListener('DOMContentLoaded', () => { | ||||
|     titlebar = new Titlebar({ | ||||
|         backgroundColor: Color.fromHex("#24283B"), | ||||
|         itemBackgroundColor: Color.fromHex("#121212"), | ||||
|         menu: null, | ||||
|         maximizable: false | ||||
|     }); | ||||
|   const titlebar = new Titlebar({ | ||||
|     backgroundColor: TitlebarColor.fromHex("#24283B"), | ||||
|     itemBackgroundColor: TitlebarColor.fromHex("#121212"), | ||||
|     menu: null, | ||||
|     enableMnemonics: false, | ||||
|     maximizable: false, | ||||
|   }); | ||||
|  | ||||
|     titlebar.updateTitle(`${appInfo.appName} ${appInfo.appVersion}`); | ||||
|   titlebar.updateTitle(`${appInfo.appName} ${appInfo.appVersion}`); | ||||
|  | ||||
|     const $ = require('jquery'); | ||||
|     const Swal = require('sweetalert2'); | ||||
|   const $ = require('jquery'); | ||||
|   const Swal = require('sweetalert2'); | ||||
|  | ||||
|     $('#account-action').on('click', () => { | ||||
|         if (!loggedIn) { | ||||
|             changePage('login'); | ||||
|   $('#account-action').on('click', () => { | ||||
|     if (!loggedIn) { | ||||
|       changePage('login'); | ||||
|     } else { | ||||
|       $('#welcome-text').text(`Nice to see you!`); | ||||
|       $('#account-action').text('Click to login'); | ||||
|       $('.user-image').css('background-image', `url(https://a.ez-pp.farm/0)`) | ||||
|       loggedIn = false; | ||||
|       ipcRenderer.send("perform-logout"); | ||||
|       Swal.fire({ | ||||
|         title: 'See ya soon!', | ||||
|         text: "Successfully logged out!", | ||||
|         icon: 'success', | ||||
|         confirmButtonText: 'Okay' | ||||
|       }); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   $('#action-cancel').on('click', () => { | ||||
|     if (!loggedIn) { | ||||
|       changePage('launch'); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   let currentState; | ||||
|   $("#launch-btn").on('click', async () => { | ||||
|     switch (currentState) { | ||||
|       case "up-to-date": | ||||
|         $("#launch-btn").attr('disabled', true); | ||||
|         $('#launch-btn').html('Launching...'); | ||||
|         const result = await ipcRenderer.invoke("launch"); | ||||
|         if (!result) { | ||||
|           Swal.fire({ | ||||
|             title: 'Uh oh!', | ||||
|             text: "Something went wrong while launching!", | ||||
|             icon: 'error', | ||||
|             confirmButtonText: 'Okay' | ||||
|           }); | ||||
|           $("#launch-btn").attr('disabled', false); | ||||
|           $('#launch-btn').html('Launch'); | ||||
|         } else { | ||||
|             $('#welcome-text').text(`Nice to see you!`); | ||||
|             $('#account-action').text('Click to login'); | ||||
|             $('.user-image').css('background-image', `url(https://a.ez-pp.farm/0)`) | ||||
|             loggedIn = false; | ||||
|             ipcRenderer.send("perform-logout"); | ||||
|             Swal.fire({ | ||||
|                 title: 'See ya soon!', | ||||
|                 text: "Successfully logged out!", | ||||
|                 icon: 'success', | ||||
|                 confirmButtonText: 'Okay' | ||||
|             }); | ||||
|           $("#launch-btn").attr('disabled', true); | ||||
|           $('#launch-btn').html('Running...'); | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     $('#action-cancel').on('click', () => { | ||||
|         if (!loggedIn) { | ||||
|             changePage('launch'); | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     let currentState; | ||||
|     $("#launch-btn").on('click', async () => { | ||||
|         switch (currentState) { | ||||
|             case "up-to-date": | ||||
|                 $("#launch-btn").attr('disabled', true); | ||||
|                 $('#launch-btn').html('Launching...'); | ||||
|                 const result = await ipcRenderer.invoke("launch"); | ||||
|                 if (!result) { | ||||
|                     Swal.fire({ | ||||
|                         title: 'Uh oh!', | ||||
|                         text: "Something went wrong while launching!", | ||||
|                         icon: 'error', | ||||
|                         confirmButtonText: 'Okay' | ||||
|                     }); | ||||
|                     $("#launch-btn").attr('disabled', false); | ||||
|                     $('#launch-btn').html('Launch'); | ||||
|                 } else { | ||||
|                     $("#launch-btn").attr('disabled', true); | ||||
|                     $('#launch-btn').html('Running...'); | ||||
|                 } | ||||
|                 break; | ||||
|             case "update-available": | ||||
|                 $("#launch-btn").attr('disabled', true); | ||||
|                 $('#launch-btn').html('Updating...'); | ||||
|                 ipcRenderer.send("do-update"); | ||||
|                 break; | ||||
|             case "missing-folder": | ||||
|                 const responseData = await ipcRenderer.invoke('set-osu-dir'); | ||||
|                 if (!responseData) | ||||
|                     return; | ||||
|                 if (responseData.validOsuDir) { | ||||
|                     Swal.fire({ | ||||
|                         title: 'Success!', | ||||
|                         text: 'osu! folder set.', | ||||
|                         icon: 'success', | ||||
|                         confirmButtonText: 'Cool' | ||||
|                     }) | ||||
|                     $('#currentOsuPath').text(responseData.folderPath); | ||||
|                     ipcRenderer.send("do-update-check"); | ||||
|                 } else { | ||||
|                     Swal.fire({ | ||||
|                         title: 'Uh oh!', | ||||
|                         text: 'The selected folder is not a osu! directory.', | ||||
|                         icon: 'error', | ||||
|                         confirmButtonText: 'Oops.. my bad!' | ||||
|                     }) | ||||
|                 } | ||||
|                 break; | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     $("#action-login").on('click', async () => { | ||||
|         const username = $('#login-username').val(); | ||||
|         const password = $('#login-password').val(); | ||||
|         $("#action-login").attr('disabled', true); | ||||
|         $("#action-cancel").attr('disabled', true); | ||||
|         const responseData = await ipcRenderer.invoke('perform-login', { username, password }); | ||||
|         $("#action-login").attr('disabled', false); | ||||
|         $("#action-cancel").attr('disabled', false); | ||||
|         if (!responseData) | ||||
|             return; | ||||
|         if (responseData.code != 200) { | ||||
|             Swal.fire({ | ||||
|                 title: 'Uh oh!', | ||||
|                 text: responseData.message, | ||||
|                 icon: 'error', | ||||
|                 confirmButtonText: 'Oops.. my bad!' | ||||
|             }) | ||||
|             return; | ||||
|         } | ||||
|         $('#login-username').val(""); | ||||
|         $('#login-password').val(""); | ||||
|         $('#welcome-text').text(`Welcome back, ${responseData.user.name}!`); | ||||
|         $('#account-action').text('Not you?'); | ||||
|         $('.user-image').css('background-image', `url(https://a.ez-pp.farm/${responseData.user.id})`); | ||||
|         loggedIn = true; | ||||
|         changePage('launch'); | ||||
|     }) | ||||
|  | ||||
|     $("#change-folder-btn").on('click', async () => { | ||||
|         break; | ||||
|       case "update-available": | ||||
|         $("#launch-btn").attr('disabled', true); | ||||
|         $('#launch-btn').html('Updating...'); | ||||
|         ipcRenderer.send("do-update"); | ||||
|         break; | ||||
|       case "missing-folder": | ||||
|         const responseData = await ipcRenderer.invoke('set-osu-dir'); | ||||
|         if (!responseData) | ||||
|             return; | ||||
|           return; | ||||
|         if (responseData.validOsuDir) { | ||||
|             Swal.fire({ | ||||
|                 title: 'Success!', | ||||
|                 text: 'osu! folder set.', | ||||
|                 icon: 'success', | ||||
|                 confirmButtonText: 'Cool' | ||||
|             }) | ||||
|             $('#currentOsuPath').text(responseData.folderPath); | ||||
|             ipcRenderer.send("do-update-check"); | ||||
|           Swal.fire({ | ||||
|             title: 'Success!', | ||||
|             text: 'osu! folder set.', | ||||
|             icon: 'success', | ||||
|             confirmButtonText: 'Cool' | ||||
|           }) | ||||
|           $('#currentOsuPath').text(responseData.folderPath); | ||||
|           ipcRenderer.send("do-update-check"); | ||||
|         } else { | ||||
|             Swal.fire({ | ||||
|                 title: 'Uh oh!', | ||||
|                 text: 'The selected folder is not a osu! directory.', | ||||
|                 icon: 'error', | ||||
|                 confirmButtonText: 'Oops.. my bad!' | ||||
|             }) | ||||
|           Swal.fire({ | ||||
|             title: 'Uh oh!', | ||||
|             text: 'The selected folder is not a osu! directory.', | ||||
|             icon: 'error', | ||||
|             confirmButtonText: 'Oops.. my bad!' | ||||
|           }) | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     ipcRenderer.on('config_update', (event, data) => { | ||||
|         if (data.osuPath) { | ||||
|             $('#currentOsuPath').text(data.osuPath); | ||||
|         } | ||||
|     }) | ||||
|  | ||||
|     ipcRenderer.on('launcher_update', async (event, data) => { | ||||
|         const res = await Swal.fire({ | ||||
|             title: 'Update available!', | ||||
|             text: `Version ${data.version} has been released!`, | ||||
|             icon: 'info', | ||||
|             showCancelButton: true, | ||||
|             confirmButtonText: 'Download', | ||||
|             cancelButtonText: 'Remind me later', | ||||
|         }); | ||||
|         if (res.isConfirmed) { | ||||
|             shell.openExternal(data.url); | ||||
|         } | ||||
|     }) | ||||
|  | ||||
|     ipcRenderer.on('account_update', (event, data) => { | ||||
|         switch (data.type) { | ||||
|             case "login-failed": | ||||
|                 Swal.fire({ | ||||
|                     title: 'Uh oh!', | ||||
|                     text: data.message, | ||||
|                     icon: 'error', | ||||
|                     confirmButtonText: 'Okay' | ||||
|                 }); | ||||
|                 changePage("launch"); | ||||
|                 break; | ||||
|             case "not-loggedin": | ||||
|                 changePage("launch"); | ||||
|                 break; | ||||
|             case "loggedin": | ||||
|                 changePage("launch"); | ||||
|                 $('#welcome-text').text(`Welcome back, ${data.user.name}!`); | ||||
|                 $('#account-action').text('Not you?'); | ||||
|                 $('.user-image').css('background-image', `url(https://a.ez-pp.farm/${data.user.id})`); | ||||
|                 loggedIn = true; | ||||
|                 break; | ||||
|         } | ||||
|     }) | ||||
|  | ||||
|     ipcRenderer.on('status_update', (event, status) => { | ||||
|         switch (status.type) { | ||||
|             case "up-to-date": | ||||
|                 $("#launch-btn").attr('disabled', false); | ||||
|                 $('#launch-btn').html('Launch'); | ||||
|                 currentState = status.type; | ||||
|                 break; | ||||
|             case "update-available": | ||||
|                 $("#launch-btn").attr('disabled', false); | ||||
|                 $('#launch-btn').html('Update'); | ||||
|                 currentState = status.type; | ||||
|                 break; | ||||
|             case "missing-folder": | ||||
|                 $("#launch-btn").attr('disabled', false); | ||||
|                 $('#launch-btn').html('set your osu! folder'); | ||||
|                 currentState = status.type; | ||||
|                 break; | ||||
|             case "error": | ||||
|                 Swal.fire({ | ||||
|                     title: 'Uh oh!', | ||||
|                     text: status.message, | ||||
|                     icon: 'error', | ||||
|                     confirmButtonText: 'Okay' | ||||
|                 }); | ||||
|                 ipcRenderer.send("do-update-check"); | ||||
|                 break; | ||||
|             case "info": | ||||
|                 Swal.fire({ | ||||
|                     title: 'Info!', | ||||
|                     text: status.message, | ||||
|                     icon: 'info', | ||||
|                     confirmButtonText: 'Okay' | ||||
|                 }); | ||||
|                 break; | ||||
|             case "package-issue": | ||||
|                 Swal.fire({ | ||||
|                     title: 'Uh oh!', | ||||
|                     text: status.message, | ||||
|                     icon: 'error', | ||||
|                     confirmButtonText: 'Okay' | ||||
|                 }); | ||||
|                 $("#launch-btn").attr('disabled', true); | ||||
|                 $('#launch-btn').html('missing packages'); | ||||
|                 break; | ||||
|             case "update-complete": | ||||
|                 Swal.fire({ | ||||
|                     title: 'Yaaay!', | ||||
|                     text: "Your osu! client has been successfully updated!", | ||||
|                     icon: 'success', | ||||
|                     confirmButtonText: 'Thanks :3' | ||||
|                 }); | ||||
|                 ipcRenderer.send("do-update-check"); | ||||
|                 break; | ||||
|         } | ||||
|     }) | ||||
|  | ||||
|     function changePage(page) { | ||||
|         $(`#${currentPage}-page`).fadeOut(50, "swing", () => { | ||||
|             $(`#${page}-page`).fadeIn(350); | ||||
|         }); | ||||
|         currentPage = page; | ||||
|         break; | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|     // workaround for the dark theme | ||||
|     $('head').append($('<link href="../assets/sweetalert2.dark.css" rel="stylesheet" />')); | ||||
|   $("#action-login").on('click', async () => { | ||||
|     const username = $('#login-username').val(); | ||||
|     const password = $('#login-password').val(); | ||||
|     $("#action-login").attr('disabled', true); | ||||
|     $("#action-cancel").attr('disabled', true); | ||||
|     const responseData = await ipcRenderer.invoke('perform-login', { username, password }); | ||||
|     $("#action-login").attr('disabled', false); | ||||
|     $("#action-cancel").attr('disabled', false); | ||||
|     if (!responseData) | ||||
|       return; | ||||
|     if (responseData.code != 200) { | ||||
|       Swal.fire({ | ||||
|         title: 'Uh oh!', | ||||
|         text: responseData.message, | ||||
|         icon: 'error', | ||||
|         confirmButtonText: 'Oops.. my bad!' | ||||
|       }) | ||||
|       return; | ||||
|     } | ||||
|     $('#login-username').val(""); | ||||
|     $('#login-password').val(""); | ||||
|     $('#welcome-text').text(`Welcome back, ${responseData.user.name}!`); | ||||
|     $('#account-action').text('Not you?'); | ||||
|     $('.user-image').css('background-image', `url(https://a.ez-pp.farm/${responseData.user.id})`); | ||||
|     loggedIn = true; | ||||
|     changePage('launch'); | ||||
|   }) | ||||
|  | ||||
|   $("#change-folder-btn").on('click', async () => { | ||||
|     const responseData = await ipcRenderer.invoke('set-osu-dir'); | ||||
|     if (!responseData) | ||||
|       return; | ||||
|     if (responseData.validOsuDir) { | ||||
|       Swal.fire({ | ||||
|         title: 'Success!', | ||||
|         text: 'osu! folder set.', | ||||
|         icon: 'success', | ||||
|         confirmButtonText: 'Cool' | ||||
|       }) | ||||
|       $('#currentOsuPath').text(responseData.folderPath); | ||||
|       ipcRenderer.send("do-update-check"); | ||||
|     } else { | ||||
|       Swal.fire({ | ||||
|         title: 'Uh oh!', | ||||
|         text: 'The selected folder is not a osu! directory.', | ||||
|         icon: 'error', | ||||
|         confirmButtonText: 'Oops.. my bad!' | ||||
|       }) | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   ipcRenderer.on('config_update', (event, data) => { | ||||
|     if (data.osuPath) { | ||||
|       $('#currentOsuPath').text(data.osuPath); | ||||
|     } | ||||
|   }) | ||||
|  | ||||
|   ipcRenderer.on('launcher_update', async (event, data) => { | ||||
|     const res = await Swal.fire({ | ||||
|       title: 'Update available!', | ||||
|       text: `Version ${data.version} has been released!`, | ||||
|       icon: 'info', | ||||
|       showCancelButton: true, | ||||
|       confirmButtonText: 'Download', | ||||
|       cancelButtonText: 'Remind me later', | ||||
|     }); | ||||
|     if (res.isConfirmed) { | ||||
|       shell.openExternal(data.url); | ||||
|     } | ||||
|   }) | ||||
|  | ||||
|   ipcRenderer.on('account_update', (event, data) => { | ||||
|     switch (data.type) { | ||||
|       case "login-failed": | ||||
|         Swal.fire({ | ||||
|           title: 'Uh oh!', | ||||
|           text: data.message, | ||||
|           icon: 'error', | ||||
|           confirmButtonText: 'Okay' | ||||
|         }); | ||||
|         changePage("launch"); | ||||
|         break; | ||||
|       case "not-loggedin": | ||||
|         changePage("launch"); | ||||
|         break; | ||||
|       case "loggedin": | ||||
|         changePage("launch"); | ||||
|         $('#welcome-text').text(`Welcome back, ${data.user.name}!`); | ||||
|         $('#account-action').text('Not you?'); | ||||
|         $('.user-image').css('background-image', `url(https://a.ez-pp.farm/${data.user.id})`); | ||||
|         loggedIn = true; | ||||
|         break; | ||||
|     } | ||||
|   }) | ||||
|  | ||||
|   ipcRenderer.on('status_update', (event, status) => { | ||||
|     switch (status.type) { | ||||
|       case "up-to-date": | ||||
|         $("#launch-btn").attr('disabled', false); | ||||
|         $('#launch-btn').html('Launch'); | ||||
|         currentState = status.type; | ||||
|         break; | ||||
|       case "update-available": | ||||
|         $("#launch-btn").attr('disabled', false); | ||||
|         $('#launch-btn').html('Update'); | ||||
|         currentState = status.type; | ||||
|         break; | ||||
|       case "missing-folder": | ||||
|         $("#launch-btn").attr('disabled', false); | ||||
|         $('#launch-btn').html('set your osu! folder'); | ||||
|         currentState = status.type; | ||||
|         break; | ||||
|       case "error": | ||||
|         Swal.fire({ | ||||
|           title: 'Uh oh!', | ||||
|           text: status.message, | ||||
|           icon: 'error', | ||||
|           confirmButtonText: 'Okay' | ||||
|         }); | ||||
|         ipcRenderer.send("do-update-check"); | ||||
|         break; | ||||
|       case "info": | ||||
|         Swal.fire({ | ||||
|           title: 'Info!', | ||||
|           text: status.message, | ||||
|           icon: 'info', | ||||
|           confirmButtonText: 'Okay' | ||||
|         }); | ||||
|         break; | ||||
|       case "package-issue": | ||||
|         Swal.fire({ | ||||
|           title: 'Uh oh!', | ||||
|           text: status.message, | ||||
|           icon: 'error', | ||||
|           confirmButtonText: 'Okay' | ||||
|         }); | ||||
|         $("#launch-btn").attr('disabled', true); | ||||
|         $('#launch-btn').html('missing packages'); | ||||
|         break; | ||||
|       case "update-complete": | ||||
|         Swal.fire({ | ||||
|           title: 'Yaaay!', | ||||
|           text: "Your osu! client has been successfully updated!", | ||||
|           icon: 'success', | ||||
|           confirmButtonText: 'Thanks :3' | ||||
|         }); | ||||
|         ipcRenderer.send("do-update-check"); | ||||
|         break; | ||||
|     } | ||||
|   }) | ||||
|  | ||||
|   function changePage(page) { | ||||
|     $(`#${currentPage}-page`).fadeOut(50, "swing", () => { | ||||
|       $(`#${page}-page`).fadeIn(350); | ||||
|     }); | ||||
|     currentPage = page; | ||||
|   } | ||||
|  | ||||
|   // workaround for the dark theme | ||||
|   $('head').append($('<link href="../assets/sweetalert2.dark.css" rel="stylesheet" />')); | ||||
| }) | ||||
| @@ -1,6 +1,6 @@ | ||||
| const path = require("path"); | ||||
| const appInfo = require('../appInfo'); | ||||
| const { BrowserWindow } = require('electron'); | ||||
| const { BrowserWindow, Menu } = require('electron'); | ||||
| const { attachTitlebarToWindow } = require('custom-electron-titlebar/main'); | ||||
|  | ||||
| module.exports = { | ||||
| @@ -26,6 +26,10 @@ module.exports = { | ||||
|             }, | ||||
|             icon: './assets/logo.png' | ||||
|         }) | ||||
|  | ||||
|         const menu = Menu.buildFromTemplate([]) | ||||
|         Menu.setApplicationMenu(menu); | ||||
|  | ||||
|         window.hide(); | ||||
|  | ||||
|         window.webContents.once("did-finish-load", function (event, input) { | ||||
| @@ -33,6 +37,7 @@ module.exports = { | ||||
|         }); | ||||
|  | ||||
|         window.webContents.setUserAgent(`${appInfo.appName} ${appInfo.appVersion}`); | ||||
|  | ||||
|         attachTitlebarToWindow(window); | ||||
|  | ||||
|         return window; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user