import { useMutation } from "react-query"; import type { IServiceResponse } from "@/@types/types/strategy-service.types"; import { useHttp } from "@/hooks/useHttp"; import { useLocale } from "@/hooks/useLocale"; import { getServiceResponseFromStrategyResponse, setParametersToStrategyRunner, } from "@/libs/helpers/strategy-service.helper"; import { useServerDataCtx } from "@/providers/server-data-provider/server-data-provider"; import type { StrategyKeysTypes } from "@/services/app-api/apis/strategy.services"; export const useStrategyMutation = < TResponse = unknown, TVariables = unknown, >(params: { strategyKey: keyof StrategyKeysTypes; }) => { const { strategyKeys } = useServerDataCtx(); const http = useHttp("wl-display-api"); const { getCultureCode } = useLocale(); const service = (variables: TVariables) => http .post( `/api/v1/strategy/run?culture=${getCultureCode()}`, setParametersToStrategyRunner( variables, strategyKeys[params.strategyKey], ), ) .then( (res) => getServiceResponseFromStrategyResponse( res.data, ) as IServiceResponse, ); return useMutation({ mutationFn: service, }); };