mars-interface/src/hooks/mutations/useUpdateAccount.tsx
Linkie Link 66b8550568
v1.5.0
2023-06-19 09:20:21 +02:00

47 lines
1.3 KiB
TypeScript

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 }
}
})
})
}