/** * 插件商店 */ import { LoadingSpinner } from '@/components/LoadingSpinner'; import { PillTabPane, PillTabs } from '@/components/PillTabs'; import { Divider } from 'antd'; import React from 'react'; import { t, useAsync } from 'tailchat-shared'; import { builtinPlugins } from '../builtin'; import { pluginManager } from '../manager'; import { PluginStoreItem } from './Item'; export const PluginStore: React.FC = React.memo(() => { const { loading, value: installedPluginList = [] } = useAsync( async () => pluginManager.getInstalledPlugins(), [] ); if (loading) { return ; } const installedPluginNameList = installedPluginList.map((p) => p.name); return (
{t('内置插件')}
{builtinPlugins.map((plugin) => (
))}
{t('插件中心')} {/* TODO: 插件中心 */}
{t('已安装')}
{[...builtinPlugins, ...installedPluginList].map((plugin) => ( ))}
); }); PluginStore.displayName = 'PluginStore';