Excluded required plugins fixes

This commit is contained in:
Masterjoona 2024-07-28 16:40:46 +03:00
parent d20c1dbc70
commit db670d844c
No known key found for this signature in database
GPG key ID: F8032EB7D47E12ED
3 changed files with 52 additions and 29 deletions

View file

@ -35,7 +35,7 @@ import { Alerts, Button, Card, Forms, lodash, Parser, React, Select, Text, TextI
import Plugins, { ExcludedPlugins } from "~plugins";
import { togglePluginEnabled } from "./togglePluginEnabled";
import { ExcludedReasons, togglePluginEnabled } from "./utils";
const cl = classNameFactory("vc-plugins-");
@ -116,14 +116,6 @@ function ExcludedPluginsList({ search }: { search: string; }) {
const matchingExcludedPlugins = Object.entries(ExcludedPlugins)
.filter(([name]) => name.toLowerCase().includes(search));
const ExcludedReasons: Record<"web" | "discordDesktop" | "vencordDesktop" | "desktop" | "dev", string> = {
desktop: "Discord Desktop app or Vesktop",
discordDesktop: "Discord Desktop app",
vencordDesktop: "Vesktop app",
web: "Vesktop app and the Web version of Discord",
dev: "Developer version of Vencord"
};
return (
<Text variant="text-md/normal" className={Margins.top16}>
{matchingExcludedPlugins.length

View file

@ -73,3 +73,11 @@ export function togglePluginEnabled(isEnabled: boolean, plugin: Plugin,onRestart
settings.enabled = !wasEnabled;
}
export const ExcludedReasons: Record<"web" | "discordDesktop" | "vencordDesktop" | "desktop" | "dev", string> = {
desktop: "Discord Desktop app or Vesktop",
discordDesktop: "Discord Desktop app",
vencordDesktop: "Vesktop app",
web: "Vesktop app and the Web version of Discord",
dev: "Developer version of Vencord"
};

View file

@ -23,7 +23,7 @@ import ErrorBoundary from "@components/ErrorBoundary";
import { Flex } from "@components/Flex";
import { Link } from "@components/Link";
import { openPluginModal } from "@components/PluginSettings/PluginModal";
import { togglePluginEnabled } from "@components/PluginSettings/togglePluginEnabled";
import { ExcludedReasons, togglePluginEnabled } from "@components/PluginSettings/utils";
import { openUpdaterModal } from "@components/VencordSettings/UpdaterTab";
import { Devs, SUPPORT_CHANNEL_ID } from "@utils/constants";
import { sendMessage } from "@utils/discord";
@ -38,7 +38,7 @@ import { checkForUpdates, isOutdated, update } from "@utils/updater";
import { Alerts, Button, Card, ChannelStore, Forms, GuildMemberStore, Parser, RelationshipStore, showToast, Text, Toasts, UserStore } from "@webpack/common";
import gitHash from "~git-hash";
import plugins, { PluginMeta } from "~plugins";
import plugins, { ExcludedPlugins, PluginMeta } from "~plugins";
import SettingsPlugin from "./settings";
@ -325,30 +325,53 @@ export default definePlugin({
}
if (props.message.embeds[0]?.url?.includes("/plugins/")) {
const pluginName = props.message.embeds[0].rawTitle;
const isEnabled = Vencord.Plugins.isPluginEnabled(pluginName);
const toggle = isEnabled ? "Disable" : "Enable";
const plugin = plugins[pluginName];
const onRestartNeeded = () => showToast("Restart to apply changes!");
const togglePlugin = () => togglePluginEnabled(isEnabled, plugin, onRestartNeeded);
buttons.push(
<Button
key="vc-enable-plugin"
onClick={togglePlugin}
>
{toggle} {pluginName}
</Button>
);
if (plugin.options && !isObjectEmpty(plugin.options)) {
const excludedPlugin = ExcludedPlugins[pluginName];
if (excludedPlugin) {
buttons.push(
<Button
key="vc-plugin-settings"
onClick={() => openPluginModal(plugin, onRestartNeeded)}
key="vc-plugin-notice"
color={Button.Colors.RED}
>
Open {pluginName} Settings
Only available on {ExcludedReasons[excludedPlugin]}
</Button>
);
// button really wide, good ideas?
} else {
const isEnabled = Vencord.Plugins.isPluginEnabled(pluginName);
const toggle = isEnabled ? "Disable" : "Enable";
const plugin = plugins[pluginName];
const onRestartNeeded = () => showToast("Restart to apply changes!");
const togglePlugin = () => togglePluginEnabled(isEnabled, plugin, onRestartNeeded);
if (plugin.required) {
buttons.push(
<Button
key="vc-required-plugin"
>
{pluginName} is required
</Button>
);
} else {
buttons.push(
<Button
key="vc-enable-plugin"
onClick={togglePlugin}
>
{toggle} {pluginName}
</Button>
);
}
if (plugin.options && !isObjectEmpty(plugin.options)) {
buttons.push(
<Button
key="vc-plugin-settings"
onClick={() => openPluginModal(plugin, onRestartNeeded)}
>
Open {pluginName} Settings
</Button>
);
// Should it be Open {pluginName} Settings or just Open Settings? "Open Settings Settings" is dumb
}
}
}
}
}