/* * Vencord, a Discord client mod * Copyright (c) 2025 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { isPluginEnabled } from "@api/PluginManager"; import ErrorBoundary from "@components/ErrorBoundary"; import { Logger } from "@utils/Logger"; import { isEquicordGuild, isEquicordSupport } from "@utils/misc"; import { Message } from "@vencord/discord-types"; import { Button, showToast, Toasts } from "@webpack/common"; import { JSX } from "react"; import { toggleEnabled } from "./utils"; export const PluginButtons = ErrorBoundary.wrap(function PluginCards({ message }: { message: Message; }) { const pluginButtons = [] as JSX.Element[]; const msg = message.content?.toLowerCase() ?? ""; const contentWords = (msg.match(/`\w+`/g) ?? []).map(e => e.slice(1, -1)); const matchedPlugins = Object.keys(Vencord.Plugins.plugins).filter(name => contentWords.includes(name.toLowerCase())); const matchedPlugin = matchedPlugins.sort((a, b) => b.length - a.length)[0]; const pluginData = matchedPlugin ? Vencord.Plugins.plugins[matchedPlugin] : null; const isEquicord = isEquicordGuild(message.channel_id) && isEquicordSupport(message.author.id); const startsWithEnabled = msg.startsWith("enable"); const startsWithDisabled = msg.startsWith("disable"); const shouldAddPluginButtons = pluginData && isEquicord && (startsWithEnabled || startsWithDisabled); if (shouldAddPluginButtons) { if (pluginData.required || pluginData.name.endsWith("API")) return; const isEnabled = isPluginEnabled(matchedPlugin); let label = `${matchedPlugin} is already ${isEnabled ? "enabled" : "disabled"}`; let disabled = true; if ((startsWithDisabled && isEnabled) || (startsWithEnabled && !isEnabled)) { label = `${isEnabled ? "Disable" : "Enable"} ${matchedPlugin}`; disabled = false; } pluginButtons.push( ); } if (pluginButtons.length === 0) return null; return (