From 98cb301df53305f397ac6e1b4e603c930820f228 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Wed, 31 Aug 2022 04:07:16 +0200 Subject: Make Settings & Settings Page --- src/components/Settings.tsx | 84 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 2 deletions(-) (limited to 'src/components/Settings.tsx') diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index f996448..4499c9f 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -1,4 +1,84 @@ +import { lazy, LazyComponent, useAwaiter } from "../utils/misc"; +import { findByDisplayName, Forms } from '../webpack'; +import Plugins from 'plugins'; +import { useSettings } from "../api/settings"; +import { findByProps } from '../webpack/index'; +import IpcEvents from "../utils/IpcEvents"; + +// Lazy spam because this is ran before React is a thing. Todo: Fix that and clean this up lmao + +const SwitchItem = LazyComponent void; + note?: string; + tooltipNote?: string; + disabled?: boolean; +}>>(() => findByDisplayName("SwitchItem").default); + +const getButton = lazy(() => findByProps("ButtonLooks", "default")); +const Button = LazyComponent(() => getButton().default); +const getFlex = lazy(() => findByDisplayName("Flex")); +const Flex = LazyComponent(() => getFlex().default); +const FlexChild = LazyComponent(() => getFlex().default.Child); +const getMargins = lazy(() => findByProps("marginTop8", "marginBottom8")); + export default function Settings(props) { - console.log(props); - return (

Hi

); + const settingsDir = useAwaiter(() => VencordNative.ipc.invoke(IpcEvents.GET_SETTINGS_DIR), "Loading..."); + const settings = useSettings(); + + return ( + + SettingsDir: {settingsDir} + + + + + + + + + Settings + settings.unsafeRequire = v} + note="Enables VencordNative.require. Useful for testing, very bad for security. Leave this off unless you need it." + > + Enable Ensafe Require + + + Plugins + {Plugins.map(p => ( + { + settings.plugins[p.name].enabled = v; + if (v) { + p.dependencies?.forEach(d => { + settings.plugins[d].enabled = true; + }); + } + }} + note={p.description} + tooltipNote={p.required ? "This plugin is required. Thus you cannot disable it." : undefined} + > + {p.name} + + )) + } + + ); } \ No newline at end of file -- cgit