/* * Vencord, a Discord client mod * Copyright (c) 2024 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { openPluginModal } from "@components/PluginSettings/PluginModal"; import { isObjectEmpty } from "@utils/misc"; import { Alerts, i18n, Menu, useMemo, useState } from "@webpack/common"; import Plugins from "~plugins"; function onRestartNeeded() { Alerts.show({ title: "Restart required", body:

You have changed settings that require a restart.

, confirmText: "Restart now", cancelText: "Later!", onConfirm: () => location.reload() }); } export default function PluginsSubmenu() { const sortedPlugins = useMemo(() => Object.values(Plugins) .sort((a, b) => a.name.localeCompare(b.name)), []); const [query, setQuery] = useState(""); const search = query.toLowerCase(); const include = (p: typeof Plugins[keyof typeof Plugins]) => ( Vencord.Plugins.isPluginEnabled(p.name) && p.options && !isObjectEmpty(p.options) && ( p.name.toLowerCase().includes(search) || p.description.toLowerCase().includes(search) || p.tags?.some(t => t.toLowerCase().includes(search)) ) ); const plugins = sortedPlugins.filter(include); return ( <> ( )} /> {!!plugins.length && } {plugins.map(p => ( openPluginModal(p, onRestartNeeded)} /> ))} ); }