Skip to content

Commit

Permalink
feat(SideQuest): add presence (PreMiD#7607)
Browse files Browse the repository at this point in the history
* feat: initialize project

* feat: add giveaways details

* feat: add app details

* feat: add news details

* feat: add user details

* feat: add default message

* fix: use better selector for app name

* style: format code
  • Loading branch information
theusaf authored Sep 5, 2023
1 parent 44d84d7 commit 64163e6
Show file tree
Hide file tree
Showing 2 changed files with 134 additions and 0 deletions.
26 changes: 26 additions & 0 deletions websites/S/SideQuest/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"$schema": "https://schemas.premid.app/metadata/1.9",
"author": {
"id": "193714715631812608",
"name": "theusaf"
},
"service": "SideQuest",
"description": {
"en": "SideQuest is the early access layer for Virtual Reality. Get access to the latest Oculus Quest Games, Oculus App Lab games & lots of free apps on applab and sideload."
},
"url": "sidequestvr.com",
"version": "1.0.0",
"logo": "https://i.imgur.com/GnK79kd.png",
"thumbnail": "https://sidequestvr.com/assets/images/home-picks.jpg",
"color": "#1a1d3c",
"category": "games",
"tags": [
"vr",
"quest",
"oculus",
"store",
"sideload",
"game",
"reviews"
]
}
108 changes: 108 additions & 0 deletions websites/S/SideQuest/presence.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
const presence = new Presence({
clientId: "1146519848906653727",
}),
browsingTimestamp = Math.floor(Date.now() / 1000);

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

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

switch (pathList[0] ?? "") {
case "": {
presenceData.details = "Browsing home page";
break;
}
case "app": {
presenceData.details = "Viewing an app";
presenceData.state = document.querySelector<HTMLDivElement>(
".right-section .large-font"
).textContent;
presenceData.buttons = [{ label: "View App", url: href }];
break;
}
case "apps": {
presenceData.details = "Browsing apps by category";
presenceData.state = document
.querySelector("div > a[class*=active]")
.textContent.split(" ")
.slice(1)
.join("");
break;
}
case "all-apps": {
presenceData.details = "Browsing all apps";
presenceData.state = document
.querySelector<HTMLAnchorElement>("sq-button > a[class*=active]")
.textContent.substring(5)
.trim();
break;
}
case "giveaways": {
if (pathList[1]) {
presenceData.details = "Viewing a giveaway";
presenceData.state = document.querySelector("h4").textContent;
presenceData.buttons = [{ label: "View Giveaway", url: href }];
} else presenceData.details = "Browsing giveaways";
break;
}
case "news": {
presenceData.details = "Reading a news post";
presenceData.state = document
.querySelector<HTMLDivElement>(".top-title-text")
.textContent.trim();
presenceData.buttons = [{ label: "View Post", url: href }];
break;
}
case "space": {
const spaceTitle = document
.querySelector<HTMLDivElement>(".community-title")
.textContent.trim();
presenceData.smallImageKey = document
.querySelector<HTMLDivElement>(".user-image")
.style.backgroundImage.match(/url\("(.+)"\)/)[1];
presenceData.smallImageText = document
.querySelector(".community-title + div > div")
.textContent.trim();
if (pathList[2] === "p") {
presenceData.details = "Viewing a space post";
presenceData.state = `${spaceTitle} - ${document
.querySelector<HTMLDivElement>(".post-title-name")
.textContent.trim()}`;
presenceData.buttons = [{ label: "View Post", url: href }];
} else {
presenceData.details = "Browsing a space";
presenceData.state = spaceTitle;
presenceData.buttons = [{ label: "View Space", url: href }];
}
break;
}
case "spaces": {
presenceData.details = "Browsing spaces";
break;
}
case "user": {
presenceData.details = "Viewing a user's profile";
presenceData.state = document
.querySelector<HTMLDivElement>(".large-font")
.childNodes[1].textContent.trim();
presenceData.smallImageKey = document
.querySelector<HTMLDivElement>(".user-image")
.style.backgroundImage.match(/url\("(.+)"\)/)[1];
presenceData.buttons = [{ label: "View Profile", url: href }];
break;
}
default: {
presenceData.details = "Browsing...";
}
}

presence.setActivity(presenceData);
});

0 comments on commit 64163e6

Please sign in to comment.