From 219ed4543fd384a9a9470fd679ada21543477469 Mon Sep 17 00:00:00 2001 From: RockinChaos Date: Thu, 26 Sep 2024 20:19:24 -0700 Subject: [PATCH] chore: major discord-rpc improvments --- common/views/Player/MediaHandler.svelte | 50 --------------- common/views/Player/Player.svelte | 84 ++++++++++++++++++++++++- electron/src/main/discord.js | 8 ++- 3 files changed, 88 insertions(+), 54 deletions(-) diff --git a/common/views/Player/MediaHandler.svelte b/common/views/Player/MediaHandler.svelte index 1fdcc98..a40e847 100644 --- a/common/views/Player/MediaHandler.svelte +++ b/common/views/Player/MediaHandler.svelte @@ -3,8 +3,6 @@ import AnimeResolver from '@/modules/animeresolver.js' import { videoRx } from '@/modules/util.js' import { tick } from 'svelte' - import { state } from '../WatchTogether/WatchTogether.svelte' - import IPC from '@/modules/ipc.js' import { anilistClient } from "@/modules/anilist.js" import Debug from 'debug' @@ -69,7 +67,6 @@ episodeTitle: streamingEpisode && episodeRx.exec(streamingEpisode.title)[2], thumbnail: streamingEpisode?.thumbnail || media?.coverImage.extraLarge } - setDiscordRPC(np) setMediaSession(np) nowPlaying.set(np) } @@ -210,53 +207,6 @@ : new MediaMetadata({ title: name }) navigator.mediaSession.metadata = metadata } - - function setDiscordRPC (np = nowPlaying.value) { - const w2g = state.value?.code - const details = [np.title, np.episodeTitle].filter(i => i).join(' - ') || undefined - const activity = { - details, - state: details && 'Watching Episode ' + ((!np.media?.episodes && np.episode) || ''), - timestamps: { - start: Date.now() - }, - party: { - size: (np.episode && np.media?.episodes && [np.episode, np.media.episodes]) || undefined - }, - assets: { - large_text: np.title, - large_image: np.thumbnail, - small_image: 'logo', - small_text: 'https://github.com/ThaUnknown/miru' - }, - instance: true, - type: 3 - } - // cannot have buttons and secrets at once - if (w2g) { - activity.secrets = { - join: w2g, - match: w2g + 'm' - } - activity.party.id = w2g + 'p' - } else { - activity.buttons = [ - { - label: 'Download app', - url: 'https://github.com/ThaUnknown/miru/releases/latest' - }, - { - label: 'Watch on Miru', - url: `miru://anime/${np.media?.id}` - } - ] - } - IPC.emit('discord', { activity }) - } - state.subscribe(() => { - setDiscordRPC() - return noop - }) diff --git a/electron/src/main/discord.js b/electron/src/main/discord.js index 2d655cf..d82119a 100644 --- a/electron/src/main/discord.js +++ b/electron/src/main/discord.js @@ -6,7 +6,7 @@ export default class Discord { defaultStatus = { activity: { timestamps: { start: Date.now() }, - details: 'Stream anime torrents, real-time.', + details: 'Stream anime torrents', state: 'Watching anime', assets: { small_image: 'logo', @@ -55,6 +55,10 @@ export default class Discord { } }) + ipcMain.on('discord-hidden', () => { + this.debouncedDiscordRPC(undefined, true) + }) + this.discord.on('ready', async () => { this.setDiscordRPC(this.cachedPresence || this.defaultStatus) this.discord.subscribe('ACTIVITY_JOIN_REQUEST') @@ -66,7 +70,7 @@ export default class Discord { window.webContents.send('w2glink', secret) }) - this.debouncedDiscordRPC = debounce(status => this.setDiscordRPC(status), 4500) + this.debouncedDiscordRPC = debounce((status, logout) => logout ? this.logoutRPC() : this.setDiscordRPC(status), 4500) } loginRPC () {