dify/web/app/components/plugins/plugin-detail-panel/tool-selector/hooks/use-plugin-installed-check.ts

37 lines
1.0 KiB
TypeScript

import { PluginSource } from '@/app/components/plugins/types'
import {
useCheckInstalled,
usePluginManifestInfo,
} from '@/service/use-plugins'
type UsePluginInstalledCheckOptions = {
providerPluginId?: string | null
enabled?: boolean
}
export const usePluginInstalledCheck = (
input: UsePluginInstalledCheckOptions = {},
) => {
const {
providerPluginId,
enabled = true,
} = input
const pluginID = providerPluginId ?? ''
const { data: installedPluginData } = useCheckInstalled({
pluginIds: pluginID ? [pluginID] : [],
enabled: enabled && !!pluginID,
})
const installedPlugin = installedPluginData?.plugins.at(0)
const shouldQueryMarketplace = enabled
&& !!pluginID
&& (!installedPlugin || installedPlugin.source === PluginSource.marketplace)
const { data: manifest } = usePluginManifestInfo(shouldQueryMarketplace ? pluginID : '')
return {
inMarketPlace: installedPlugin?.source === PluginSource.marketplace || !!manifest,
manifest: manifest?.data.plugin,
pluginID,
}
}