diff --git a/electron/appInfo.js b/electron/appInfo.js index 84e4c19..4937129 100644 --- a/electron/appInfo.js +++ b/electron/appInfo.js @@ -1,4 +1,4 @@ const appName = "EZPPLauncher"; -const appVersion = "2.1.5"; +const appVersion = "2.1.6"; module.exports = { appName, appVersion }; diff --git a/electron/osuUtil.js b/electron/osuUtil.js index fe334b8..67e7a6c 100644 --- a/electron/osuUtil.js +++ b/electron/osuUtil.js @@ -271,6 +271,21 @@ async function downloadEZPPLauncherUpdateFiles(osuPath, updateFiles) { const eventEmitter = new EventEmitter(); const startDownload = async () => { + //NOTE: delete files that are not in the updateFiles array + const foldersToPrune = updateFiles.map(file => path.dirname(path.join(osuPath, ...file.folder.split("/"), file.name))).filter((folder, index, self) => self.indexOf(folder) === index); + for (const pruneFolder of foldersToPrune) { + //NOTE: check if the folder is not the osu root folder. + if (path.basename(pruneFolder) == "osu!") + continue; + for (const files of await fs.promises.readdir(pruneFolder)) { + const filePath = path.join(pruneFolder, files); + if (!updateFiles.some(file => path.join(osuPath, ...file.folder.split("/"), file.name) === filePath)) { + + await fs.promises.rm(filePath, { recursive: true, force: true }); + } + } + } + for (const updateFile of updateFiles) { try { const filePath = path.join( diff --git a/main.js b/main.js index e7e0a3d..7fd6650 100644 --- a/main.js +++ b/main.js @@ -430,6 +430,12 @@ function registerIPCPipes() { return config.all(); }); + ipcMain.handle("ezpplauncher:checkUpdate", async (e) => { + const updateInfo = await updateAvailable(); + if (updateInfo.update) + mainWindow.webContents.send("ezpplauncher:update", updateInfo.release); + }); + ipcMain.handle("ezpplauncher:exitAndUpdate", async (e) => { await shell.openExternal(releasesUrl); app.exit(); @@ -523,9 +529,8 @@ function registerIPCPipes() { progress: Math.ceil(data.progress), }); mainWindow.webContents.send("ezpplauncher:launchstatus", { - status: `Downloading ${data.fileName}(${formatBytes(data.loaded)}/${ - formatBytes(data.total) - })...`, + status: `Downloading ${data.fileName}(${formatBytes(data.loaded)}/${formatBytes(data.total) + })...`, }); }); await updateDownloader.startDownload(); @@ -578,9 +583,8 @@ function registerIPCPipes() { progress: Math.ceil(data.progress), }); mainWindow.webContents.send("ezpplauncher:launchstatus", { - status: `Downloading ${data.fileName}(${ - formatBytes(data.loaded) - }/${formatBytes(data.total)})...`, + status: `Downloading ${data.fileName}(${formatBytes(data.loaded) + }/${formatBytes(data.total)})...`, }); }); await patcherDownloader.startDownload(); @@ -714,8 +718,7 @@ function registerIPCPipes() { const osuGameplayFile = path.join(osuPath, "osu!gameplay.dll"); if (isWritable(osuUIFile) && isWritable(osuGameplayFile)) { logger.log( - `Cleanup complete, took ${ - ((performance.now() - timeStart) / 1000).toFixed(3) + `Cleanup complete, took ${((performance.now() - timeStart) / 1000).toFixed(3) } seconds.`, ); clearInterval(cleanup); @@ -819,10 +822,6 @@ function createWindow() { // Emitted when the window is ready to be shown // This helps in showing the window gracefully. mainWindow.once("ready-to-show", async () => { - const updateInfo = await updateAvailable(); - if (updateInfo.update) { - mainWindow.webContents.send("ezpplauncher:update", updateInfo.release); - } mainWindow.show(); mainWindow.focus(); }); diff --git a/package-lock.json b/package-lock.json index f759658..ce3eb4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "regedit-rs": "^1.0.2", "semver": "^7.5.4", "svelte-french-toast": "^1.2.0", - "sweetalert2": "^11.10.3", + "sweetalert2": "^11.10.8", "systeminformation": "^5.21.22" }, "devDependencies": { @@ -8533,9 +8533,9 @@ "dev": true }, "node_modules/sweetalert2": { - "version": "11.10.7", - "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.7.tgz", - "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg==", + "version": "11.10.8", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.8.tgz", + "integrity": "sha512-oAkYROBfXBY+4sVbQEIcN+ZxAx69lsmz5WEBwdEpyS4m59vOBNlRU5/fJpAI1MVfiDwFZiGwVzB/KBpOyfLNtg==", "funding": { "type": "individual", "url": "https://github.com/sponsors/limonte" diff --git a/package.json b/package.json index 3505afb..0c313d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ezpplauncher-next", - "version": "2.1.5", + "version": "2.1.6", "description": "EZPPLauncher rewritten with Svelte.", "private": false, "license": "MIT", @@ -51,7 +51,7 @@ "regedit-rs": "^1.0.2", "semver": "^7.5.4", "svelte-french-toast": "^1.2.0", - "sweetalert2": "^11.10.3", + "sweetalert2": "^11.10.8", "systeminformation": "^5.21.22" }, "devDependencies": { diff --git a/preload.js b/preload.js index 3270108..966e88e 100644 --- a/preload.js +++ b/preload.js @@ -82,6 +82,10 @@ window.addEventListener("settings-set", async (e) => { await ipcRenderer.invoke("ezpplauncher:settings-set", e.detail); }); +window.addEventListener("updateCheck", async () => { + await ipcRenderer.invoke("ezpplauncher:checkUpdate"); +}) + window.addEventListener("updateExit", async () => { await ipcRenderer.invoke("ezpplauncher:exitAndUpdate"); }); diff --git a/src/App.svelte b/src/App.svelte index baf18b7..be07f01 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -66,6 +66,8 @@ window.dispatchEvent(new CustomEvent("updateExit")); }); + window.dispatchEvent(new CustomEvent("updateCheck")); + window.addEventListener("open-settings", (e) => { currentPage.set(Page.Settings); });