diff options
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/taler-wallet-core/src/operations/common.ts | 15 | ||||
| -rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 17 | 
2 files changed, 14 insertions, 18 deletions
| diff --git a/packages/taler-wallet-core/src/operations/common.ts b/packages/taler-wallet-core/src/operations/common.ts index 2bed195a1..59d2b8ec3 100644 --- a/packages/taler-wallet-core/src/operations/common.ts +++ b/packages/taler-wallet-core/src/operations/common.ts @@ -306,23 +306,26 @@ export function makeTransactionId(    return `txn:${type}:${args.map((x) => encodeURIComponent(x)).join(":")}`;  } -export function parseTransactionId(txId: string): { +export function parseId( +  idType: "txn" | "tmb" | "any", +  txId: string, +): {    type: TransactionType;    args: string[];  } {    const txnParts = txId.split(":");    if (txnParts.length < 3) { -    throw Error("transactionId should have al least 3 parts separated by ':'"); +    throw Error("id should have al least 3 parts separated by ':'");    } -  const [txn, typeStr, ...args] = txnParts; +  const [prefix, typeStr, ...args] = txnParts;    const type = typeStr as TransactionType; -  if (txn !== "txn") { -    throw Error("transactionId should start with txn"); +  if (idType != "any" && prefix !== idType) { +    throw Error(`id should start with ${idType}`);    }    if (args.length === 0) { -    throw Error("transactionId should have one or more arguments"); +    throw Error("id should have one or more arguments");    }    return { type, args }; diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 5c903a649..6e8ebc4f4 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -56,7 +56,7 @@ import { RetryTags } from "../util/retries.js";  import {    makeTombstoneId,    makeTransactionId, -  parseTransactionId, +  parseId,    TombstoneTag,  } from "./common.js";  import { processDepositGroup } from "./deposits.js"; @@ -122,7 +122,7 @@ export async function getTransactionById(    ws: InternalWalletState,    req: TransactionByIdRequest,  ): Promise<Transaction> { -  const { type, args: rest } = parseTransactionId(req.transactionId); +  const { type, args: rest } = parseId("txn", req.transactionId);    if (      type === TransactionType.Withdrawal ||      type === TransactionType.PeerPullCredit || @@ -959,11 +959,7 @@ export async function retryTransaction(  ): Promise<void> {    logger.info(`retrying transaction ${transactionId}`); -  const [tmbPrefix, type, ...rest] = transactionId.split(":"); - -  if (tmbPrefix !== "tmb") { -    throw Error("invalid tombstone, expected 'tmb' prefix"); -  } +  const { type, args: rest } = parseId("any", transactionId);    switch (type) {      case TransactionType.Deposit: { @@ -1005,11 +1001,8 @@ export async function deleteTransaction(    ws: InternalWalletState,    transactionId: string,  ): Promise<void> { -  const [txnPrefix, typeStr, ...rest] = transactionId.split(":"); -  if (txnPrefix !== "txn") { -    throw Error("invalid transaction ID, expected 'txn' prefix"); -  } -  const type = typeStr as TransactionType; +  const { type, args: rest } = parseId("txn", transactionId); +    if (      type === TransactionType.Withdrawal ||      type === TransactionType.PeerPullCredit || | 
