Automatically reconnect to Discord RPC at interval (#996)

* initialize before setActivity
This commit is contained in:
Lyall 2025-07-06 08:34:26 +01:00 committed by GitHub
parent 19c8980784
commit cd2d531c54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 5 deletions

View file

@ -5,16 +5,20 @@ const FEISHIN_DISCORD_APPLICATION_ID = '1165957668758900787';
let client: Client | null = null;
const createClient = (clientId?: string) => {
const createClient = async (clientId?: string) => {
client = new Client({
clientId: clientId || FEISHIN_DISCORD_APPLICATION_ID,
});
client.login();
await client.login();
return client;
};
const isConnected = () => {
return client?.isConnected;
};
const setActivity = (activity: SetActivity) => {
if (client) {
client.user?.setActivity({
@ -35,8 +39,12 @@ const quit = () => {
}
};
ipcMain.handle('discord-rpc-initialize', (_event, clientId?: string) => {
createClient(clientId);
ipcMain.handle('discord-rpc-initialize', async (_event, clientId?: string) => {
await createClient(clientId);
});
ipcMain.handle('discord-rpc-is-connected', () => {
return isConnected();
});
ipcMain.handle('discord-rpc-set-activity', (_event, activity: SetActivity) => {
@ -58,6 +66,7 @@ ipcMain.handle('discord-rpc-quit', () => {
export const discordRpc = {
clearActivity,
createClient,
isConnected,
quit,
setActivity,
};

View file

@ -6,6 +6,11 @@ const initialize = (clientId: string) => {
return client;
};
const isConnected = () => {
const isConnected = ipcRenderer.invoke('discord-rpc-is-connected');
return isConnected;
};
const clearActivity = () => {
ipcRenderer.invoke('discord-rpc-clear-activity');
};
@ -21,6 +26,7 @@ const quit = () => {
export const discordRpc = {
clearActivity,
initialize,
isConnected,
quit,
setActivity,
};

View file

@ -121,6 +121,10 @@ export const useDiscordRpc = () => {
activity.largeImageKey = 'icon';
}
// Initialize if needed
const isConnected = await discordRpc?.isConnected();
if (!isConnected) await discordRpc?.initialize(discordSettings.clientId);
discordRpc?.setActivity(activity);
}
},
@ -129,6 +133,7 @@ export const useDiscordRpc = () => {
discordSettings.showServerImage,
discordSettings.showPaused,
generalSettings.lastfmApiKey,
discordSettings.clientId,
lastUniqueId,
],
);
@ -136,7 +141,6 @@ export const useDiscordRpc = () => {
useEffect(() => {
if (!discordSettings.enabled) return discordRpc?.quit();
discordRpc?.initialize(discordSettings.clientId);
return () => {
discordRpc?.quit();
};