cancelled failed payment if not showing qr

This commit is contained in:
k00b 2024-08-26 13:58:37 -05:00
parent 5ae3084e53
commit 5cfefc1ca8
1 changed files with 5 additions and 2 deletions

View File

@ -1,6 +1,6 @@
import { useApolloClient, useLazyQuery, useMutation } from '@apollo/client' import { useApolloClient, useLazyQuery, useMutation } from '@apollo/client'
import { useCallback, useState } from 'react' import { useCallback, useState } from 'react'
import { InvoiceCanceledError, InvoiceExpiredError, useQrPayment, useWalletPayment } from './payment' import { InvoiceCanceledError, InvoiceExpiredError, useInvoice, useQrPayment, useWalletPayment } from './payment'
import { GET_PAID_ACTION } from '@/fragments/paidAction' import { GET_PAID_ACTION } from '@/fragments/paidAction'
/* /*
@ -23,6 +23,7 @@ export function usePaidMutation (mutation,
fetchPolicy: 'network-only' fetchPolicy: 'network-only'
}) })
const waitForWalletPayment = useWalletPayment() const waitForWalletPayment = useWalletPayment()
const invoiceHelper = useInvoice()
const waitForQrPayment = useQrPayment() const waitForQrPayment = useQrPayment()
const client = useApolloClient() const client = useApolloClient()
// innerResult is used to store/control the result of the mutation when innerMutate runs // innerResult is used to store/control the result of the mutation when innerMutate runs
@ -40,12 +41,14 @@ export function usePaidMutation (mutation,
err instanceof InvoiceExpiredError) { err instanceof InvoiceExpiredError) {
// bail since qr code payment will also fail // bail since qr code payment will also fail
// also bail if the payment took more than 1 second // also bail if the payment took more than 1 second
// and cancel the invoice if it's not already canceled so it can be retried
invoiceHelper.cancel(invoice).catch(console.error)
throw err throw err
} }
walletError = err walletError = err
} }
return await waitForQrPayment(invoice, walletError, { persistOnNavigate, waitFor }) return await waitForQrPayment(invoice, walletError, { persistOnNavigate, waitFor })
}, [waitForWalletPayment, waitForQrPayment]) }, [waitForWalletPayment, waitForQrPayment, invoiceHelper])
const innerMutate = useCallback(async ({ const innerMutate = useCallback(async ({
onCompleted: innerOnCompleted, ...innerOptions onCompleted: innerOnCompleted, ...innerOptions