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

feat: reimplement Membership Themes (not entirely)

Index 5da0a77e 0a9114c1

Changed files
+18 -5
entrypoints
public
utils
+2 -1
entrypoints/preferences-handler.ts
···
console.log('Static Settings Data:' , data);
const saveBtn = document.getElementById('save')!;
-
preferences.getValue()
+
preferences.getPreferences()
.then(async (preferenceValues) => {
values = preferenceValues;
+
console.log('Loaded preferences: ', preferenceValues);
for (const _ of data as SettingData[]) {
const container = await createContainer(_);
+11 -1
entrypoints/sitewide.content.ts
···
badge.remove();
};
};
+
+
if (values.membershipThemes.enabled) membershipThemes(values.membershipThemes.themeId as "plus" | "plusDx");
});
});
}
-
});
+
});
+
+
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);
+
};
+2 -2
public/json/preferences.json
···
{
"name": "Free Membership Themes",
"desc": "Ever want the fancy membership themes for completely free? Well now you can apply them site-wide!",
-
"setting": "membershipTheme",
+
"setting": "membershipThemes",
"config": [
{
"type": "select",
-
"subsetting": "theme",
+
"subsetting": "themeId",
"values": {
"plus": "Plus",
"plusDX": "Plus Deluxe"
+3 -1
utils/storage.ts
···
improvedFriendLists: { enabled: true },
irlBrickPrice: { enabled: true },
hideNotificationBadges: { enabled: false },
-
storeOwnedTags: { enabled: true }
+
storeOwnedTags: { enabled: true },
+
+
membershipThemes: { enabled: false, themeId: "plus" }
}
export type preferencesSchema = typeof defaultPreferences & {