wallet-core: fix recoup issue
This commit is contained in:
parent
aab3f917c4
commit
87bc4a6fcd
@ -281,7 +281,8 @@ async function recoupRefreshCoin(
|
||||
revokedCoin.status = CoinStatus.Dormant;
|
||||
recoupGroup.scheduleRefreshCoins.push({
|
||||
coinPub: oldCoin.coinPub,
|
||||
amount: Amounts.sub(oldCoinDenom.value, revokedCoinDenom.value).amount,
|
||||
//amount: Amounts.sub(oldCoinDenom.value, revokedCoinDenom.value).amount,
|
||||
amount: revokedCoinDenom.value,
|
||||
});
|
||||
await tx.coins.put(revokedCoin);
|
||||
await tx.coins.put(oldCoin);
|
||||
|
@ -426,6 +426,16 @@ async function refreshMelt(
|
||||
return;
|
||||
}
|
||||
|
||||
if (resp.status === HttpStatusCode.Conflict) {
|
||||
// Just log for better diagnostics here, error status
|
||||
// will be handled later.
|
||||
logger.error(
|
||||
`melt request for ${Amounts.stringify(
|
||||
derived.meltValueWithFee,
|
||||
)} failed in refresh group ${refreshGroupId} due to conflict`,
|
||||
);
|
||||
}
|
||||
|
||||
const meltResponse = await readSuccessResponseJsonOrThrow(
|
||||
resp,
|
||||
codecForExchangeMeltResponse(),
|
||||
|
@ -51,6 +51,7 @@ import {
|
||||
WalletContractData,
|
||||
} from "../db.js";
|
||||
import { InternalWalletState } from "../internal-wallet-state.js";
|
||||
import { assertUnreachable } from "../util/assertUnreachable.js";
|
||||
import { checkDbInvariant } from "../util/invariants.js";
|
||||
import { RetryTags } from "../util/retries.js";
|
||||
import {
|
||||
@ -803,33 +804,36 @@ export async function getTransactions(
|
||||
const opId = RetryTags.forWithdrawal(wsr);
|
||||
const ort = await tx.operationRetries.get(opId);
|
||||
|
||||
if (wsr.wgInfo.withdrawalType === WithdrawalRecordType.PeerPullCredit) {
|
||||
transactions.push(buildTransactionForPullPaymentCredit(wsr, ort));
|
||||
return;
|
||||
} else if (
|
||||
wsr.wgInfo.withdrawalType === WithdrawalRecordType.PeerPushCredit
|
||||
) {
|
||||
transactions.push(buildTransactionForPushPaymentCredit(wsr, ort));
|
||||
return;
|
||||
} else if (
|
||||
wsr.wgInfo.withdrawalType === WithdrawalRecordType.BankIntegrated
|
||||
) {
|
||||
transactions.push(
|
||||
buildTransactionForBankIntegratedWithdraw(wsr, ort),
|
||||
);
|
||||
} else {
|
||||
const exchangeDetails = await getExchangeDetails(
|
||||
tx,
|
||||
wsr.exchangeBaseUrl,
|
||||
);
|
||||
if (!exchangeDetails) {
|
||||
// FIXME: report somehow
|
||||
switch (wsr.wgInfo.withdrawalType) {
|
||||
case WithdrawalRecordType.PeerPullCredit:
|
||||
transactions.push(buildTransactionForPullPaymentCredit(wsr, ort));
|
||||
return;
|
||||
case WithdrawalRecordType.PeerPushCredit:
|
||||
transactions.push(buildTransactionForPushPaymentCredit(wsr, ort));
|
||||
return;
|
||||
case WithdrawalRecordType.BankIntegrated:
|
||||
transactions.push(
|
||||
buildTransactionForBankIntegratedWithdraw(wsr, ort),
|
||||
);
|
||||
return;
|
||||
case WithdrawalRecordType.BankManual: {
|
||||
const exchangeDetails = await getExchangeDetails(
|
||||
tx,
|
||||
wsr.exchangeBaseUrl,
|
||||
);
|
||||
if (!exchangeDetails) {
|
||||
// FIXME: report somehow
|
||||
return;
|
||||
}
|
||||
|
||||
transactions.push(
|
||||
buildTransactionForManualWithdraw(wsr, exchangeDetails, ort),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
transactions.push(
|
||||
buildTransactionForManualWithdraw(wsr, exchangeDetails, ort),
|
||||
);
|
||||
case WithdrawalRecordType.Recoup:
|
||||
// FIXME: Do we also report a transaction here?
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -183,7 +183,7 @@ export namespace RetryTags {
|
||||
return `${PendingTaskType.TipPickup}:${tipRecord.walletTipId}`;
|
||||
}
|
||||
export function forRefresh(refreshGroupRecord: RefreshGroupRecord): string {
|
||||
return `${PendingTaskType.TipPickup}:${refreshGroupRecord.refreshGroupId}`;
|
||||
return `${PendingTaskType.Refresh}:${refreshGroupRecord.refreshGroupId}`;
|
||||
}
|
||||
export function forPay(purchaseRecord: PurchaseRecord): string {
|
||||
return `${PendingTaskType.Purchase}:${purchaseRecord.proposalId}`;
|
||||
|
Loading…
Reference in New Issue
Block a user