diff options
author | Vendicated <vendicated@riseup.net> | 2022-12-01 03:38:17 +0100 |
---|---|---|
committer | Vendicated <vendicated@riseup.net> | 2022-12-01 03:38:17 +0100 |
commit | 734054ff68a103482bff903bb384bc24576c5499 (patch) | |
tree | ed2d9b1c23d027c00692dae01c8ffffa4aada6ad | |
parent | f94cbfb2f498a121a5dbb3a22acdb74b446c952b (diff) | |
download | Vencord-734054ff68a103482bff903bb384bc24576c5499.tar.gz Vencord-734054ff68a103482bff903bb384bc24576c5499.tar.bz2 Vencord-734054ff68a103482bff903bb384bc24576c5499.zip |
feat(Settings): Allow moving Vencord section to different places
-rw-r--r-- | src/components/VencordSettings/VencordTab.tsx | 5 | ||||
-rw-r--r-- | src/plugins/settings.tsx | 38 |
2 files changed, 40 insertions, 3 deletions
diff --git a/src/components/VencordSettings/VencordTab.tsx b/src/components/VencordSettings/VencordTab.tsx index 89bbefd..746fcf0 100644 --- a/src/components/VencordSettings/VencordTab.tsx +++ b/src/components/VencordSettings/VencordTab.tsx @@ -22,7 +22,7 @@ import DonateButton from "@components/DonateButton"; import ErrorBoundary from "@components/ErrorBoundary"; import IpcEvents from "@utils/IpcEvents"; import { useAwaiter } from "@utils/misc"; -import { Button, Card, Forms, React, Switch } from "@webpack/common"; +import { Button, Card, Forms, Margins, React, Switch } from "@webpack/common"; const st = (style: string) => `vcSettings${style}`; @@ -81,6 +81,9 @@ function VencordSettings() { <Forms.FormDivider /> <Forms.FormSection title="Settings"> + <Forms.FormText className={Margins.marginBottom20}> + Hint: You can change the position of this settings section in the settings of the "Settings" plugin! + </Forms.FormText> <Switch value={settings.useQuickCss} onChange={(v: boolean) => settings.useQuickCss = v} diff --git a/src/plugins/settings.tsx b/src/plugins/settings.tsx index 975c399..e5afbbc 100644 --- a/src/plugins/settings.tsx +++ b/src/plugins/settings.tsx @@ -16,9 +16,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import { Settings } from "@api/settings"; import { Devs } from "@utils/constants"; +import Logger from "@utils/Logger"; import { LazyComponent } from "@utils/misc"; -import definePlugin from "@utils/types"; +import definePlugin, { OptionType } from "@utils/types"; import gitHash from "~git-hash"; @@ -43,7 +45,23 @@ export default definePlugin({ }, { find: "Messages.ACTIVITY_SETTINGS", replacement: { - match: /\{section:(.{1,2})\.ID\.HEADER,\s*label:(.{1,2})\..{1,2}\.Messages\.ACTIVITY_SETTINGS\}/, + get match() { + switch (Settings.plugins.Settings.settingsLocation) { + case "top": return /\{section:(.{1,2})\.ID\.HEADER,\s*label:(.{1,2})\..{1,2}\.Messages\.USER_SETTINGS\}/; + case "aboveNitro": return /\{section:(.{1,2})\.ID\.HEADER,\s*label:(.{1,2})\..{1,2}\.Messages\.BILLING_SETTINGS\}/; + case "belowNitro": return /\{section:(.{1,2})\.ID\.HEADER,\s*label:(.{1,2})\..{1,2}\.Messages\.APP_SETTINGS\}/; + case "aboveActivity": return /\{section:(.{1,2})\.ID\.HEADER,\s*label:(.{1,2})\..{1,2}\.Messages\.ACTIVITY_SETTINGS\}/; + case "belowActivity": return /(?<=\{section:(.{1,2})\.ID\.DIVIDER},)\{section:"changelog"/; + case "bottom": return /\{section:(.{1,2})\.ID\.CUSTOM,\s*element:.+?}/; + default: { + new Logger("Settings").error( + new Error("No switch case matched????? Don't mess with the settings, silly") + ); + // matches nothing + return /(?!a)a/; + } + } + }, replace: (m, mod) => { const updater = !IS_WEB ? '{section:"VencordUpdater",label:"Updater",element:Vencord.Plugins.plugins.Settings.tabs.updater},' : ""; const patchHelper = IS_DEV ? '{section:"VencordPatchHelper",label:"Patch Helper",element:Vencord.Components.PatchHelper},' : ""; @@ -61,6 +79,22 @@ export default definePlugin({ } }], + options: { + settingsLocation: { + type: OptionType.SELECT, + description: "Where to put the Vencord settings section", + options: [ + { label: "At the very top", value: "top" }, + { label: "Above the Nitro section", value: "aboveNitro" }, + { label: "Below the Nitro section", value: "belowNitro" }, + { label: "Above Activity Settings", value: "aboveActivity", default: true }, + { label: "Below Activity Settings", value: "belowActivity" }, + { label: "At the very bottom", value: "bottom" }, + ], + restartNeeded: true + }, + }, + tabs: { vencord: () => <SettingsComponent tab="VencordSettings" />, plugins: () => <SettingsComponent tab="VencordPlugins" />, |