Files
stoat-desktop/src/native/discordRpc.ts
T
2025-12-29 17:00:09 +00:00

42 lines
837 B
TypeScript

import { Client } from "discord-rpc";
import { config } from "./config";
// internal state
let rpc: Client;
export async function initDiscordRpc() {
if (!config.discordRpc) return;
try {
rpc = new Client({ transport: "ipc" });
rpc.on("ready", () =>
rpc.setActivity({
state: "stoat.chat",
details: "Chatting with others",
largeImageKey: "qr",
largeImageText: "Join Stoat!",
buttons: [
{
label: "Join Stoat",
url: "https://stoat.chat/",
},
],
}),
);
rpc.on("disconnected", reconnect);
rpc.login({ clientId: "872068124005007420" });
} catch (err) {
reconnect();
}
}
const reconnect = () => setTimeout(() => initDiscordRpc(), 1e4);
export async function destroyDiscordRpc() {
rpc?.destroy();
}