mirror of
https://github.com/NoCrypt/migu.git
synced 2026-04-21 08:31:58 +00:00
Fix borked discord RPC controls
This commit is contained in:
parent
d954314e9b
commit
fc130ff843
1 changed files with 57 additions and 3 deletions
|
|
@ -254,7 +254,31 @@ let status = null
|
||||||
const discord = new Client({
|
const discord = new Client({
|
||||||
transport: 'ipc'
|
transport: 'ipc'
|
||||||
})
|
})
|
||||||
function setDiscordRPC (event, data) {
|
|
||||||
|
function setDiscordRPC (data) {
|
||||||
|
if (!data) {
|
||||||
|
data = {
|
||||||
|
activity: {
|
||||||
|
timestamps: {
|
||||||
|
start: Date.now()
|
||||||
|
},
|
||||||
|
details: 'Stream anime torrents, real-time.',
|
||||||
|
state: 'Watching anime',
|
||||||
|
assets: {
|
||||||
|
small_image: 'logo',
|
||||||
|
small_text: 'https://github.com/ThaUnknown/miru'
|
||||||
|
},
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
label: 'Download app',
|
||||||
|
url: 'https://github.com/ThaUnknown/miru/releases/latest'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
instance: true,
|
||||||
|
type: 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
status = data
|
status = data
|
||||||
if (discord?.user && status) {
|
if (discord?.user && status) {
|
||||||
status.pid = process.pid
|
status.pid = process.pid
|
||||||
|
|
@ -262,9 +286,39 @@ function setDiscordRPC (event, data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ipcMain.on('discord', setDiscordRPC)
|
let allowDiscordDetails = false
|
||||||
|
let requestedDiscordDetails = false
|
||||||
|
let rpcStarted = false
|
||||||
|
let cachedPresence = null
|
||||||
|
|
||||||
|
ipcMain.on('discord_status', (event, data) => {
|
||||||
|
requestedDiscordDetails = data;
|
||||||
|
if (!rpcStarted) {
|
||||||
|
handleRPC()
|
||||||
|
setInterval(handleRPC, 5000) //According to Discord documentation, clients can only update their presence 5 times per 20 seconds. We will add an extra second to be safe.
|
||||||
|
rpcStarted = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function handleRPC() {
|
||||||
|
if (allowDiscordDetails === requestedDiscordDetails) return
|
||||||
|
|
||||||
|
allowDiscordDetails = requestedDiscordDetails
|
||||||
|
if (!allowDiscordDetails) {
|
||||||
|
setDiscordRPC(null)
|
||||||
|
} else if (cachedPresence) {
|
||||||
|
setDiscordRPC(cachedPresence)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ipcMain.on('discord', (event, data) => {
|
||||||
|
cachedPresence = data
|
||||||
|
if (allowDiscordDetails) {
|
||||||
|
setDiscordRPC(data)
|
||||||
|
}
|
||||||
|
})
|
||||||
discord.on('ready', async () => {
|
discord.on('ready', async () => {
|
||||||
setDiscordRPC(null, status)
|
setDiscordRPC(status)
|
||||||
discord.subscribe('ACTIVITY_JOIN_REQUEST')
|
discord.subscribe('ACTIVITY_JOIN_REQUEST')
|
||||||
discord.subscribe('ACTIVITY_JOIN')
|
discord.subscribe('ACTIVITY_JOIN')
|
||||||
discord.subscribe('ACTIVITY_SPECTATE')
|
discord.subscribe('ACTIVITY_SPECTATE')
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue