dify/web/app/components/tools/marketplace/hooks.ts
2024-11-13 16:28:38 +08:00

54 lines
1.4 KiB
TypeScript

import {
useEffect,
} from 'react'
import {
useMarketplaceCollectionsAndPlugins,
useMarketplacePlugins,
} from '@/app/components/plugins/marketplace/hooks'
import { PluginType } from '@/app/components/plugins/types'
export const useMarketplace = (searchPluginText: string, filterPluginTags: string[]) => {
const {
isLoading,
marketplaceCollections,
marketplaceCollectionPluginsMap,
queryMarketplaceCollectionsAndPlugins,
} = useMarketplaceCollectionsAndPlugins()
const {
plugins,
resetPlugins,
queryPlugins,
queryPluginsWithDebounced,
isLoading: isPluginsLoading,
} = useMarketplacePlugins()
useEffect(() => {
if (searchPluginText || filterPluginTags.length) {
if (searchPluginText) {
queryPluginsWithDebounced({
category: PluginType.tool,
query: searchPluginText,
tags: filterPluginTags,
})
return
}
queryPlugins({
category: PluginType.tool,
query: searchPluginText,
tags: filterPluginTags,
})
}
else {
queryMarketplaceCollectionsAndPlugins({ category: PluginType.tool })
resetPlugins()
}
}, [searchPluginText, filterPluginTags, queryPlugins, queryMarketplaceCollectionsAndPlugins, queryPluginsWithDebounced, resetPlugins])
return {
isLoading: isLoading || isPluginsLoading,
marketplaceCollections,
marketplaceCollectionPluginsMap,
plugins,
}
}