import { ButtonItem, Focusable, PanelSection, PanelSectionRow, joinClassNames, scrollClasses, staticClasses, } from 'decky-frontend-lib'; import { VFC, useEffect, useState } from 'react'; import { Plugin } from '../plugin'; import { useDeckyState } from './DeckyState'; import NotificationBadge from './NotificationBadge'; import { useQuickAccessVisible } from './QuickAccessVisibleState'; import TitleView from './TitleView'; const PluginView: VFC = () => { const { plugins, updates, activePlugin, pluginOrder, setActivePlugin, closeActivePlugin } = useDeckyState(); const visible = useQuickAccessVisible(); const [pluginList, setPluginList] = useState( plugins.sort((a, b) => pluginOrder.indexOf(a.name) - pluginOrder.indexOf(b.name)), ); useEffect(() => { setPluginList(plugins.sort((a, b) => pluginOrder.indexOf(a.name) - pluginOrder.indexOf(b.name))); console.log('updating PluginView after changes'); }, [plugins, pluginOrder]); if (activePlugin) { return (
{(visible || activePlugin.alwaysRender) && activePlugin.content}
); } return ( <>
{pluginList .filter((p) => p.content) .map(({ name, icon }) => ( setActivePlugin(name)}>
{icon}
{name}
))}
); }; export default PluginView;