Skip to content

Commit

Permalink
feat(Pub): add presence (PreMiD#8305)
Browse files Browse the repository at this point in the history
  • Loading branch information
theusaf authored Apr 28, 2024
1 parent 46b9788 commit e0d9100
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
31 changes: 31 additions & 0 deletions websites/P/Pub/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"$schema": "https://schemas.premid.app/metadata/1.10",
"author": {
"id": "193714715631812608",
"name": "theusaf"
},
"service": "Pub",
"altnames": [
"pub.dev"
],
"description": {
"en": "Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs."
},
"url": "pub.dev",
"matches": [
"*://pub.dev/*"
],
"version": "1.0.0",
"logo": "https://i.imgur.com/kHfoH5H.png",
"thumbnail": "https://i.imgur.com/NQxiXEK.png",
"color": "#29B6F6",
"category": "other",
"tags": [
"development",
"coding",
"dart",
"flutter",
"package",
"repository"
]
}
57 changes: 57 additions & 0 deletions websites/P/Pub/presence.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
const presence = new Presence({
clientId: "1233135474395189399",
}),
browsingTimestamp = Math.floor(Date.now() / 1000);

const enum Assets {
Logo = "https://i.imgur.com/kHfoH5H.png",
}

presence.on("UpdateData", async () => {
const presenceData: PresenceData = {
largeImageKey: Assets.Logo,
startTimestamp: browsingTimestamp,
},
{ pathname, href, search } = document.location,
searchParams = new URLSearchParams(search),
pathList = pathname.split("/").filter(Boolean);

switch (pathList[0] ?? "/") {
case "/": {
presenceData.details = "Browsing the home page";
break;
}
case "help": {
presenceData.details = "Browsing help";
if (pathList[1]) presenceData.state = document.querySelector("h1");
break;
}
case "packages": {
if (pathList[1]) {
presenceData.details = "Viewing a package";
presenceData.state = pathList[1];
presenceData.buttons = [{ label: "View Package", url: href }];
} else if (searchParams.has("q")) {
presenceData.details = "Searching for packages";
presenceData.state = searchParams.get("q");
} else {
presenceData.details = "Browsing packages";
presenceData.state = `${
document.querySelector<HTMLSpanElement>(".count").textContent
} packages`;
}
break;
}
case "policy": {
presenceData.details = "Reading the policy";
break;
}
case "security": {
presenceData.details = "Reading the security policy";
break;
}
}

if (presenceData.details) presence.setActivity(presenceData);
else presence.clearActivity();
});

0 comments on commit e0d9100

Please sign in to comment.