import config from "@/utils/config.json"; import { preferences } from "@/utils/storage"; import { bricksToCurrency, getUserDetails } from "@/utils/utilities"; import plusIcon from "@/assets/plus.svg"; import plusDeluxeIcon from "@/assets/plusDx.svg"; export default defineContentScript({ matches: ["*://polytoria.com/*"], main() { getUserDetails() .then((user) => { if (!user) { // Error page or event page most likely, where users are not authenticated console.warn("[Poly+] Failure to get logged in user details."); return; } if (config.devBuild) console.info("[Poly+] Logged in as: ", user); preferences.getPreferences() .then((values) => { if (values.enabled.includes("irlBrickPrice")) { const currency = bricksToCurrency( user.bricks, values.config.irlBrickPrice.currency, ); if (currency) { document.getElementsByClassName("brickBalanceCount")[0] .textContent += ` (${currency})`; } } if (values.enabled.includes("hideNotificationBadges")) { const badges = document.getElementsByClassName( "notif-nav notif-sidebar", ); for (const badge of badges) { badge.remove(); } } if (values.enabled.includes("membershipThemes")) { membershipThemes( values.config.membershipThemes.themeId as "plus" | "plusdx", ); } }); }); }, }); /** * Applies the specified membership's theme to the sitewide navigation. * @param themeId The ID of the membership whose theme should be applied. */ function membershipThemes(themeId: "plus" | "plusdx") { const navbar = document.querySelector( ".navbar.navbar-expand-lg.navbar-light.bg-navbar.nav-topbar", )!; const sidebar = document.querySelector( ".d-flex.flex-column.flex-shrink-0.bg-sidebar.nav-sidebar", )!; navbar.classList.add("navbar-" + themeId); sidebar.classList.add("sidebar-" + themeId); if (themeId == "plus") { sidebar.getElementsByTagName("img")[0].src = plusIcon; } else { sidebar.getElementsByTagName("img")[0].src = plusDeluxeIcon; } }