From 084409a955ee07f57dd1cac4d91b0095e1c4d99a Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Wed, 14 May 2025 11:15:01 +0200 Subject: [PATCH] fix: update rich presence methods to use async/await for improved reliability --- electron/richPresence.js | 19 +++++++++---------- main.js | 8 ++++---- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/electron/richPresence.js b/electron/richPresence.js index 7f26e2a..e4344cb 100644 --- a/electron/richPresence.js +++ b/electron/richPresence.js @@ -34,23 +34,22 @@ module.exports = { if (!richPresence) { richPresence = new DiscordRPC.AutoClient({ transport: "ipc" }); richPresence.endlessLogin({ clientId }); - richPresence.once("ready", () => { + richPresence.once("ready", async () => { console.log( "connected presence with user " + richPresence.user.username, ); - richPresence.setActivity(currentStatus); - intervalId = setInterval(() => { - richPresence.setActivity(currentStatus); - }, 2500); + await richPresence.setActivity(currentStatus); + intervalId = setInterval(() => richPresence.setActivity(currentStatus), 2500); }); } }, disconnect: async () => { if (richPresence) { - clearInterval(intervalId); - await richPresence.clearActivity(); - await richPresence.destroy(); + const presence = richPresence; richPresence = null; + clearInterval(intervalId); + await presence.clearActivity(); + await presence.destroy(); } }, updateStatus: ({ state, details, largeImageKey }) => { @@ -62,9 +61,9 @@ module.exports = { currentStatus.smallImageKey = id ? `https://a.ez-pp.farm/${id}` : " "; currentStatus.smallImageText = username ?? " "; }, - update: () => { + update: async () => { if (richPresence && richPresence.user) { - richPresence.setActivity(currentStatus); + await richPresence.setActivity(currentStatus); } }, hasPresence: () => richPresence != undefined, diff --git a/main.js b/main.js index 12ea4f3..5ef5af5 100644 --- a/main.js +++ b/main.js @@ -98,7 +98,7 @@ function startOsuStatus() { id, username, }); - richPresence.update(); + await richPresence.update(); } } } catch { @@ -235,7 +235,7 @@ function startOsuStatus() { largeImageKey, }); - richPresence.update(); + await richPresence.update(); } }, 2500); } @@ -732,7 +732,7 @@ function registerIPCPipes() { logger.log("Launching osu!..."); - const onExitHook = () => { + const onExitHook = async () => { logger.log("osu! has exited."); mainWindow.show(); mainWindow.focus(); @@ -745,7 +745,7 @@ function registerIPCPipes() { state: "Idle in Launcher...", details: undefined, }); - richPresence.update(); + await richPresence.update(); mainWindow.webContents.send("ezpplauncher:launchstatus", { status: "Waiting for cleanup...", });