Welcome back, Discord RPC

- Use new image for the RPC
- Switch to an updated library
This commit is contained in:
Agampreet Singh
2023-06-09 17:04:37 +05:30
parent 406b7041f2
commit cf8ee83edc
9 changed files with 160 additions and 1 deletions

View File

@@ -6,7 +6,7 @@ const contextMenu = require("electron-context-menu");
const path = require("path");
const store = require("./store");
const log = require("electron-log");
const { setActivity, loginToRPC, clearActivity } = require("./rpc");
const useragents = require("./useragents.json");
log.transports.file.level = "verbose";
@@ -116,9 +116,14 @@ function createWindow() {
}
);
require("./rpc.js");
win.webContents.on("did-finish-load", () => {
splash.destroy();
win.show();
if (store.get("discordrpcstatus") === "true") {
setActivity(`On "${win.webContents.getTitle()}"`);
}
});
}
@@ -133,9 +138,19 @@ app.on("web-contents-created", (event, contents) => {
return { action: "allow" };
} else {
BrowserWindow.getFocusedWindow().loadURL(url);
if (store.get("discordrpcstatus") === "true") {
setActivity(
`On "${BrowserWindow.getFocusedWindow().webContents.getTitle()}"`
);
}
return { action: "deny" };
}
} else {
if (store.get("discordrpcstatus") === "true") {
setActivity(
`On "${BrowserWindow.getFocusedWindow().webContents.getTitle()}"`
);
}
return { action: "allow" };
}
});
@@ -145,6 +160,7 @@ app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
clearActivity();
});
app.on("activate", () => {
@@ -173,4 +189,8 @@ app.on("ready", function () {
});
});
autoUpdater.checkForUpdatesAndNotify();
if (store.get("discordrpcstatus") === "true") {
loginToRPC();
setActivity(`Opening Microsoft 365...`);
}
});

View File

@@ -2,6 +2,7 @@ const store = require("./store");
const useragents = require("./useragents.json");
const { app, dialog, BrowserWindow } = require("electron");
const axios = require("axios");
const { clearActivity, setActivity } = require("./rpc");
function getValueOrDefault(key, defaultValue) {
const value = store.get(key);
@@ -87,6 +88,7 @@ function setUserAgent(useragent) {
getValueOrDefault("enterprise-or-normal", "https://microsoft365.com/?auth=1");
getValueOrDefault("autohide-menubar", "false");
getValueOrDefault("useragentstring", useragents.Windows);
getValueOrDefault("discordrpcstatus", "false");
const menulayout = [
{
@@ -187,6 +189,40 @@ const menulayout = [
: false,
},
{ type: "separator" },
{
label: "Enable Discord RPC",
type: "checkbox",
click: () => {
if (store.get("discordrpcstatus") === "true") {
store.set("discordrpcstatus", "false");
dialog.showMessageBoxSync({
type: "info",
title: "Discord RPC",
message: "Discord RPC has been disabled.",
buttons: ["OK"],
});
clearActivity();
return;
} else if (
store.get("discordrpcstatus") === "false" ||
store.get("discordrpcstatus") === undefined
) {
store.set("discordrpcstatus", "true");
dialog.showMessageBoxSync({
type: "info",
title: "Discord RPC",
message: "Discord RPC has been enabled.",
buttons: ["OK"],
});
setActivity(
`On ${BrowserWindow.getFocusedWindow().webContents.getTitle()}`
);
return;
}
},
checked: store.get("discordrpcstatus") === "true",
},
{ type: "separator" },
{
label: "Windows User-Agent String",
type: "radio",

57
app/rpc.js Normal file
View File

@@ -0,0 +1,57 @@
const { Client } = require("@xhayper/discord-rpc");
const { dialog, BrowserWindow } = require("electron");
const client = new Client({
clientId: "942637872530460742",
});
async function clearActivity() {
await client.user?.clearActivity().catch((err) => {
dialog.showMessageBox(BrowserWindow.getFocusedWindow(), {
type: "error",
title: "Discord RPC Error",
message: "Oops! An Error occured while clearing Discord RPC.",
buttons: ["OK"],
});
});
}
async function setActivity(details) {
if (!client.user) {
await loginToRPC();
}
await client.user
?.setActivity({
details: details,
startTimestamp: Date.now(),
largeImageKey: "icon",
largeImageText: "MS-365-Electron",
})
.catch((err) => {
dialog.showMessageBox(BrowserWindow.getFocusedWindow(), {
type: "error",
title: "Discord RPC Error",
message: "Oops! An Error occured while setting Discord RPC.",
buttons: ["OK"],
});
console.error(err);
});
}
async function loginToRPC() {
await client.login().catch((err) => {
dialog.showMessageBox(BrowserWindow.getFocusedWindow(), {
type: "error",
title: "Discord RPC Error",
message: "Oops! An Error occured while connecting to Discord RPC.",
buttons: ["OK"],
});
console.error(err);
});
}
module.exports = {
clearActivity,
setActivity,
loginToRPC,
};