diff --git a/src/plugins/betterSettings/index.tsx b/src/plugins/betterSettings/index.tsx
index 478722b2b..781d0caf3 100644
--- a/src/plugins/betterSettings/index.tsx
+++ b/src/plugins/betterSettings/index.tsx
@@ -32,7 +32,8 @@ const settings = definePluginSettings({
organizeMenu: {
description: "Organizes the settings cog context menu into categories",
type: OptionType.BOOLEAN,
- default: true
+ default: true,
+ restartNeeded: true
},
eagerLoad: {
description: "Removes the loading delay when opening the menu for the first time",
@@ -85,22 +86,19 @@ export default definePlugin({
{
find: "this.renderArtisanalHack()",
replacement: [
- {
- // Fade in on layer
+ { // Fade in on layer
match: /(?<=\((\i),"contextType",\i\.\i\);)/,
replace: "$1=$self.Layer;",
predicate: () => settings.store.disableFade
},
- {
- // Lazy-load contents
+ { // Lazy-load contents
match: /createPromise:\(\)=>([^:}]*?),webpackId:"?\d+"?,name:(?!="CollectiblesShop")"[^"]+"/g,
replace: "$&,_:$1",
predicate: () => settings.store.eagerLoad
}
]
},
- {
- // For some reason standardSidebarView also has a small fade-in
+ { // For some reason standardSidebarView also has a small fade-in
find: 'minimal:"contentColumnMinimal"',
replacement: [
{
@@ -122,12 +120,14 @@ export default definePlugin({
},
predicate: () => settings.store.eagerLoad
},
- { // Settings cog context menu
+ {
+ // Settings cog context menu
find: "#{intl::USER_SETTINGS_ACTIONS_MENU_LABEL}",
replacement: [
{
- match: /(\i)(?=\.forEach\(\i=>\{let\{)/,
- replace: "$self.wrapMenu($1)"
+ match: /=\[\];return (\i)(?=\.forEach)/,
+ replace: "=$self.wrapMap([]);return $self.transformSettingsEntries($1)",
+ predicate: () => settings.store.organizeMenu
},
{
match: /case \i\.\i\.DEVELOPER_OPTIONS:return \i;/,
@@ -154,9 +154,7 @@ export default definePlugin({
return ;
},
- wrapMenu(list: SettingsEntry[]) {
- if (!settings.store.organizeMenu) return list;
-
+ transformSettingsEntries(list: SettingsEntry[]) {
const items = [{ label: null as string | null, items: [] as SettingsEntry[] }];
for (const item of list) {
@@ -169,34 +167,32 @@ export default definePlugin({
}
}
- return {
- forEach(predicate: (item: SettingsEntry) => void) {
- for (const category of items) {
- category.items.forEach(predicate);
- }
- return this;
- },
- map(render: (item: SettingsEntry) => ReactElement) {
- return items
- .filter(a => a.items.length > 0)
- .map(({ label, items }) => {
- const children = items.map(render);
- if (label) {
- return (
-
- {children}
-
- );
- } else {
- return children;
- }
- });
- }
+ return items;
+ },
+
+ wrapMap(toWrap: any[]) {
+ // @ts-expect-error
+ toWrap.map = function (render: (item: SettingsEntry) => ReactElement) {
+ return this
+ .filter(a => a.items.length > 0)
+ .map(({ label, items }) => {
+ const children = items.map(render);
+ if (label) {
+ return (
+
+ {children}
+
+ );
+ } else {
+ return children;
+ }
+ });
};
+
+ return toWrap;
}
});