import { ButtonItem, ErrorBoundary, Focusable, PanelSection, PanelSectionRow } from '@decky/ui'; import { FC, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { FaEyeSlash } from 'react-icons/fa'; import { AnnouncementsDisplay } from './AnnouncementsDisplay'; import { useDeckyState } from './DeckyState'; import NotificationBadge from './NotificationBadge'; import { useQuickAccessVisible } from './QuickAccessVisibleState'; import TitleView from './TitleView'; const PluginView: FC = () => { const { plugins, hiddenPlugins, updates, activePlugin, pluginOrder, setActivePlugin, closeActivePlugin } = useDeckyState(); const visible = useQuickAccessVisible(); const { t } = useTranslation(); const pluginList = useMemo(() => { console.log('updating PluginView after changes'); return [...plugins] .sort((a, b) => pluginOrder.indexOf(a.name) - pluginOrder.indexOf(b.name)) .filter((p) => p.content) .filter(({ name }) => !hiddenPlugins.includes(name)); }, [plugins, pluginOrder]); if (activePlugin) { return (
{(visible || activePlugin.alwaysRender) && activePlugin.content}
); } return ( <>
{pluginList.map(({ name, icon }) => ( setActivePlugin(name)}>
{icon}
{name}
))} {hiddenPlugins.length > 0 && (
{t('PluginView.hidden', { count: hiddenPlugins.length })}
)}
); }; export default PluginView;