import { FormikHelpers } from "formik"; import React, { useCallback, useContext } from "react"; import { useMutation, useQuery, useQueryClient, QueryClient, } from "react-query"; import { AcSectionActions } from "./ac-section-actions"; import * as academy from "./index"; import { execApiFn, RemoteRequestOption, IDeleteResponse, core, IResponse, ExecApi, mutationErrorsToFormik, IResponseList, } from "../../core/http-tools"; import { RemoteQueryContext } from "../../core/react-tools"; export function useDeleteAcSection({ execFnOverride, queryClient, }: { queryClient: QueryClient; execFnOverride?: any; }) { const { options, execFn } = useContext(RemoteQueryContext); const fnx = execFnOverride ? AcSectionActions.fnExec(execFnOverride(options)) : execFn ? AcSectionActions.fnExec(execFn(options)) : AcSectionActions.fn(options); const Q = () => fnx; const fn = (entity) => Q().deleteAcSection(entity); const mutation = useMutation< IDeleteResponse, IDeleteResponse, core.DeleteRequest >(fn); // Only entities are having a store in front-end const fnUpdater: any = () => {}; const submit = ( values: core.DeleteRequest, formikProps: FormikHelpers ): Promise> => { return new Promise((resolve, reject) => { mutation.mutate(values, { onSuccess(response: IResponse) { queryClient.setQueryData>( "*academy.AcSectionEntity", (data) => fnUpdater(data, response) ); resolve(response); }, onError(error: any) { formikProps.setErrors(mutationErrorsToFormik(error)); reject(error); }, }); }); }; return { mutation, submit, fnUpdater }; }