Skip to content
This repository was archived by the owner on Feb 9, 2026. It is now read-only.

Commit b4a9ba4

Browse files
authored
Merge pull request #130 from bennyhodl/store-transactions
feat: Add payments claimed to storage
2 parents c231592 + e5bfee4 commit b4a9ba4

3 files changed

Lines changed: 52 additions & 1 deletion

File tree

example/App.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,15 @@ const App = (): ReactElement => {
410410
}}
411411
/>
412412

413+
<Button
414+
title={'Get claimed payments'}
415+
onPress={async (): Promise<void> => {
416+
setMessage('Getting all LDK payments...');
417+
const res = await lm.getLdkPaymentsClaimed();
418+
setMessage(JSON.stringify(res));
419+
}}
420+
/>
421+
413422
<Button
414423
title={'Create invoice'}
415424
onPress={async (): Promise<void> => {

lib/src/lightning-manager.ts

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,7 @@ class LightningManager {
891891
broadcasted_transactions: await this.getLdkBroadcastedTxs(),
892892
payment_ids: await this.getLdkPaymentIds(),
893893
spendable_outputs: await this.getLdkSpendableOutputs(),
894+
payments_claimed: await this.getLdkPaymentsClaimed(),
894895
timestamp: Date.now(),
895896
},
896897
package_version: require('../package.json').version,
@@ -1133,6 +1134,40 @@ class LightningManager {
11331134
});
11341135
};
11351136

1137+
/**
1138+
* Adds payment claimed to storage.
1139+
* @param payment {@link TChannelManagerClaim}
1140+
* @returns void
1141+
*/
1142+
private appendLdkPaymentsClaimed = async (
1143+
payment: TChannelManagerClaim,
1144+
): Promise<void> => {
1145+
let paymentsClaimed = await this.getLdkPaymentsClaimed();
1146+
if (paymentsClaimed.includes(payment)) {
1147+
return;
1148+
}
1149+
1150+
paymentsClaimed.push(payment);
1151+
await ldk.writeToFile({
1152+
fileName: ELdkFiles.payments_claimed,
1153+
content: JSON.stringify(paymentsClaimed),
1154+
});
1155+
};
1156+
1157+
/**
1158+
* Returns the payments claimed in storage.
1159+
* @returns {@link TChannelManagerClaim[]}
1160+
*/
1161+
getLdkPaymentsClaimed = async (): Promise<TChannelManagerClaim[]> => {
1162+
const res = await ldk.readFromFile({
1163+
fileName: ELdkFiles.payments_claimed,
1164+
});
1165+
if (res.isOk()) {
1166+
return parseData(res.value.content, DefaultLdkDataShape.payments_claimed);
1167+
}
1168+
return DefaultLdkDataShape.payments_claimed;
1169+
};
1170+
11361171
/**
11371172
* Returns previously confirmed outputs from storage.
11381173
* @returns {Promise<TLdkConfirmedOutputs>}
@@ -1564,8 +1599,11 @@ class LightningManager {
15641599
console.log(`onChannelManagerDiscardFunding: ${JSON.stringify(res)}`); //TODO
15651600
}
15661601

1567-
private onChannelManagerPaymentClaimed(res: TChannelManagerClaim): void {
1602+
private async onChannelManagerPaymentClaimed(
1603+
res: TChannelManagerClaim,
1604+
): Promise<void> {
15681605
// Payment Received/Invoice Paid.
1606+
await this.appendLdkPaymentsClaimed(res);
15691607
console.log(`onChannelManagerPaymentClaimed: ${JSON.stringify(res)}`);
15701608
this.syncLdk().then();
15711609
}

lib/src/utils/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ export enum ELdkFiles {
429429
broadcasted_transactions = 'broadcasted_transactions.json',
430430
payment_ids = 'payment_ids.json',
431431
spendable_outputs = 'spendable_outputs.json',
432+
payments_claimed = 'payments_claimed.json', // JSON file saved from JS
432433
}
433434

434435
export enum ELdkData {
@@ -441,6 +442,7 @@ export enum ELdkData {
441442
payment_ids = 'payment_ids',
442443
timestamp = 'timestamp',
443444
spendable_outputs = 'spendable_outputs',
445+
payments_claimed = 'payments_claimed',
444446
}
445447

446448
export type TLdkData = {
@@ -453,6 +455,7 @@ export type TLdkData = {
453455
[ELdkData.payment_ids]: TLdkPaymentIds;
454456
[ELdkData.timestamp]: number;
455457
[ELdkData.spendable_outputs]: TLdkSpendableOutputs;
458+
[ELdkData.payments_claimed]: TChannelManagerClaim[];
456459
};
457460

458461
export type TAccountBackup = {
@@ -484,6 +487,7 @@ export const DefaultLdkDataShape: TLdkData = {
484487
[ELdkData.payment_ids]: [],
485488
[ELdkData.timestamp]: 0,
486489
[ELdkData.spendable_outputs]: [],
490+
[ELdkData.payments_claimed]: [],
487491
};
488492

489493
export type TAvailableNetworks =

0 commit comments

Comments
 (0)