Compare commits

..

2 Commits

2 changed files with 113 additions and 19 deletions

76
main.js
View File

@ -68,26 +68,62 @@ function startOsuStatus() {
} }
const windowTitle = firstInstance.processTitle; const windowTitle = firstInstance.processTitle;
if (lastOsuStatus == windowTitle) return;
lastOsuStatus = windowTitle; lastOsuStatus = windowTitle;
if (!windowTitle.includes("-")) { const currentStatusRequest = await fetch("https://api.ez-pp.farm/get_player_status?name=" + currentUser.username);
richPresence.updateStatus({ const currentStatus = await currentStatusRequest.json();
details: undefined,
state: "Idle...", if (!("player_status" in currentStatus)) return;
}); if (!("status" in currentStatus.player_status)) return;
} else {
const components = windowTitle.split(" - "); let details = "Idle...";
const splitTitle = [components.shift(), components.join(" - ")]; let infoText = currentStatus.player_status.status.info_text.length > 0 ? currentStatus.player_status.status.info_text : " ";
const currentMap = splitTitle[1];
if (!currentMap.endsWith(".osu")) { switch (currentStatus.player_status.status.action) {
richPresence.updateStatus({ case 1:
state: "Playing...", details = "AFK..."
details: currentMap, infoText = " ";
}); break;
} case 2:
details = "Playing...";
break;
case 3:
details = "Editing...";
break;
case 4:
details = "Modding..."
break;
case 5:
details = "Multiplayer: Selecting a Beatmap...";
infoText = " ";
break;
case 6:
details = "Watching...";
break;
case 8:
details = "Testing...";
break;
case 9:
details = "Submitting...";
break;
case 11:
details = "Multiplayer: Idle...";
infoText = " ";
break;
case 12:
details = "Multiplayer: Playing...";
break;
case 13:
details = "Browsing osu!direct...";
infoText = " ";
break;
} }
richPresence.updateStatus({
details,
state: infoText
})
} }
}, 1000); }, 2500);
} }
function stopOsuStatus() { function stopOsuStatus() {
@ -421,12 +457,13 @@ function registerIPCPipes() {
const onExitHook = () => { const onExitHook = () => {
mainWindow.show(); mainWindow.show();
mainWindow.focus();
stopOsuStatus(); stopOsuStatus();
richPresence.updateVersion(); richPresence.updateVersion();
richPresence.updateStatus({ richPresence.updateStatus({
state: "Idle in Launcher...", state: "Idle in Launcher...",
details: undefined, details: undefined
}); })
mainWindow.webContents.send("ezpplauncher:launchstatus", { mainWindow.webContents.send("ezpplauncher:launchstatus", {
status: "Waiting for cleanup...", status: "Waiting for cleanup...",
}); });
@ -441,6 +478,7 @@ function registerIPCPipes() {
mainWindow.hide(); mainWindow.hide();
startOsuStatus(); startOsuStatus();
/* mainWindow.webContents.send("ezpplauncher:launchprogress", { /* mainWindow.webContents.send("ezpplauncher:launchprogress", {
progress: 0, progress: 0,
}); });

View File

@ -0,0 +1,56 @@
const DiscordRPC = require("discord-auto-rpc");
const { appName, appVersion } = require("../../appInfo");
const clientId = "1032772293220384808";
let richPresence;
let currentStatus = {
state: " ",
details: "Idle in Launcher...",
startTimestamp: new Date(),
largeImageKey: "ezppfarm",
largeImageText: `${appName} ${appVersion}`,
smallImageKey: " ",
smallImageText: " ",
buttons: [
{
label: "Download the Launcher",
url: "https://git.ez-pp.farm/EZPPFarm/EZPPLauncher/releases/latest"
},
{
label: "Join EZPPFarm",
url: "https://ez-pp.farm/discord"
}
],
instance: false
}
module.exports = {
connect: () => {
if (!richPresence) {
richPresence = new DiscordRPC.AutoClient({ transport: "ipc" });
richPresence.endlessLogin({ clientId });
richPresence.once("ready", () => {
setInterval(() => {
richPresence.setActivity(currentStatus);
}, 2500)
});
}
},
disconnect: async () => {
if (richPresence) {
await richPresence.clearActivity();
await richPresence.destroy();
richPresence = null;
}
},
updateStatus: ({ state, details }) => {
currentStatus.state = state ?? " ";
currentStatus.details = details ?? " ";
},
updateVersion: (osuVersion) => {
currentStatus.smallImageKey = osuVersion ? "osu" : " ";
currentStatus.smallImageText = osuVersion ? `osu! ${osuVersion}` : " ";
}
}