|
import { DSL, IFlow } from '@/interfaces/database/flow'; |
|
import i18n from '@/locales/config'; |
|
import flowService from '@/services/flow-service'; |
|
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; |
|
import { message } from 'antd'; |
|
import { useParams } from 'umi'; |
|
|
|
export const useFetchFlowTemplates = () => { |
|
const { data } = useQuery({ |
|
queryKey: ['fetchFlowTemplates'], |
|
initialData: [], |
|
queryFn: async () => { |
|
const { data } = await flowService.listTemplates(); |
|
|
|
return data; |
|
}, |
|
}); |
|
|
|
return data; |
|
}; |
|
|
|
export const useFetchFlowList = (): { data: IFlow[]; loading: boolean } => { |
|
const { data, isFetching: loading } = useQuery({ |
|
queryKey: ['fetchFlowList'], |
|
initialData: [], |
|
queryFn: async () => { |
|
const { data } = await flowService.listCanvas(); |
|
|
|
return data?.data ?? []; |
|
}, |
|
}); |
|
|
|
return { data, loading }; |
|
}; |
|
|
|
export const useFetchFlow = (): { data: IFlow; loading: boolean } => { |
|
const { id } = useParams(); |
|
const { data, isFetching: loading } = useQuery({ |
|
queryKey: ['flowDetail'], |
|
initialData: {} as IFlow, |
|
queryFn: async () => { |
|
const { data } = await flowService.getCanvas({}, id); |
|
|
|
return data?.data ?? {}; |
|
}, |
|
}); |
|
|
|
return { data, loading }; |
|
}; |
|
|
|
export const useSetFlow = () => { |
|
const queryClient = useQueryClient(); |
|
const { |
|
data, |
|
isPending: loading, |
|
mutateAsync, |
|
} = useMutation({ |
|
mutationKey: ['setFlow'], |
|
mutationFn: async (params: { id?: string; title?: string; dsl?: DSL }) => { |
|
const { data } = await flowService.setCanvas(params); |
|
if (data.retcode === 0) { |
|
message.success( |
|
i18n.t(`message.${params?.id ? 'modified' : 'created'}`), |
|
); |
|
queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] }); |
|
} |
|
return data; |
|
}, |
|
}); |
|
|
|
return { data, loading, setFlow: mutateAsync }; |
|
}; |
|
|
|
export const useDeleteFlow = () => { |
|
const queryClient = useQueryClient(); |
|
const { |
|
data, |
|
isPending: loading, |
|
mutateAsync, |
|
} = useMutation({ |
|
mutationKey: ['deleteFlow'], |
|
mutationFn: async (canvasIds: string[]) => { |
|
const { data } = await flowService.removeCanvas({ canvasIds }); |
|
if (data.retcode === 0) { |
|
queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] }); |
|
} |
|
return data?.data ?? []; |
|
}, |
|
}); |
|
|
|
return { data, loading, deleteFlow: mutateAsync }; |
|
}; |
|
|
|
export const useRunFlow = () => { |
|
const { |
|
data, |
|
isPending: loading, |
|
mutateAsync, |
|
} = useMutation({ |
|
mutationKey: ['runFlow'], |
|
mutationFn: async (params: { id: string; dsl: DSL }) => { |
|
const { data } = await flowService.runCanvas(params); |
|
if (data.retcode === 0) { |
|
message.success(i18n.t(`message.modified`)); |
|
} |
|
return data?.data ?? {}; |
|
}, |
|
}); |
|
|
|
return { data, loading, runFlow: mutateAsync }; |
|
}; |
|
|