wallet-core: support passing transactionId to confirmPay
This commit is contained in:
parent
d98f048fd6
commit
8b06874f42
@ -1751,14 +1751,19 @@ export const codecForPreparePayTemplateRequest =
|
|||||||
.build("PreparePayTemplate");
|
.build("PreparePayTemplate");
|
||||||
|
|
||||||
export interface ConfirmPayRequest {
|
export interface ConfirmPayRequest {
|
||||||
proposalId: string;
|
/**
|
||||||
|
* @deprecated use transactionId instead
|
||||||
|
*/
|
||||||
|
proposalId?: string;
|
||||||
|
transactionId?: string;
|
||||||
sessionId?: string;
|
sessionId?: string;
|
||||||
forcedCoinSel?: ForcedCoinSel;
|
forcedCoinSel?: ForcedCoinSel;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const codecForConfirmPayRequest = (): Codec<ConfirmPayRequest> =>
|
export const codecForConfirmPayRequest = (): Codec<ConfirmPayRequest> =>
|
||||||
buildCodecForObject<ConfirmPayRequest>()
|
buildCodecForObject<ConfirmPayRequest>()
|
||||||
.property("proposalId", codecForString())
|
.property("proposalId", codecOptional(codecForString()))
|
||||||
|
.property("transactionId", codecOptional(codecForString()))
|
||||||
.property("sessionId", codecOptional(codecForString()))
|
.property("sessionId", codecOptional(codecForString()))
|
||||||
.property("forcedCoinSel", codecForAny())
|
.property("forcedCoinSel", codecForAny())
|
||||||
.build("ConfirmPay");
|
.build("ConfirmPay");
|
||||||
|
@ -972,6 +972,10 @@ async function processPlanchetExchangeBatchRequest(
|
|||||||
responses.ev_sigs.push(r);
|
responses.ev_sigs.push(r);
|
||||||
responseCoinIdxs.push(requestCoinIdxs[i]);
|
responseCoinIdxs.push(requestCoinIdxs[i]);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
if (e instanceof TalerError) {
|
||||||
|
logger.warn(`withdrawing planchet failed: ${j2s(e.errorDetail)}`);
|
||||||
|
logger.warn(`planchet denom pub hash: ${batchReq.planchets[i].denom_pub_hash}`);
|
||||||
|
}
|
||||||
await storeCoinError(e, requestCoinIdxs[i]);
|
await storeCoinError(e, requestCoinIdxs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1260,7 +1260,20 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
|
|||||||
}
|
}
|
||||||
case WalletApiOperation.ConfirmPay: {
|
case WalletApiOperation.ConfirmPay: {
|
||||||
const req = codecForConfirmPayRequest().decode(payload);
|
const req = codecForConfirmPayRequest().decode(payload);
|
||||||
return await confirmPay(ws, req.proposalId, req.sessionId);
|
let proposalId;
|
||||||
|
if (req.proposalId) {
|
||||||
|
// legacy client support
|
||||||
|
proposalId = req.proposalId;
|
||||||
|
} else if (req.transactionId) {
|
||||||
|
const txIdParsed = parseTransactionIdentifier(req.transactionId);
|
||||||
|
if (txIdParsed?.tag != TransactionType.Payment) {
|
||||||
|
throw Error("payment transaction ID required");
|
||||||
|
}
|
||||||
|
proposalId = txIdParsed.proposalId;
|
||||||
|
} else {
|
||||||
|
throw Error("transactionId or (deprecated) proposalId required");
|
||||||
|
}
|
||||||
|
return await confirmPay(ws, proposalId, req.sessionId);
|
||||||
}
|
}
|
||||||
case WalletApiOperation.AbortTransaction: {
|
case WalletApiOperation.AbortTransaction: {
|
||||||
const req = codecForAbortTransaction().decode(payload);
|
const req = codecForAbortTransaction().decode(payload);
|
||||||
|
Loading…
Reference in New Issue
Block a user