From db7fc3769b40961f6fd0b64d092f9e9e82552018 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 15 Apr 2023 02:27:11 +0200 Subject: Fix settings on Vencord Mobile (#905) --- src/plugins/apiContextMenu.ts | 2 ++ src/plugins/settings.tsx | 30 +++++++++++++++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/apiContextMenu.ts b/src/plugins/apiContextMenu.ts index 0eaca78..d04e0e6 100644 --- a/src/plugins/apiContextMenu.ts +++ b/src/plugins/apiContextMenu.ts @@ -23,6 +23,8 @@ export default definePlugin({ name: "ContextMenuAPI", description: "API for adding/removing items to/from context menus.", authors: [Devs.Nuckyz, Devs.Ven], + required: true, + patches: [ { find: "♫ (つ。◕‿‿◕。)つ ♪", diff --git a/src/plugins/settings.tsx b/src/plugins/settings.tsx index f9a7548..74d0496 100644 --- a/src/plugins/settings.tsx +++ b/src/plugins/settings.tsx @@ -16,6 +16,7 @@ * along with this program. If not, see . */ +import { addContextMenuPatch } from "@api/ContextMenu"; import { Settings } from "@api/settings"; import PatchHelper from "@components/PatchHelper"; import { Devs } from "@utils/constants"; @@ -33,6 +34,23 @@ export default definePlugin({ description: "Adds Settings UI and debug info", authors: [Devs.Ven, Devs.Megu], required: true, + + start() { + // The settings shortcuts in the user settings cog context menu + // read the elements from a hardcoded map which for obvious reason + // doesn't contain our sections. This patches the actions of our + // sections to manually use SettingsRouter (which only works on desktop + // but the context menu is usually not available on mobile anyway) + addContextMenuPatch("user-settings-cog", children => { + const section = children.find(c => Array.isArray(c) && c.some(it => it?.props?.id === "VencordSettings")) as any; + section?.forEach(c => { + if (c?.props?.id?.startsWith("Vencord")) { + c.props.action = () => SettingsRouter.open(c.props.id); + } + }); + }); + }, + patches: [{ find: ".versionHash", replacement: [ @@ -69,8 +87,6 @@ export default definePlugin({ }], makeSettingsCategories({ ID }: { ID: Record; }) { - const makeOnClick = (tab: string) => () => SettingsRouter.open(tab); - return [ { section: ID.HEADER, @@ -79,50 +95,42 @@ export default definePlugin({ { section: "VencordSettings", label: "Vencord", - element: () => , - onClick: makeOnClick("VencordSettings") + element: () => }, { section: "VencordPlugins", label: "Plugins", element: () => , - onClick: makeOnClick("VencordPlugins") }, { section: "VencordThemes", label: "Themes", element: () => , - onClick: makeOnClick("VencordThemes") }, !IS_WEB && { section: "VencordUpdater", label: "Updater", element: () => , - onClick: makeOnClick("VencordUpdater") }, { section: "VencordCloud", label: "Cloud", element: () => , - onClick: makeOnClick("VencordCloud") }, { section: "VencordSettingsSync", label: "Backup & Restore", element: () => , - onClick: makeOnClick("VencordSettingsSync") }, IS_DEV && { section: "VencordPatchHelper", label: "Patch Helper", element: PatchHelper!, - onClick: makeOnClick("VencordPatchHelper") }, IS_VENCORD_DESKTOP && { section: "VencordDesktop", label: "Desktop Settings", element: VencordDesktop.Components.Settings, - onClick: makeOnClick("VencordDesktop") }, { section: ID.DIVIDER -- cgit