mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-06 20:10:12 +02:00
Automatically reconnect to Discord RPC at interval (#996)
* initialize before setActivity
This commit is contained in:
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user