| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | import { del, get, patch, post } from './base'import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query'import type {  FetchWorkflowDraftPageParams,  FetchWorkflowDraftPageResponse,  FetchWorkflowDraftResponse,  PublishWorkflowParams,  UpdateWorkflowParams,  WorkflowConfigResponse,} from '@/types/workflow'import type { CommonResponse } from '@/models/common'import { useReset } from './use-base'const NAME_SPACE = 'workflow'export const useAppWorkflow = (appID: string) => {  return useQuery<FetchWorkflowDraftResponse>({    enabled: !!appID,    queryKey: [NAME_SPACE, 'publish', appID],    queryFn: () => get<FetchWorkflowDraftResponse>(`/apps/${appID}/workflows/publish`),  })}export const useWorkflowConfig = (appId: string) => {  return useQuery({    queryKey: [NAME_SPACE, 'config', appId],    queryFn: () => get<WorkflowConfigResponse>(`/apps/${appId}/workflows/draft/config`),  })}const WorkflowVersionHistoryKey = [NAME_SPACE, 'versionHistory']export const useWorkflowVersionHistory = (params: FetchWorkflowDraftPageParams) => {  const { appId, initialPage, limit, userId, namedOnly } = params  return useInfiniteQuery({    queryKey: [...WorkflowVersionHistoryKey, appId, initialPage, limit, userId, namedOnly],    queryFn: ({ pageParam = 1 }) => get<FetchWorkflowDraftPageResponse>(`/apps/${appId}/workflows`, {      params: {        page: pageParam,        limit,        user_id: userId || '',        named_only: !!namedOnly,      },    }),    getNextPageParam: lastPage => lastPage.has_more ? lastPage.page + 1 : null,    initialPageParam: initialPage,  })}export const useResetWorkflowVersionHistory = (appId: string) => {  return useReset([...WorkflowVersionHistoryKey, appId])}export const useUpdateWorkflow = (appId: string) => {  return useMutation({    mutationKey: [NAME_SPACE, 'update'],    mutationFn: (params: UpdateWorkflowParams) => patch(`/apps/${appId}/workflows/${params.workflowId}`, {      body: {        marked_name: params.title,        marked_comment: params.releaseNotes,      },    }),  })}export const useDeleteWorkflow = (appId: string) => {  return useMutation({    mutationKey: [NAME_SPACE, 'delete'],    mutationFn: (workflowId: string) => del(`/apps/${appId}/workflows/${workflowId}`),  })}export const usePublishWorkflow = (appId: string) => {  return useMutation({    mutationKey: [NAME_SPACE, 'publish'],    mutationFn: (params: PublishWorkflowParams) => post<CommonResponse & { created_at: number }>(`/apps/${appId}/workflows/publish`, {      body: {        marked_name: params.title,        marked_comment: params.releaseNotes,      },    }),  })}
 |