-
- >
- );
- }
-
- // When the user leaves the online theme textbox, update the settings
- function onBlur() {
- settings.themeLinks = [...new Set(
- themeText
- .trim()
- .split(/\n+/)
- .map(s => s.trim())
- .filter(Boolean)
- )];
- }
-
- function renderOnlineThemes() {
- return (
- <>
-
- Paste links to css files here
- One link per line
- You can prefix lines with @light or @dark to toggle them based on your Discord theme
- Make sure to use direct links to files (raw or github.io)!
-
-
-
-
-
-
- >
- );
- }
-
- return (
-
-
-
- Local Themes
-
-
- Online Themes
-
-
-
- {currentTab === ThemeTab.LOCAL && renderLocalThemes()}
- {currentTab === ThemeTab.ONLINE && renderOnlineThemes()}
-
- );
-}
-
-export default wrapTab(ThemesTab, "Themes");
diff --git a/src/components/VencordSettings/UpdaterTab.tsx b/src/components/VencordSettings/UpdaterTab.tsx
deleted file mode 100644
index e29d7dfd..00000000
--- a/src/components/VencordSettings/UpdaterTab.tsx
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * 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 .
-*/
-
-import { useSettings } from "@api/Settings";
-import { ErrorCard } from "@components/ErrorCard";
-import { Flex } from "@components/Flex";
-import { Link } from "@components/Link";
-import { Margins } from "@utils/margins";
-import { classes } from "@utils/misc";
-import { ModalCloseButton, ModalContent, ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal";
-import { relaunch } from "@utils/native";
-import { useAwaiter } from "@utils/react";
-import { changes, checkForUpdates, getRepo, isNewer, update, updateError, UpdateLogger } from "@utils/updater";
-import { Alerts, Button, Card, Forms, Parser, React, Switch, Toasts } from "@webpack/common";
-
-import gitHash from "~git-hash";
-
-import { handleSettingsTabError, SettingsTab, wrapTab } from "./shared";
-
-function withDispatcher(dispatcher: React.Dispatch>, action: () => any) {
- return async () => {
- dispatcher(true);
- try {
- await action();
- } catch (e: any) {
- UpdateLogger.error("Failed to update", e);
-
- let err: string;
- if (!e) {
- err = "An unknown error occurred (error is undefined).\nPlease try again.";
- } else if (e.code && e.cmd) {
- const { code, path, cmd, stderr } = e;
-
- if (code === "ENOENT")
- err = `Command \`${path}\` not found.\nPlease install it and try again`;
- else {
- err = `An error occurred while running \`${cmd}\`:\n`;
- err += stderr || `Code \`${code}\`. See the console for more info`;
- }
-
- } else {
- err = "An unknown error occurred. See the console for more info.";
- }
-
- Alerts.show({
- title: "Oops!",
- body: (
-
- {err.split("\n").map((line, idx) =>