import { StdFee } from '@cosmjs/stargate' import { useMutation, useQueryClient } from '@tanstack/react-query' import useStore from 'store' import { QUERY_KEYS } from 'types/enums/queryKeys' import { Action, Coin } from 'types/generated/mars-credit-manager/MarsCreditManager.types' interface Props { accountId: string actions: Action[] fee: StdFee funds: Coin[] } export const useUpdateAccount = () => { const queryClient = useQueryClient() const executeMsg = useStore((s) => s.executeMsg) const networkConfig = useStore((s) => s.networkConfig) const getVaults = useStore((s) => s.getVaults) const creditManagerAddress = networkConfig.contracts?.creditManager return useMutation(async (props: Props) => { queryClient.removeQueries([QUERY_KEYS.ESTIMATE_FARM_FEE]) const message = { update_credit_account: { account_id: props.accountId, actions: props.actions, }, } if (!creditManagerAddress) return return executeMsg({ msg: message, fee: props.fee, contract: creditManagerAddress, funds: props.funds, }).then((broadcastResult) => { if (broadcastResult?.response.code === 0) { getVaults({ refetch: true }) return { result: broadcastResult } } else { return { error: broadcastResult?.rawLogs } } }) }) }