A rewrite of Poly+, my quality-of-life browser extension for Polytoria. Built entirely fresh using the WXT extension framework, Typescript, and with added better overall code quality.
extension
1import { getUserDetails } from "@/utils/utilities";
2import { preferences } from "@/utils/storage";
3import config from "@/utils/config.json";
4
5import * as discovery from "./discovery";
6import * as view from "./view";
7import * as apiTypes from "@/utils/types";
8
9export default defineContentScript({
10 matches: ['*://polytoria.com/store/*'],
11 main() {
12 preferences.getPreferences()
13 .then((values) => {
14 getUserDetails()
15 .then((user) => {
16 if (!user) {
17 // Error page or event page most likely, where users are not authenticated
18 console.warn('[Poly+] Failure to get logged in user details.');
19 return;
20 };
21
22 if (!window.location.pathname.split('/')[2]) {
23 // Discovery
24 if (config.devBuild) console.log('[Poly+] Running discovery page functions: ', discovery);
25
26 if (values.irlBrickPrice.enabled) discovery.irlBrickPrice();
27 if (values.storeOwnedTags.enabled) discovery.ownedTags(user.userId);
28 } else {
29 // View
30 if (config.devBuild) console.log('[Poly+] Running view page functions: ', view);
31
32 if (values.irlBrickPrice.enabled) view.irlBrickPrice();
33 if (values.tryItems.enabled) view.tryOn(user as apiTypes.userDetails);
34 if (values.accurateOwners.enabled) view.accurateOwnerCount();
35 };
36 })
37 });
38 }
39});