mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 10:31:47 +00:00
fix: discord-rpc (#1278)
This commit is contained in:
@ -4,7 +4,7 @@ import { dev } from 'electron-is';
|
|||||||
|
|
||||||
import { SetActivity } from '@xhayper/discord-rpc/dist/structures/ClientUser';
|
import { SetActivity } from '@xhayper/discord-rpc/dist/structures/ClientUser';
|
||||||
|
|
||||||
import registerCallback from '../../providers/song-info';
|
import registerCallback, { type SongInfoCallback, type SongInfo } from '../../providers/song-info';
|
||||||
|
|
||||||
import type { ConfigType } from '../../config/dynamic';
|
import type { ConfigType } from '../../config/dynamic';
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ export interface Info {
|
|||||||
rpc: DiscordClient;
|
rpc: DiscordClient;
|
||||||
ready: boolean;
|
ready: boolean;
|
||||||
autoReconnect: boolean;
|
autoReconnect: boolean;
|
||||||
lastSongInfo?: import('../../providers/song-info').SongInfo;
|
lastSongInfo?: SongInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
const info: Info = {
|
const info: Info = {
|
||||||
@ -39,36 +39,14 @@ const resetInfo = () => {
|
|||||||
console.log('discord disconnected');
|
console.log('discord disconnected');
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const cb of refreshCallbacks) {
|
setTimeout(() => {
|
||||||
cb();
|
for (const cb of refreshCallbacks) {
|
||||||
}
|
cb();
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
info.rpc.on('connected', () => {
|
|
||||||
if (dev()) {
|
|
||||||
console.log('discord connected');
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const cb of refreshCallbacks) {
|
|
||||||
cb();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
info.rpc.on('ready', () => {
|
|
||||||
info.ready = true;
|
|
||||||
if (info.lastSongInfo) {
|
|
||||||
updateActivity(info.lastSongInfo);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
info.rpc.on('disconnected', () => {
|
|
||||||
resetInfo();
|
|
||||||
|
|
||||||
if (info.autoReconnect) {
|
|
||||||
connectTimeout();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const connectTimeout = () => new Promise((resolve, reject) => setTimeout(() => {
|
const connectTimeout = () => new Promise((resolve, reject) => setTimeout(() => {
|
||||||
if (!info.autoReconnect || info.rpc.isConnected) {
|
if (!info.autoReconnect || info.rpc.isConnected) {
|
||||||
return;
|
return;
|
||||||
@ -117,7 +95,7 @@ export const connect = (showError = false) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let clearActivity: NodeJS.Timeout | undefined;
|
let clearActivity: NodeJS.Timeout | undefined;
|
||||||
let updateActivity: import('../../providers/song-info').SongInfoCallback;
|
let updateActivity: SongInfoCallback;
|
||||||
|
|
||||||
type DiscordOptions = ConfigType<'discord'>;
|
type DiscordOptions = ConfigType<'discord'>;
|
||||||
|
|
||||||
@ -125,6 +103,31 @@ export default (
|
|||||||
win: Electron.BrowserWindow,
|
win: Electron.BrowserWindow,
|
||||||
options: DiscordOptions,
|
options: DiscordOptions,
|
||||||
) => {
|
) => {
|
||||||
|
info.rpc.on('connected', () => {
|
||||||
|
if (dev()) {
|
||||||
|
console.log('discord connected');
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const cb of refreshCallbacks) {
|
||||||
|
cb();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
info.rpc.on('ready', () => {
|
||||||
|
info.ready = true;
|
||||||
|
if (info.lastSongInfo) {
|
||||||
|
updateActivity(info.lastSongInfo);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
info.rpc.on('disconnected', () => {
|
||||||
|
resetInfo();
|
||||||
|
|
||||||
|
if (info.autoReconnect) {
|
||||||
|
connectTimeout();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
info.autoReconnect = options.autoReconnect;
|
info.autoReconnect = options.autoReconnect;
|
||||||
|
|
||||||
window = win;
|
window = win;
|
||||||
|
|||||||
Reference in New Issue
Block a user