mars-v2-frontend/src/hooks/mutations/useWithdrawFunds.tsx
Linkie Link 493ec7c44c
fix: reanabled fundAccount and created base for toasts (#103)
* fix: reanabled fundAccount and created base for toasts

* Update toaster + add router refresh

---------

Co-authored-by: bwvdhelm <34470358+bobthebuidlr@users.noreply.github.com>
2023-02-28 09:20:53 +01:00

69 lines
1.8 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query'
import { useMemo } from 'react'
import useStore from 'store'
import { queryKeys } from 'types/query-keys-factory'
import { hardcodedFee } from 'utils/contants'
export const useWithdrawFunds = (
amount: number,
borrowAmount: number,
denom: string,
options?: {
onSuccess?: () => void
},
) => {
const selectedAccount = useStore((s) => s.selectedAccount ?? '')
const address = useStore((s) => s.address)
const creditManagerClient = useStore((s) => s.clients.creditManager)
const queryClient = useQueryClient()
const actions = useMemo(() => {
if (borrowAmount > 0) {
return [
{
borrow: {
denom,
amount: String(borrowAmount),
},
},
{
withdraw: {
denom,
amount: String(amount),
},
},
]
}
return [
{
withdraw: {
denom,
amount: String(amount),
},
},
]
}, [amount, borrowAmount, denom])
const { onSuccess } = { ...options }
return useMutation(
async () =>
creditManagerClient?.updateCreditAccount(
{ accountId: selectedAccount, actions },
hardcodedFee,
),
{
onSuccess: () => {
queryClient.invalidateQueries(queryKeys.creditAccountsPositions(selectedAccount))
queryClient.invalidateQueries(queryKeys.tokenBalance(address ?? '', denom))
queryClient.invalidateQueries(queryKeys.allBalances(address ?? ''))
queryClient.invalidateQueries(queryKeys.redbankBalances())
onSuccess && onSuccess()
},
onError: (err: Error) => {
useStore.setState({
toast: { message: err.message, isError: true },
})
},
},
)
}