use-refresh-plugin-list.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { useModelList } from '@/app/components/header/account-setting/model-provider-page/hooks'
  2. import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
  3. import { useProviderContext } from '@/context/provider-context'
  4. import { useInvalidateInstalledPluginList } from '@/service/use-plugins'
  5. import { useInvalidateAllBuiltInTools, useInvalidateAllToolProviders } from '@/service/use-tools'
  6. import { useInvalidateStrategyProviders } from '@/service/use-strategy'
  7. import type { Plugin, PluginDeclaration, PluginManifestInMarket } from '../../types'
  8. import { PluginType } from '../../types'
  9. const useRefreshPluginList = () => {
  10. const invalidateInstalledPluginList = useInvalidateInstalledPluginList()
  11. const { mutate: refetchLLMModelList } = useModelList(ModelTypeEnum.textGeneration)
  12. const { mutate: refetchEmbeddingModelList } = useModelList(ModelTypeEnum.textEmbedding)
  13. const { mutate: refetchRerankModelList } = useModelList(ModelTypeEnum.rerank)
  14. const { refreshModelProviders } = useProviderContext()
  15. const invalidateAllToolProviders = useInvalidateAllToolProviders()
  16. const invalidateAllBuiltInTools = useInvalidateAllBuiltInTools()
  17. const invalidateStrategyProviders = useInvalidateStrategyProviders()
  18. return {
  19. refreshPluginList: (manifest?: PluginManifestInMarket | Plugin | PluginDeclaration | null, refreshAllType?: boolean) => {
  20. // installed list
  21. invalidateInstalledPluginList()
  22. // tool page, tool select
  23. if ((manifest && PluginType.tool.includes(manifest.category)) || refreshAllType) {
  24. invalidateAllToolProviders()
  25. invalidateAllBuiltInTools()
  26. // TODO: update suggested tools. It's a function in hook useMarketplacePlugins,handleUpdatePlugins
  27. }
  28. // model select
  29. if ((manifest && PluginType.model.includes(manifest.category)) || refreshAllType) {
  30. refreshModelProviders()
  31. refetchLLMModelList()
  32. refetchEmbeddingModelList()
  33. refetchRerankModelList()
  34. }
  35. // agent select
  36. if ((manifest && PluginType.agent.includes(manifest.category)) || refreshAllType)
  37. invalidateStrategyProviders()
  38. },
  39. }
  40. }
  41. export default useRefreshPluginList