diff --git a/package.json b/package.json index c50678d1..b83a8526 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/services/walletService.ts b/src/services/walletService.ts index 40969a3f..5667813d 100644 --- a/src/services/walletService.ts +++ b/src/services/walletService.ts @@ -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)