wallet-core: allow confirmPeerPullDebit via txId
This commit is contained in:
parent
fca893038d
commit
eae3571607
@ -2409,7 +2409,7 @@ export const codecForCheckPeerPullPaymentRequest =
|
||||
export interface ConfirmPeerPushCreditRequest {
|
||||
/**
|
||||
* Transparent identifier of the incoming peer push payment.
|
||||
*
|
||||
*
|
||||
* @deprecated specify transactionId instead!
|
||||
*/
|
||||
peerPushPaymentIncomingId?: string;
|
||||
@ -2434,8 +2434,12 @@ export const codecForConfirmPeerPushPaymentRequest =
|
||||
export interface ConfirmPeerPullDebitRequest {
|
||||
/**
|
||||
* Transparent identifier of the incoming peer pull payment.
|
||||
*
|
||||
* @deprecated use transactionId instead
|
||||
*/
|
||||
peerPullPaymentIncomingId: string;
|
||||
peerPullPaymentIncomingId?: string;
|
||||
|
||||
transactionId?: string;
|
||||
}
|
||||
|
||||
export interface ApplyDevExperimentRequest {
|
||||
@ -2451,7 +2455,8 @@ export const codecForApplyDevExperiment =
|
||||
export const codecForAcceptPeerPullPaymentRequest =
|
||||
(): Codec<ConfirmPeerPullDebitRequest> =>
|
||||
buildCodecForObject<ConfirmPeerPullDebitRequest>()
|
||||
.property("peerPullPaymentIncomingId", codecForString())
|
||||
.property("peerPullPaymentIncomingId", codecOptional(codecForString()))
|
||||
.property("transactionId", codecOptional(codecForString()))
|
||||
.build("ConfirmPeerPullDebitRequest");
|
||||
|
||||
export interface CheckPeerPullCreditRequest {
|
||||
|
@ -78,6 +78,7 @@ import {
|
||||
import {
|
||||
constructTransactionIdentifier,
|
||||
notifyTransition,
|
||||
parseTransactionIdentifier,
|
||||
stopLongpolling,
|
||||
} from "./transactions.js";
|
||||
|
||||
@ -387,10 +388,25 @@ export async function confirmPeerPullDebit(
|
||||
ws: InternalWalletState,
|
||||
req: ConfirmPeerPullDebitRequest,
|
||||
): Promise<AcceptPeerPullPaymentResponse> {
|
||||
|
||||
let peerPullPaymentIncomingId: string;
|
||||
|
||||
if (req.transactionId) {
|
||||
const parsedTx = parseTransactionIdentifier(req.transactionId);
|
||||
if (!parsedTx || parsedTx.tag !== TransactionType.PeerPullDebit) {
|
||||
throw Error("invalid peer-pull-debit transaction identifier");
|
||||
}
|
||||
peerPullPaymentIncomingId = parsedTx.peerPullPaymentIncomingId;
|
||||
} else if (req.peerPullPaymentIncomingId) {
|
||||
peerPullPaymentIncomingId = req.peerPullPaymentIncomingId;
|
||||
} else {
|
||||
throw Error("invalid request, transactionId or peerPullPaymentIncomingId required");
|
||||
}
|
||||
|
||||
const peerPullInc = await ws.db
|
||||
.mktx((x) => [x.peerPullPaymentIncoming])
|
||||
.runReadOnly(async (tx) => {
|
||||
return tx.peerPullPaymentIncoming.get(req.peerPullPaymentIncomingId);
|
||||
return tx.peerPullPaymentIncoming.get(peerPullPaymentIncomingId);
|
||||
});
|
||||
|
||||
if (!peerPullInc) {
|
||||
@ -436,7 +452,7 @@ export async function confirmPeerPullDebit(
|
||||
// allocationId: `txn:peer-pull-debit:${req.peerPullPaymentIncomingId}`,
|
||||
allocationId: constructTransactionIdentifier({
|
||||
tag: TransactionType.PeerPullDebit,
|
||||
peerPullPaymentIncomingId: req.peerPullPaymentIncomingId,
|
||||
peerPullPaymentIncomingId,
|
||||
}),
|
||||
coinPubs: sel.coins.map((x) => x.coinPub),
|
||||
contributions: sel.coins.map((x) =>
|
||||
@ -446,7 +462,7 @@ export async function confirmPeerPullDebit(
|
||||
});
|
||||
|
||||
const pi = await tx.peerPullPaymentIncoming.get(
|
||||
req.peerPullPaymentIncomingId,
|
||||
peerPullPaymentIncomingId,
|
||||
);
|
||||
if (!pi) {
|
||||
throw Error();
|
||||
@ -473,7 +489,7 @@ export async function confirmPeerPullDebit(
|
||||
|
||||
const transactionId = constructTransactionIdentifier({
|
||||
tag: TransactionType.PeerPullDebit,
|
||||
peerPullPaymentIncomingId: req.peerPullPaymentIncomingId,
|
||||
peerPullPaymentIncomingId,
|
||||
});
|
||||
|
||||
return {
|
||||
|
Loading…
Reference in New Issue
Block a user