From 4a91d14142ba8e23efd2ab1c75a1039b6a92d184 Mon Sep 17 00:00:00 2001 From: Dark_Ville <42322979+DarkVillager@users.noreply.github.com> Date: Sun, 6 Aug 2023 00:57:20 +0200 Subject: [PATCH] perf(Dumpert): improve presence code (#7539) * perf(Dumpert): improve presence code * chore(Dumpert): remove unused let * chore(Dumpert): change class dom to dot dom --- websites/D/Dumpert/metadata.json | 2 +- websites/D/Dumpert/presence.ts | 180 +++++++++++++++++-------------- 2 files changed, 103 insertions(+), 79 deletions(-) diff --git a/websites/D/Dumpert/metadata.json b/websites/D/Dumpert/metadata.json index 8bbc61579ae2..514bf4325cb7 100644 --- a/websites/D/Dumpert/metadata.json +++ b/websites/D/Dumpert/metadata.json @@ -10,7 +10,7 @@ "nl": "De plek voor je dagelijkse entertainment. Met de leukste filmpjes en foto's voor als je even geen zin hebt in werk, studie of menselijk contact. Hoofdsponsor van Nederlandse zolderkamers." }, "url": "www.dumpert.nl", - "version": "1.1.6", + "version": "2.0.0", "logo": "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png", "thumbnail": "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/thumbnail.jpg", "color": "#00ff2a", diff --git a/websites/D/Dumpert/presence.ts b/websites/D/Dumpert/presence.ts index 3b78918d094a..a19b1014ee01 100644 --- a/websites/D/Dumpert/presence.ts +++ b/websites/D/Dumpert/presence.ts @@ -3,12 +3,13 @@ const presence = new Presence({ }), browsingTimestamp = Math.floor(Date.now() / 1000); -let title: Element; +const enum Assets { + Logo = "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png", +} presence.on("UpdateData", async () => { const presenceData: PresenceData = { - largeImageKey: - "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png", + largeImageKey: Assets.Logo, startTimestamp: browsingTimestamp, }, { href, pathname } = window.location, @@ -17,99 +18,122 @@ presence.on("UpdateData", async () => { presence.getSetting("buttons"), presence.getSetting("covers"), ]), + search = document.querySelector(".searchfield"), + sortElement = document + .querySelector('[class*="dropdown--"] > div') + ?.textContent?.toLowerCase(), metaElement = document.querySelector( 'meta[property~="og:title"]' ); - if (privacy) presenceData.details = "Aan het browsen"; - else if (pathname === "/" && !location.search) { - presenceData.details = "Bekijkt"; - presenceData.state = "De Home Pagina"; - } else if (pathname.includes("plaatjes")) { - presenceData.details = metaElement?.content ?? "Onbekende titel"; - presenceData.buttons = [ - { - label: "Bekijk Plaatje", - url: href, - }, - ]; - } else if (pathname.includes("filmpjes")) { - presenceData.buttons = [ - { - label: "Bekijk Filmpje", - url: href, - }, - ]; - presenceData.details = metaElement?.content ?? "Onbekende titel"; - } else if (href.includes("selectedId=") || href.includes("/item/")) { - const video = - document.querySelector('[class="vjs-tech"]'); - if (video) { - presenceData.largeImageKey = - document.querySelector('[property="og:image" ]') - ?.content ?? - "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png"; + if (pathname.includes("/zoek/")) { + presenceData.details = privacy + ? "Bekijkt zoekresultaten" + : `Bekijkt zoekresultaten voor: ${ + document + .querySelector('[class*="list_title_holder list_bar_left"] > h1') + ?.textContent?.split("'")[1] + }`; + presenceData.state = sortElement ? `Gesorteerd op: ${sortElement}` : ""; + presence.setActivity(presenceData); + return; + } else if (search?.value) { + presenceData.details = privacy ? "Is aan het zoeken" : "Zoekt naar:"; + presenceData.state = search.value; + presenceData.smallImageKey = Assets.Search; + presenceData.smallImageText = "Aan het zoeken"; + presence.setActivity(presenceData); + return; + } + switch (true) { + case href.includes("selectedId="): + case pathname.includes("/item/"): { + const video = + document.querySelector('[class="vjs-tech"]'); + if (video) { + delete presenceData.startTimestamp; + presenceData.largeImageKey = + document.querySelector('[property="og:image" ]') + ?.content ?? Assets.Logo; + presenceData.smallImageKey = video?.paused ? Assets.Pause : Assets.Play; + if (!video.paused) { + [, presenceData.endTimestamp] = + presence.getTimestampsfromMedia(video); + } + presenceData.buttons = [ + { + label: "Bekijk Video", + url: href, + }, + ]; + } else { + presenceData.largeImageKey = + document.querySelectorAll("img")[1]?.getAttribute("src") ?? + Assets.Logo; + presenceData.buttons = [ + { + label: "Bekijk Foto", + url: href, + }, + ]; + } + + presenceData.details = metaElement?.content ?? "Onbekende titel"; + break; + } + case pathname.includes("toppers"): { + presenceData.details = privacy ? "Bekijkt content" : "Bekijkt de toppers"; + presenceData.buttons = [ { - label: "Bekijk Video", + label: "Bekijk Content", url: href, }, ]; - delete presenceData.startTimestamp; - if (video.paused) { - delete presenceData.endTimestamp; - presenceData.smallImageKey = Assets.Pause; - } else if (!video.paused) { - [, presenceData.endTimestamp] = presence.getTimestampsfromMedia(video); - presenceData.smallImageKey = Assets.Play; - } - } else { - presenceData.largeImageKey = - document.querySelectorAll("img")[1]?.getAttribute("src") ?? - "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png"; + break; + } + case pathname.includes("latest"): { + presenceData.details = privacy + ? "Bekijkt content" + : "Bekijkt de nieuwste content"; presenceData.buttons = [ { - label: "Bekijk Foto", + label: "Bekijk Content", url: href, }, ]; + break; } - - presenceData.details = metaElement?.content ?? "Onbekende titel"; - } else if (pathname.includes("toppers")) - presenceData.details = "Bekijkt de toppers"; - else if (pathname.includes("/zoek/")) { - title = document.querySelector( - "#app > div > div:nth-child(6) > div > div.grid > main > div > div > div > h1" - ); - if (!title) { - presenceData.details = "Zoekt naar"; - presenceData.state = document - .querySelector('[class*="list_title_holder"]') - .textContent.split("'")[1]; - } else { - presenceData.details = "Zoekt naar"; - presenceData.state = title.textContent.replace( - "Geen resultaten voor", - "" - ); + case pathname.includes("/tag/"): { + const active = document + .querySelector('[class*="activeitem--"]') + ?.textContent?.toLowerCase(); + presenceData.details = privacy + ? "Bekijkt resultaten voor een tag" + : active + ? `Bekijkt resultaten voor tag: ${active}` + : `Bekijkt resultaten voor tag: ${ + document + .querySelector('[class*="list_title_holder list_bar_left"] > h1') + ?.textContent?.split("'")[1] + }`; + presenceData.state = sortElement ? `Gesorteerd op: ${sortElement}` : ""; + presenceData.buttons = [ + { + label: "Bekijk Content", + url: href, + }, + ]; + break; } - } else if (pathname.includes("latest")) { - presenceData.details = "Bekijkt"; - presenceData.state = "The latest"; - presenceData.buttons = [ - { - label: "Bekijk Latest", - url: href, - }, - ]; } - if (!buttons || privacy) delete presenceData.buttons; - if (!covers) { - presenceData.largeImageKey = - "https://cdn.rcd.gg/PreMiD/websites/D/Dumpert/assets/logo.png"; - } + if (privacy && presenceData.state) delete presenceData.state; + if ((!buttons || privacy) && presenceData.buttons) + delete presenceData.buttons; + if (!covers && presenceData.largeImageKey !== Assets.Logo) + presenceData.largeImageKey = Assets.Logo; + if (presenceData.details) presence.setActivity(presenceData); else presence.setActivity(); });