diff --git a/src/index.ts b/src/index.ts index ec767b7..4d1db27 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,6 +13,7 @@ import { injectFluxInterceptor } from "@lib/api/flux"; import { patchJsx } from "@lib/api/react/jsx"; import { logger } from "@lib/utils/logger"; import { patchSettings } from "@ui/settings"; +import { getDebugInfo } from "@lib/api/debug"; import * as lib from "./lib"; diff --git a/src/lib/ui/settings/patches/tabs.tsx b/src/lib/ui/settings/patches/tabs.tsx index 04d341d..5d9c029 100644 --- a/src/lib/ui/settings/patches/tabs.tsx +++ b/src/lib/ui/settings/patches/tabs.tsx @@ -1,14 +1,13 @@ import { after } from "@lib/api/patcher"; -import { findInReactTree } from "@lib/utils"; import { TableRow } from "@metro/common/components"; import { findByNameLazy, findByPropsLazy } from "@metro/wrappers"; import { registeredSections } from "@ui/settings"; import { CustomPageRenderer, wrapOnPress } from "./shared"; -import { Strings } from "@core/i18n"; -import { TableRowIcon } from "@metro/common/components"; +import { findInReactTree } from "@lib/utils"; const settingConstants = findByPropsLazy("SETTING_RENDERER_CONFIG"); +const createListModule = findByPropsLazy("createList"); const SettingsOverviewScreen = findByNameLazy("SettingsOverviewScreen", false); function useIsFirstRender() { @@ -80,26 +79,43 @@ export function patchTabsUI(unpatches: (() => void | boolean)[]) { }); }); -const createListModule = findByPropsLazy("createList"); - -unpatches.push(after("createList", createListModule, function(args, ret) { - const [config] = args; - - if (config?.sections && Array.isArray(config.sections)) { - const sections = config.sections; - let index = -~sections.findIndex((i: any) => i.settings?.includes("ACCOUNT")) || 1; + try{ + unpatches.push(after("createList", createListModule, function(args, ret) { + const [config] = args; + if (config?.sections && Array.isArray(config.sections)) { + const sections = config.sections; + // Credit to @palmdevs - https://discord.com/channels/1196075698301968455/1243605828783571024/1307940348378742816 + let index = -~sections.findIndex((i: any) => i.settings?.includes("ACCOUNT")) || 1; + + Object.keys(registeredSections).forEach(sect => { + const alreadyExists = sections.some((s: any) => s.label === sect); + if (!alreadyExists) { + sections.splice(index++, 0, { + label: sect, + title: sect, + settings: registeredSections[sect].map(a => a.key) + }); + } + }); + } + return ret; + },)); + }catch{ + unpatches.push(after("default", SettingsOverviewScreen, (_, ret) => { + if (useIsFirstRender()) return; // :shrug: + + const { sections } = findInReactTree(ret, i => i.props?.sections).props; + // Credit to @palmdevs - https://discord.com/channels/1196075698301968455/1243605828783571024/1307940348378742816 + let index = -~sections.findIndex((i: any) => i.settings.includes("ACCOUNT")) || 1; + Object.keys(registeredSections).forEach(sect => { - const alreadyExists = sections.some((s: any) => s.label === sect); - if (!alreadyExists) { - sections.splice(index++, 0, { - label: sect, - title: sect, - settings: registeredSections[sect].map(a => a.key) - }); - } + sections.splice(index++, 0, { + label: sect, + title: sect, + settings: registeredSections[sect].map(a => a.key) + }); }); + })); } - - return ret; -}))}; \ No newline at end of file +}; \ No newline at end of file