Files
dify/web/app/components/workflow/plugin-dependency/hooks.ts
T
7cafd65d54 refactor(web): migrate handwritten console API calls to the generated oRPC contract (#44169)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-10-16 03:47:31 +00:00

61 lines
2.0 KiB
TypeScript

import { useMutation } from '@tanstack/react-query'
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next'
import { selectPipelineDependencies } from '@/app/components/rag-pipeline/utils/query-select'
import { toast } from '@/app/notifications'
import { consoleQuery } from '@/service/console'
import { getErrorMessage } from '@/utils/error-message'
import { useStore as usePluginDependenciesStore } from './store'
export const usePluginDependencies = () => {
const { t } = useTranslation(['common'])
const { mutateAsync: checkWorkflowDependencies } = useMutation(
consoleQuery.apps.imports.byAppId.checkDependencies.get.mutationOptions({
context: { silent: true },
}),
)
const { mutateAsync: checkPipelineDependencies } = useMutation(
consoleQuery.rag.pipelines.imports.byPipelineId.checkDependencies.get.mutationOptions(),
)
const handleCheckPluginDependencies = useCallback(
async (id: string, isPipeline = false) => {
const { setDependencies } = usePluginDependenciesStore.getState()
if (isPipeline) {
setDependencies(
selectPipelineDependencies(
await checkPipelineDependencies({ params: { pipeline_id: id } }),
),
)
return true
}
try {
const { leaked_dependencies } = await checkWorkflowDependencies({ params: { app_id: id } })
setDependencies(
(leaked_dependencies ?? []).map((dependency) => ({
...dependency,
// The legacy dependency store represents an absent version with undefined.
value: { ...dependency.value, version: dependency.value.version ?? undefined },
})),
)
return true
} catch (error) {
setDependencies([])
toast.error(
t(($) => $.error, { ns: 'common' }),
{
description: getErrorMessage(error),
},
)
return false
}
},
[checkWorkflowDependencies, checkPipelineDependencies, t],
)
return {
handleCheckPluginDependencies,
}
}