Skip to content

Commit 0f13bcd

Browse files
committed
Koltin processPendingHtlcForwards and claimFunds
Code cleanup
1 parent 8dbb3ce commit 0f13bcd

File tree

5 files changed

+65
-42
lines changed

5 files changed

+65
-42
lines changed

android/libs/LDK-release.jar

-523 KB
Binary file not shown.

android/src/main/java/com/reactnativeldk/Helpers.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ val Invoice.asJson: WritableMap
4444
result.putInt("duration_since_epoch", duration_since_epoch().toInt())
4545
result.putInt("expiry_time", expiry_time().toInt())
4646
result.putInt("min_final_cltv_expiry", min_final_cltv_expiry().toInt())
47-
result.putString("payee_pub_key", rawInvoice.payee_pub_key()?._a?.hexEncodedString())
48-
result.putString("recover_payee_pub_key", recover_payee_pub_key().hexEncodedString())
49-
result.putString("payment_hash", payment_hash().hexEncodedString())
50-
result.putString("payment_secret", payment_secret().hexEncodedString())
47+
result.putHexString("payee_pub_key", rawInvoice.payee_pub_key()?._a)
48+
result.putHexString("recover_payee_pub_key", recover_payee_pub_key())
49+
result.putHexString("payment_hash", payment_hash())
50+
result.putHexString("payment_secret", payment_secret())
5151
result.putInt("timestamp", timestamp().toInt())
52-
result.putString("features", features()?.write()?.hexEncodedString())
52+
result.putHexString("features", features()?.write())
5353
result.putInt("currency", currency().ordinal)
5454
result.putString("to_str", signedInv.to_str())
5555

@@ -60,14 +60,14 @@ val ChannelDetails.asJson: WritableMap
6060
get() {
6161
val result = Arguments.createMap()
6262

63-
result.putString("channel_id", _channel_id.hexEncodedString())
63+
result.putHexString("channel_id", _channel_id)
6464
result.putBoolean("is_public", _is_public)
6565
result.putBoolean("is_usable", _is_usable)
6666
result.putBoolean("is_outbound", _is_outbound)
6767
result.putInt("balance_msat", _balance_msat.toInt())
68-
result.putString("counterparty", _counterparty.write().hexEncodedString())
69-
result.putString("funding_txo", if (_funding_txo != null) _funding_txo!!.write().hexEncodedString() else null)
70-
result.putString("channel_type", if (_channel_type != null) _channel_type!!.write().hexEncodedString() else null)
68+
result.putHexString("counterparty", _counterparty.write())
69+
result.putHexString("funding_txo", _funding_txo?.write())
70+
result.putHexString("channel_type", _channel_type?.write())
7171
result.putInt("user_channel_id", _user_channel_id.toInt())
7272
result.putInt("get_confirmations_required", (_confirmations_required as Option_u32Z.Some).some)
7373
(_short_channel_id as? Option_u64Z.Some)?.some?.toInt()

android/src/main/java/com/reactnativeldk/LdkModule.kt

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ enum class LdkErrors {
6666
invoice_payment_fail_partial,
6767
invoice_payment_fail_path_parameter_error,
6868
init_ldk_currency,
69-
invoice_create_failed
69+
invoice_create_failed,
70+
claim_funds_failed
7071
}
7172

7273
enum class LdkCallbackResponses {
@@ -83,7 +84,9 @@ enum class LdkCallbackResponses {
8384
chain_sync_success,
8485
invoice_payment_success,
8586
tx_set_confirmed,
86-
tx_set_unconfirmed
87+
tx_set_unconfirmed,
88+
process_pending_htlc_forwards_success,
89+
claim_funds_success
8790
}
8891

8992
class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
@@ -109,7 +112,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
109112
private var keysManager: KeysManager? = null
110113
private var channelManager: ChannelManager? = null
111114
private var userConfig: UserConfig? = null
112-
private var channelMonitors: Array<ByteArray>? = null //TODO don't keep this, just add it from initChannelManager
115+
private var channelMonitors: MutableList<ByteArray> = arrayListOf() //TODO don't keep this, just add it from initChannelManager
113116
private var networkGraph: NetworkGraph? = null
114117
private var peerManager: PeerManager? = null
115118
private var peerHandler: NioPeerHandler? = null
@@ -157,7 +160,11 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
157160

158161
@ReactMethod
159162
fun loadChannelMonitors(channelMonitorStrings: ReadableArray, promise: Promise) {
163+
channelMonitorStrings.toArrayList().iterator().forEach { hex ->
164+
channelMonitors.add((hex as String).hexa())
165+
}
160166
//TODO remove this in favour of passing channel monitors through in initChannelManager
167+
LdkEventEmitter.send(EventTypes.swift_log, "Loaded channel monitors: ${channelMonitors.size}")
161168
handleResolve(promise, LdkCallbackResponses.load_channel_monitors_success)
162169
}
163170

@@ -204,7 +211,6 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
204211
chainMonitor ?: return handleReject(promise, LdkErrors.init_chain_monitor)
205212
keysManager ?: return handleReject(promise, LdkErrors.init_keys_manager)
206213
userConfig ?: return handleReject(promise, LdkErrors.init_user_config)
207-
// channelMonitors ?: return handleReject(promise, LdkErrors.load_channel_monitors) //TODO remove when passed into this function
208214
networkGraph ?: return handleReject(promise, LdkErrors.init_network_graph)
209215

210216
when (network) {
@@ -226,7 +232,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
226232
}
227233

228234
try {
229-
if (channelMonitors == null || channelMonitors!!.isEmpty()) {
235+
if (channelMonitors.isEmpty()) {
230236
channelManagerConstructor = ChannelManagerConstructor(
231237
ldkNetwork,
232238
userConfig,
@@ -243,7 +249,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
243249
println("Untested node restore")
244250
channelManagerConstructor = ChannelManagerConstructor(
245251
serializedChannelManager.hexa(),
246-
channelMonitors,
252+
channelMonitors.toTypedArray(),
247253
userConfig,
248254
keysManager!!.as_KeysInterface(),
249255
feeEstimator.feeEstimator,
@@ -432,6 +438,27 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
432438
return handleReject(promise, LdkErrors.invoice_create_failed, Error(error.toString()))
433439
}
434440

441+
@ReactMethod
442+
fun processPendingHtlcForwards(promise: Promise) {
443+
channelManager ?: return handleReject(promise, LdkErrors.init_channel_manager)
444+
445+
channelManager!!.process_pending_htlc_forwards()
446+
447+
return handleResolve(promise, LdkCallbackResponses.process_pending_htlc_forwards_success)
448+
}
449+
450+
@ReactMethod
451+
fun claimFunds(paymentPreimage: String, promise: Promise) {
452+
channelManager ?: return handleReject(promise, LdkErrors.init_channel_manager)
453+
454+
val res = channelManager!!.claim_funds(paymentPreimage.hexa())
455+
if (!res) {
456+
return handleReject(promise, LdkErrors.claim_funds_failed)
457+
}
458+
459+
return handleResolve(promise, LdkCallbackResponses.claim_funds_success)
460+
}
461+
435462
//MARK: Fetch methods
436463

437464
@ReactMethod

example/App.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,6 @@ const App = () => {
153153
return setMessage(res.error.message);
154154
}
155155

156-
console.log(JSON.stringify(res.value));
157-
158156
const { recover_payee_pub_key, amount_milli_satoshis } =
159157
res.value;
160158

ios/Ldk.swift

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class Ldk: NSObject {
117117
persister: persister
118118
)
119119

120-
handleResolve(resolve, .chain_monitor_init_success)
120+
return handleResolve(resolve, .chain_monitor_init_success)
121121
}
122122

123123
@objc
@@ -136,7 +136,7 @@ class Ldk: NSObject {
136136

137137
keysManager = KeysManager(seed: String(seed).hexaBytes, starting_time_secs: seconds, starting_time_nanos: nanoSeconds)
138138

139-
handleResolve(resolve, .keys_manager_init_success)
139+
return handleResolve(resolve, .keys_manager_init_success)
140140
}
141141

142142
@objc
@@ -147,7 +147,7 @@ class Ldk: NSObject {
147147
}
148148

149149
LdkEventEmitter.shared.send(withEvent: .swift_log, body: "Loaded channel monitors: \(channelMonitors!.count)")
150-
handleResolve(resolve, .load_channel_monitors_success)
150+
return handleResolve(resolve, .load_channel_monitors_success)
151151
}
152152

153153
@objc
@@ -171,14 +171,14 @@ class Ldk: NSObject {
171171
channelHandshakeLimits.set_force_announced_channel_preference(val: announcedChannels)
172172
userConfig!.set_peer_channel_config_limits(val: channelHandshakeLimits)
173173

174-
handleResolve(resolve, .config_init_success)
174+
return handleResolve(resolve, .config_init_success)
175175
}
176176

177177
@objc
178178
func initNetworkGraph(_ genesisHash: NSString, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
179179
networkGraph = NetworkGraph(genesis_hash: String(genesisHash).hexaBytes)
180180
//TODO load cached version if exists instead. NetworkGraph.read(ser: serialized_backup)
181-
handleResolve(resolve, .network_graph_init_success)
181+
return handleResolve(resolve, .network_graph_init_success)
182182
}
183183

184184
@objc
@@ -265,7 +265,7 @@ class Ldk: NSObject {
265265
peerHandler = channelManagerConstructor!.getTCPPeerHandler()
266266
invoicePayer = channelManagerConstructor!.payer
267267

268-
handleResolve(resolve, .channel_manager_init_success)
268+
return handleResolve(resolve, .channel_manager_init_success)
269269
}
270270

271271
@objc
@@ -277,21 +277,21 @@ class Ldk: NSObject {
277277
//TODO figure out how to read channel monitors and pass to chain monitor
278278
//chainMonitor.as_Watch().watch_channel(funding_txo: T##OutPoint, monitor: channelMonitors)
279279

280-
handleResolve(resolve, .chain_monitor_updated)
280+
return handleResolve(resolve, .chain_monitor_updated)
281281
}
282282

283283
//MARK: Update methods
284284

285285
@objc
286286
func updateFees(_ high: NSInteger, normal: NSInteger, low: NSInteger, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
287287
feeEstimator.update(high: UInt32(high), normal: UInt32(normal), low: UInt32(low))
288-
handleResolve(resolve, .fees_updated)
288+
return handleResolve(resolve, .fees_updated)
289289
}
290290

291291
@objc
292292
func setLogLevel(_ level: NSInteger, active: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
293293
logger.setLevel(level: UInt32(level), active: active)
294-
handleResolve(resolve, .log_level_updated)
294+
return handleResolve(resolve, .log_level_updated)
295295
}
296296

297297
@objc
@@ -308,7 +308,7 @@ class Ldk: NSObject {
308308
channelManager.as_Confirm().best_block_updated(header: String(header).hexaBytes, height: UInt32(height))
309309
chainMonitor.as_Confirm().best_block_updated(header: String(header).hexaBytes, height: UInt32(height))
310310

311-
handleResolve(resolve, .chain_sync_success)
311+
return handleResolve(resolve, .chain_sync_success)
312312
}
313313

314314
@objc
@@ -325,7 +325,7 @@ class Ldk: NSObject {
325325
return handleReject(reject, .add_peer_fail)
326326
}
327327

328-
handleResolve(resolve, .add_peer_success)
328+
return handleResolve(resolve, .add_peer_success)
329329
}
330330

331331
@objc
@@ -351,7 +351,7 @@ class Ldk: NSObject {
351351
height: UInt32(height)
352352
)
353353

354-
handleResolve(resolve, .tx_set_confirmed)
354+
return handleResolve(resolve, .tx_set_confirmed)
355355
}
356356

357357
@objc
@@ -367,7 +367,7 @@ class Ldk: NSObject {
367367
channelManager.as_Confirm().transaction_unconfirmed(txid: String(txId).hexaBytes)
368368
chainMonitor.as_Confirm().transaction_unconfirmed(txid: String(txId).hexaBytes)
369369

370-
handleResolve(resolve, .tx_set_unconfirmed)
370+
return handleResolve(resolve, .tx_set_unconfirmed)
371371
}
372372

373373
//MARK: Payments
@@ -379,7 +379,7 @@ class Ldk: NSObject {
379379
return handleReject(reject, .decode_invoice_fail, nil, error?.to_str())
380380
}
381381

382-
resolve(invoice.asJson) //Invoice class extended in Helpers file
382+
return resolve(invoice.asJson) //Invoice class extended in Helpers file
383383
}
384384

385385
@objc
@@ -427,8 +427,6 @@ class Ldk: NSObject {
427427
default:
428428
return handleReject(reject, .invoice_payment_fail_sending, nil, res.getError().debugDescription)
429429
}
430-
431-
return handleReject(reject, .invoice_payment_fail_unknown, nil)
432430
}
433431

434432
@objc
@@ -476,7 +474,7 @@ class Ldk: NSObject {
476474

477475
channelManager.process_pending_htlc_forwards()
478476

479-
handleResolve(resolve, .process_pending_htlc_forwards_success)
477+
return handleResolve(resolve, .process_pending_htlc_forwards_success)
480478
}
481479

482480
@objc
@@ -486,11 +484,11 @@ class Ldk: NSObject {
486484
}
487485

488486
let res = channelManager.claim_funds(payment_preimage: String(paymentPreimage).hexaBytes)
489-
if res == false {
490-
handleReject(reject, .claim_funds_failed)
487+
if !res {
488+
return handleReject(reject, .claim_funds_failed)
491489
}
492490

493-
handleResolve(resolve, .claim_funds_success)
491+
return handleResolve(resolve, .claim_funds_success)
494492
}
495493

496494
//MARK: Fetch methods
@@ -501,7 +499,7 @@ class Ldk: NSObject {
501499
"ldk": Bindings.swift_ldk_get_compiled_version(),
502500
]
503501

504-
resolve(String(data: try! JSONEncoder().encode(res), encoding: .utf8)!)
502+
return resolve(String(data: try! JSONEncoder().encode(res), encoding: .utf8)!)
505503
}
506504

507505
@objc
@@ -510,7 +508,7 @@ class Ldk: NSObject {
510508
return handleReject(reject, .init_channel_manager)
511509
}
512510

513-
resolve(Data(channelManager.get_our_node_id()).hexEncodedString())
511+
return resolve(Data(channelManager.get_our_node_id()).hexEncodedString())
514512
}
515513

516514
@objc
@@ -519,7 +517,7 @@ class Ldk: NSObject {
519517
return handleReject(reject, .init_peer_manager)
520518
}
521519

522-
resolve(peerManager.get_peer_node_ids().map { Data($0).hexEncodedString() })
520+
return resolve(peerManager.get_peer_node_ids().map { Data($0).hexEncodedString() })
523521
}
524522

525523
@objc
@@ -528,7 +526,7 @@ class Ldk: NSObject {
528526
return handleReject(reject, .init_channel_manager)
529527
}
530528

531-
resolve(channelManager.list_channels().map { $0.asJson })
529+
return resolve(channelManager.list_channels().map { $0.asJson })
532530
}
533531

534532
@objc
@@ -537,7 +535,7 @@ class Ldk: NSObject {
537535
return handleReject(reject, .init_channel_manager)
538536
}
539537

540-
resolve(channelManager.list_usable_channels().map { $0.asJson })
538+
return resolve(channelManager.list_usable_channels().map { $0.asJson })
541539
}
542540
}
543541

0 commit comments

Comments
 (0)