/* * Vencord, a modification for Discord's desktop app * Copyright (c) 2022 Vendicated and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ import { useSettings } from "../../api/settings"; import IpcEvents from "../../utils/IpcEvents"; import { useAwaiter } from "../../utils/misc"; import { Button, Card, Forms, React, Switch } from "../../webpack/common"; import DonateButton from "../DonateButton"; import ErrorBoundary from "../ErrorBoundary"; const st = (style: string) => `vcSettings${style}`; function VencordSettings() { const [settingsDir, , settingsDirPending] = useAwaiter(() => VencordNative.ipc.invoke<string>(IpcEvents.GET_SETTINGS_DIR), "Loading..."); const settings = useSettings(); return ( <React.Fragment> <DonateCard /> <Forms.FormSection title="Quick Actions"> <Card className={st("QuickActionCard")}> {IS_WEB ? ( <Button onClick={() => require("./Monaco").launchMonacoEditor()} size={Button.Sizes.SMALL} disabled={settingsDir === "Loading..."}> Open QuickCSS File </Button> ) : ( <React.Fragment> <Button onClick={() => window.DiscordNative.app.relaunch()} size={Button.Sizes.SMALL}> Restart Client </Button> <Button onClick={() => VencordNative.ipc.invoke(IpcEvents.OPEN_MONACO_EDITOR)} size={Button.Sizes.SMALL} disabled={settingsDir === "Loading..."}> Open QuickCSS File </Button> <Button onClick={() => window.DiscordNative.fileManager.showItemInFolder(settingsDir)} size={Button.Sizes.SMALL} disabled={settingsDirPending}> Open Settings Folder </Button> <Button onClick={() => VencordNative.ipc.invoke(IpcEvents.OPEN_EXTERNAL, "https://github.com/Vendicated/Vencord")} size={Button.Sizes.SMALL} disabled={settingsDirPending}> Open in GitHub </Button> </React.Fragment> )} </Card> </Forms.FormSection> <Forms.FormDivider /> <Forms.FormSection title="Settings"> <Switch value={settings.useQuickCss} onChange={(v: boolean) => settings.useQuickCss = v} note="Loads styles from your QuickCss file"> Use QuickCss </Switch> {!IS_WEB && ( <React.Fragment> <Switch value={settings.enableReactDevtools} onChange={(v: boolean) => settings.enableReactDevtools = v} note="Requires a full restart"> Enable React Developer Tools </Switch> <Switch value={settings.notifyAboutUpdates} onChange={(v: boolean) => settings.notifyAboutUpdates = v} note="Shows a Toast on StartUp"> Get notified about new Updates </Switch> </React.Fragment> )} </Forms.FormSection> </React.Fragment> ); } function DonateCard() { return ( <Card style={{ padding: "1em", display: "flex", flexDirection: "row", marginBottom: "1em", marginTop: "1em" }}> <div> <Forms.FormTitle tag="h5">Support the Project</Forms.FormTitle> <Forms.FormText> Please consider supporting the Development of Vencord by donating! </Forms.FormText> <DonateButton style={{ transform: "translateX(-1em)" }} /> </div> <img role="presentation" src="https://cdn.discordapp.com/emojis/1026533090627174460.png" alt="" style={{ marginLeft: "auto", transform: "rotate(10deg)" }} /> </Card> ); } export default ErrorBoundary.wrap(VencordSettings);