Files
dify/web/app/components/tools/workflow-tool/hooks/use-workflow-tool.ts
CodingOnStar 0b3bf03818 refactor(workflow-tool): update types and improve modal handling
- Removed explicit 'any' types in favor of 'unknown' for better type safety.
- Refactored the WorkflowToolConfigureButton component to utilize a custom hook for managing modal state and logic.
- Introduced new components for input and output tables to streamline the workflow tool configuration process.
- Enhanced the form handling logic with a dedicated hook for managing form state and validation.
- Cleaned up unused imports and improved overall code organization.
2026-01-26 15:19:38 +08:00

71 lines
1.9 KiB
TypeScript

import type { WorkflowToolProviderRequest, WorkflowToolProviderResponse } from '@/app/components/tools/types'
import {
useMutation,
useQuery,
useQueryClient,
} from '@tanstack/react-query'
import { get, post } from '@/service/base'
const NAME_SPACE = 'workflow-tool'
// Query key factory for workflow tool detail
const workflowToolDetailKey = (appId: string) => [NAME_SPACE, 'detail', appId]
/**
* Fetch workflow tool detail by app ID
*/
export const useWorkflowToolDetail = (appId: string, enabled = true) => {
return useQuery<WorkflowToolProviderResponse>({
queryKey: workflowToolDetailKey(appId),
queryFn: () => get<WorkflowToolProviderResponse>(`/workspaces/current/tool-provider/workflow/detail?workflow_app_id=${appId}`),
enabled: enabled && !!appId,
})
}
/**
* Invalidate workflow tool detail cache
*/
export const useInvalidateWorkflowToolDetail = () => {
const queryClient = useQueryClient()
return (appId: string) => {
queryClient.invalidateQueries({
queryKey: workflowToolDetailKey(appId),
})
}
}
type CreateWorkflowToolPayload = WorkflowToolProviderRequest & { workflow_app_id: string }
/**
* Create workflow tool provider mutation
*/
export const useCreateWorkflowTool = () => {
return useMutation({
mutationKey: [NAME_SPACE, 'create'],
mutationFn: (payload: CreateWorkflowToolPayload) => {
return post('/workspaces/current/tool-provider/workflow/create', {
body: payload,
})
},
})
}
type UpdateWorkflowToolPayload = WorkflowToolProviderRequest & Partial<{
workflow_app_id: string
workflow_tool_id: string
}>
/**
* Update workflow tool provider mutation
*/
export const useUpdateWorkflowTool = () => {
return useMutation({
mutationKey: [NAME_SPACE, 'update'],
mutationFn: (payload: UpdateWorkflowToolPayload) => {
return post('/workspaces/current/tool-provider/workflow/update', {
body: payload,
})
},
})
}