diff options
| author | Florian Dold <florian@dold.me> | 2023-02-20 03:56:43 +0100 | 
|---|---|---|
| committer | Florian Dold <florian@dold.me> | 2023-02-20 03:56:43 +0100 | 
| commit | a6d78f12df0bf42838f424e889f376ca19bfd96c (patch) | |
| tree | f0c77a810ebe90e56eed3d6607cacc717f303b41 /packages/taler-wallet-core | |
| parent | bd9904f6a057a6722f5ede036879a118bf0520a0 (diff) | |
-deletion
Diffstat (limited to 'packages/taler-wallet-core')
| -rw-r--r-- | packages/taler-wallet-core/src/operations/common.ts | 2 | ||||
| -rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 69 | 
2 files changed, 66 insertions, 5 deletions
| diff --git a/packages/taler-wallet-core/src/operations/common.ts b/packages/taler-wallet-core/src/operations/common.ts index 2db5cd7b4..35e6455bc 100644 --- a/packages/taler-wallet-core/src/operations/common.ts +++ b/packages/taler-wallet-core/src/operations/common.ts @@ -338,6 +338,8 @@ export enum TombstoneTag {    DeleteRefund = "delete-refund",    DeletePeerPullDebit = "delete-peer-pull-debit",    DeletePeerPushDebit = "delete-peer-push-debit", +  DeletePeerPullCredit = "delete-peer-pull-credit", +  DeletePeerPushCredit = "delete-peer-push-credit",  }  /** diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index faac808b1..9ee1c1e74 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -1413,11 +1413,70 @@ export async function deleteTransaction(  ): Promise<void> {    const { type, args: rest } = parseId("txn", transactionId); -  if ( -    type === TransactionType.Withdrawal || -    type === TransactionType.PeerPullCredit || -    type === TransactionType.PeerPushCredit -  ) { +  if (type === TransactionType.PeerPushCredit) { +    const peerPushPaymentIncomingId = rest[0]; +    await ws.db +      .mktx((x) => [ +        x.withdrawalGroups, +        x.peerPushPaymentIncoming, +        x.tombstones, +      ]) +      .runReadWrite(async (tx) => { +        const pushInc = await tx.peerPushPaymentIncoming.get( +          peerPushPaymentIncomingId, +        ); +        if (!pushInc) { +          return; +        } +        if (pushInc.withdrawalGroupId) { +          const withdrawalGroupId = pushInc.withdrawalGroupId; +          const withdrawalGroupRecord = await tx.withdrawalGroups.get( +            withdrawalGroupId, +          ); +          if (withdrawalGroupRecord) { +            await tx.withdrawalGroups.delete(withdrawalGroupId); +            await tx.tombstones.put({ +              id: TombstoneTag.DeleteWithdrawalGroup + ":" + withdrawalGroupId, +            }); +          } +        } +        await tx.peerPushPaymentIncoming.delete(peerPushPaymentIncomingId); +        await tx.tombstones.put({ +          id: +            TombstoneTag.DeletePeerPushCredit + ":" + peerPushPaymentIncomingId, +        }); +      }); +  } else if (type === TransactionType.PeerPullCredit) { +    const pursePub = rest[0]; +    await ws.db +      .mktx((x) => [ +        x.withdrawalGroups, +        x.peerPullPaymentInitiations, +        x.tombstones, +      ]) +      .runReadWrite(async (tx) => { +        const pullIni = await tx.peerPullPaymentInitiations.get(pursePub); +        if (!pullIni) { +          return; +        } +        if (pullIni.withdrawalGroupId) { +          const withdrawalGroupId = pullIni.withdrawalGroupId; +          const withdrawalGroupRecord = await tx.withdrawalGroups.get( +            withdrawalGroupId, +          ); +          if (withdrawalGroupRecord) { +            await tx.withdrawalGroups.delete(withdrawalGroupId); +            await tx.tombstones.put({ +              id: TombstoneTag.DeleteWithdrawalGroup + ":" + withdrawalGroupId, +            }); +          } +        } +        await tx.peerPullPaymentInitiations.delete(pursePub); +        await tx.tombstones.put({ +          id: TombstoneTag.DeletePeerPullCredit + ":" + pursePub, +        }); +      }); +  } else if (type === TransactionType.Withdrawal) {      const withdrawalGroupId = rest[0];      await ws.db        .mktx((x) => [x.withdrawalGroups, x.tombstones]) | 
