Fix: Improve stability of wallet topup transaction

This commit is contained in:
minibits-cash
2024-11-27 12:06:55 +01:00
parent dfe96474ab
commit f01a5d6cf4
2 changed files with 39 additions and 11 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "minibits_wallet",
"version": "0.1.9-beta.38",
"version": "0.1.9-beta.39",
"private": true,
"scripts": {
"android:clean": "cd android && ./gradlew clean",
+38 -10
View File
@@ -1282,17 +1282,45 @@ const _handlePendingTopupTask = async function (params: {paymentRequest: Payment
)
let proofs: ProofV3[] = []
proofs = (await walletStore.mintProofs(
mintUrl as string,
amount,
unit,
mintQuote,
{
preference: amountPreferences,
counter: lockedProofsCounter.inFlightFrom as number
try {
proofs = (await walletStore.mintProofs(
mintUrl as string,
amount,
unit,
mintQuote,
{
preference: amountPreferences,
counter: lockedProofsCounter.inFlightFrom as number
}
)) as ProofV3[]
} catch (e: any) {
if(e.message.includes('outputs have already been signed before')) {
log.error('[_handlePendingTopupTask] Increasing proofsCounter outdated values and repeating mintProofs.')
lockedProofsCounter.resetInFlight(transactionId)
lockedProofsCounter.increaseProofsCounter(10)
lockedProofsCounter = await WalletUtils.lockAndSetInFlight(
mintInstance,
unit,
countOfInFlightProofs,
transactionId
)
proofs = (await walletStore.mintProofs(
mintUrl as string,
amount,
unit,
mintQuote,
{
preference: amountPreferences,
counter: lockedProofsCounter.inFlightFrom as number
}
)) as ProofV3[]
} else {
throw e
}
)) as ProofV3[]
}
lockedProofsCounter.decreaseProofsCounter(countOfInFlightProofs)