2024-10-29 10:51:41 +08:00
|
|
|
import {
|
|
|
|
useEffect,
|
|
|
|
} from 'react'
|
2024-10-31 15:41:02 +08:00
|
|
|
import {
|
2024-10-31 18:31:17 +08:00
|
|
|
useMarketplaceCollectionsAndPlugins,
|
|
|
|
useMarketplacePlugins,
|
|
|
|
} from '@/app/components/plugins/marketplace/hooks'
|
2024-11-13 16:28:18 +08:00
|
|
|
import { PluginType } from '@/app/components/plugins/types'
|
2024-10-29 10:51:41 +08:00
|
|
|
|
2024-10-31 15:41:02 +08:00
|
|
|
export const useMarketplace = (searchPluginText: string, filterPluginTags: string[]) => {
|
2024-10-31 18:31:17 +08:00
|
|
|
const {
|
|
|
|
isLoading,
|
|
|
|
marketplaceCollections,
|
|
|
|
marketplaceCollectionPluginsMap,
|
|
|
|
queryMarketplaceCollectionsAndPlugins,
|
|
|
|
} = useMarketplaceCollectionsAndPlugins()
|
|
|
|
const {
|
|
|
|
plugins,
|
2024-11-08 18:21:39 +08:00
|
|
|
resetPlugins,
|
2024-10-31 18:31:17 +08:00
|
|
|
queryPlugins,
|
|
|
|
queryPluginsWithDebounced,
|
|
|
|
isLoading: isPluginsLoading,
|
|
|
|
} = useMarketplacePlugins()
|
2024-10-31 15:41:02 +08:00
|
|
|
|
2024-10-29 10:51:41 +08:00
|
|
|
useEffect(() => {
|
2024-10-31 15:41:02 +08:00
|
|
|
if (searchPluginText || filterPluginTags.length) {
|
|
|
|
if (searchPluginText) {
|
2024-10-31 18:31:17 +08:00
|
|
|
queryPluginsWithDebounced({
|
2024-11-13 16:28:18 +08:00
|
|
|
category: PluginType.tool,
|
2024-10-31 15:41:02 +08:00
|
|
|
query: searchPluginText,
|
|
|
|
tags: filterPluginTags,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
2024-10-31 18:31:17 +08:00
|
|
|
queryPlugins({
|
2024-11-13 16:28:18 +08:00
|
|
|
category: PluginType.tool,
|
2024-10-31 15:41:02 +08:00
|
|
|
query: searchPluginText,
|
|
|
|
tags: filterPluginTags,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
else {
|
2024-11-13 16:28:18 +08:00
|
|
|
queryMarketplaceCollectionsAndPlugins({ category: PluginType.tool })
|
2024-11-08 18:21:39 +08:00
|
|
|
resetPlugins()
|
2024-10-31 15:41:02 +08:00
|
|
|
}
|
2024-11-08 18:21:39 +08:00
|
|
|
}, [searchPluginText, filterPluginTags, queryPlugins, queryMarketplaceCollectionsAndPlugins, queryPluginsWithDebounced, resetPlugins])
|
2024-10-29 10:51:41 +08:00
|
|
|
|
|
|
|
return {
|
2024-10-31 18:31:17 +08:00
|
|
|
isLoading: isLoading || isPluginsLoading,
|
2024-10-29 10:51:41 +08:00
|
|
|
marketplaceCollections,
|
|
|
|
marketplaceCollectionPluginsMap,
|
2024-10-31 15:41:02 +08:00
|
|
|
plugins,
|
2024-10-29 10:51:41 +08:00
|
|
|
}
|
|
|
|
}
|