/**
* 插件商店
*/
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';
import { ManualInstall } from './ManualInstall';
function usePluginStoreData() {
const { loading: loading1, value: installedPluginList = [] } = useAsync(
async () => pluginManager.getInstalledPlugins(),
[]
);
const { loading: loading2, value: allPlugins = [] } = useAsync(
async () => pluginManager.getRegistryPlugins(),
[]
);
const loading = loading1 || loading2;
return {
loading,
installedPluginList,
allPlugins,
};
}
export const PluginStore: React.FC = React.memo(() => {
const { loading, installedPluginList, allPlugins } = usePluginStoreData();
if (loading) {
return