mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-04-05 07:19:43 +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({
|
||||
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
|
||||
if (discord?.user && status) {
|
||||
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 () => {
|
||||
setDiscordRPC(null, status)
|
||||
setDiscordRPC(status)
|
||||
discord.subscribe('ACTIVITY_JOIN_REQUEST')
|
||||
discord.subscribe('ACTIVITY_JOIN')
|
||||
discord.subscribe('ACTIVITY_SPECTATE')
|
||||
|
|
|
|||
Loading…
Reference in a new issue