mirror of
https://github.com/minibits-cash/minibits_wallet.git
synced 2026-10-05 19:28:26 +00:00
Fix: Locked values of recovery indexes not updated when receive transaction throws an exception
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "minibits_wallet",
|
||||
"version": "0.1.9-beta.37",
|
||||
"version": "0.1.9-beta.38",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"android:clean": "cd android && ./gradlew clean",
|
||||
|
||||
@@ -243,7 +243,8 @@ export const nwcTransferTask = async function (
|
||||
}
|
||||
|
||||
// spend pending proofsToMeltFrom reserved for transaction
|
||||
// only after receive passed, in case of exception they remain pending
|
||||
// only after rhe receive passed, in case of exception they remain pending
|
||||
// and are sorted out by syncStateWithMintSync method
|
||||
proofsStore.removeProofs(proofsToMeltFrom as Proof[], true, false)
|
||||
|
||||
// Save final fee in db
|
||||
|
||||
@@ -480,16 +480,23 @@ export const receiveSync = async function (
|
||||
if(e.message.includes('outputs have already been signed before')) {
|
||||
|
||||
log.error('[receiveSync] Increasing proofsCounter outdated values and repeating receiveSync.')
|
||||
lockedProofsCounter.resetInFlight(transactionId)
|
||||
lockedProofsCounter.increaseProofsCounter(10)
|
||||
lockedProofsCounter = await WalletUtils.lockAndSetInFlight(
|
||||
mintInstance,
|
||||
unit,
|
||||
countOfInFlightProofs,
|
||||
transactionId
|
||||
)
|
||||
|
||||
lockedProofsCounter.increaseProofsCounter(10)
|
||||
receivedResult = await walletStore.receive(
|
||||
mintToReceive,
|
||||
unit as MintUnit,
|
||||
token,
|
||||
swapFeeReserve,
|
||||
{
|
||||
preference: amountPreferences,
|
||||
counter: lockedProofsCounter.inFlightFrom as number // MUST be counter value before increase
|
||||
preference: amountPreferences,
|
||||
counter: lockedProofsCounter.inFlightFrom as number
|
||||
}
|
||||
)
|
||||
} else {
|
||||
|
||||
@@ -650,7 +650,9 @@ const _syncStateWithMintTask = async function (
|
||||
isPending
|
||||
})
|
||||
|
||||
if (unspentByMintProofs.length > 0) {
|
||||
// If some of the pending by wallet proofs neither pending nor spent by mint
|
||||
// can happen in nwcTransfer if lightning payment succeeds but then receive of returned token fails
|
||||
if (unspentByMintProofs.length > 0 && isPending) {
|
||||
// remove it from pending proofs in the wallet
|
||||
proofsStore.removeProofs(unspentByMintProofs as Proof[], true, true)
|
||||
// add proofs back to the spendable wallet
|
||||
|
||||
Reference in New Issue
Block a user