| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- import { useTranslate } from '@/hooks/commonHooks';
- import { ResponseType } from '@/interfaces/database/base';
- import { DSL, IFlow, IFlowTemplate } 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';
- import { v4 as uuid } from 'uuid';
-
- export const EmptyDsl = {
- graph: {
- nodes: [
- {
- id: 'begin',
- type: 'beginNode',
- position: {
- x: 50,
- y: 200,
- },
- data: {
- label: 'Begin',
- name: 'begin',
- },
- sourcePosition: 'left',
- targetPosition: 'right',
- },
- ],
- edges: [],
- },
- components: {
- begin: {
- obj: {
- component_name: 'Begin',
- params: {},
- },
- downstream: ['Answer:China'], // other edge target is downstream, edge source is current node id
- upstream: [], // edge source is upstream, edge target is current node id
- },
- },
- messages: [],
- reference: [],
- history: [],
- path: [],
- answer: [],
- };
-
- export const useFetchFlowTemplates = (): ResponseType<IFlowTemplate[]> => {
- const { t } = useTranslate('flow');
- const { data } = useQuery({
- queryKey: ['fetchFlowTemplates'],
- initialData: [],
- queryFn: async () => {
- const { data } = await flowService.listTemplates();
- if (Array.isArray(data?.data)) {
- data.data.unshift({
- id: uuid(),
- title: t('blank'),
- description: t('createFromNothing'),
- dsl: EmptyDsl,
- });
- }
-
- 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;
- refetch: () => void;
- } => {
- const { id } = useParams();
- const {
- data,
- isFetching: loading,
- refetch,
- } = useQuery({
- queryKey: ['flowDetail'],
- initialData: {} as IFlow,
- queryFn: async () => {
- const { data } = await flowService.getCanvas({}, id);
-
- return data?.data ?? {};
- },
- });
-
- return { data, loading, refetch };
- };
-
- export const useSetFlow = () => {
- const queryClient = useQueryClient();
- const {
- data,
- isPending: loading,
- mutateAsync,
- } = useMutation({
- mutationKey: ['setFlow'],
- mutationFn: async (params: {
- id?: string;
- title?: string;
- dsl?: DSL;
- avatar?: string;
- }) => {
- 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 };
- };
-
- export const useResetFlow = () => {
- const { id } = useParams();
- const {
- data,
- isPending: loading,
- mutateAsync,
- } = useMutation({
- mutationKey: ['resetFlow'],
- mutationFn: async () => {
- const { data } = await flowService.resetCanvas({ id });
- return data;
- },
- });
-
- return { data, loading, resetFlow: mutateAsync };
- };
|