mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-02 10:53:33 +00:00
Automatically reconnect to Discord RPC at interval (#996)
* initialize before setActivity
This commit is contained in:
parent
19c8980784
commit
cd2d531c54
3 changed files with 24 additions and 5 deletions
|
|
@ -5,16 +5,20 @@ const FEISHIN_DISCORD_APPLICATION_ID = '1165957668758900787';
|
||||||
|
|
||||||
let client: Client | null = null;
|
let client: Client | null = null;
|
||||||
|
|
||||||
const createClient = (clientId?: string) => {
|
const createClient = async (clientId?: string) => {
|
||||||
client = new Client({
|
client = new Client({
|
||||||
clientId: clientId || FEISHIN_DISCORD_APPLICATION_ID,
|
clientId: clientId || FEISHIN_DISCORD_APPLICATION_ID,
|
||||||
});
|
});
|
||||||
|
|
||||||
client.login();
|
await client.login();
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isConnected = () => {
|
||||||
|
return client?.isConnected;
|
||||||
|
};
|
||||||
|
|
||||||
const setActivity = (activity: SetActivity) => {
|
const setActivity = (activity: SetActivity) => {
|
||||||
if (client) {
|
if (client) {
|
||||||
client.user?.setActivity({
|
client.user?.setActivity({
|
||||||
|
|
@ -35,8 +39,12 @@ const quit = () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ipcMain.handle('discord-rpc-initialize', (_event, clientId?: string) => {
|
ipcMain.handle('discord-rpc-initialize', async (_event, clientId?: string) => {
|
||||||
createClient(clientId);
|
await createClient(clientId);
|
||||||
|
});
|
||||||
|
|
||||||
|
ipcMain.handle('discord-rpc-is-connected', () => {
|
||||||
|
return isConnected();
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.handle('discord-rpc-set-activity', (_event, activity: SetActivity) => {
|
ipcMain.handle('discord-rpc-set-activity', (_event, activity: SetActivity) => {
|
||||||
|
|
@ -58,6 +66,7 @@ ipcMain.handle('discord-rpc-quit', () => {
|
||||||
export const discordRpc = {
|
export const discordRpc = {
|
||||||
clearActivity,
|
clearActivity,
|
||||||
createClient,
|
createClient,
|
||||||
|
isConnected,
|
||||||
quit,
|
quit,
|
||||||
setActivity,
|
setActivity,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,11 @@ const initialize = (clientId: string) => {
|
||||||
return client;
|
return client;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isConnected = () => {
|
||||||
|
const isConnected = ipcRenderer.invoke('discord-rpc-is-connected');
|
||||||
|
return isConnected;
|
||||||
|
};
|
||||||
|
|
||||||
const clearActivity = () => {
|
const clearActivity = () => {
|
||||||
ipcRenderer.invoke('discord-rpc-clear-activity');
|
ipcRenderer.invoke('discord-rpc-clear-activity');
|
||||||
};
|
};
|
||||||
|
|
@ -21,6 +26,7 @@ const quit = () => {
|
||||||
export const discordRpc = {
|
export const discordRpc = {
|
||||||
clearActivity,
|
clearActivity,
|
||||||
initialize,
|
initialize,
|
||||||
|
isConnected,
|
||||||
quit,
|
quit,
|
||||||
setActivity,
|
setActivity,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,10 @@ export const useDiscordRpc = () => {
|
||||||
activity.largeImageKey = 'icon';
|
activity.largeImageKey = 'icon';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize if needed
|
||||||
|
const isConnected = await discordRpc?.isConnected();
|
||||||
|
if (!isConnected) await discordRpc?.initialize(discordSettings.clientId);
|
||||||
|
|
||||||
discordRpc?.setActivity(activity);
|
discordRpc?.setActivity(activity);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -129,6 +133,7 @@ export const useDiscordRpc = () => {
|
||||||
discordSettings.showServerImage,
|
discordSettings.showServerImage,
|
||||||
discordSettings.showPaused,
|
discordSettings.showPaused,
|
||||||
generalSettings.lastfmApiKey,
|
generalSettings.lastfmApiKey,
|
||||||
|
discordSettings.clientId,
|
||||||
lastUniqueId,
|
lastUniqueId,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
@ -136,7 +141,6 @@ export const useDiscordRpc = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!discordSettings.enabled) return discordRpc?.quit();
|
if (!discordSettings.enabled) return discordRpc?.quit();
|
||||||
|
|
||||||
discordRpc?.initialize(discordSettings.clientId);
|
|
||||||
return () => {
|
return () => {
|
||||||
discordRpc?.quit();
|
discordRpc?.quit();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue