@@ -73,6 +73,7 @@ enum LdkErrors: String {
7373 case backup_restore_failed = " backup_restore_failed "
7474 case backup_restore_failed_existing_files = " backup_restore_failed_existing_files "
7575 case backup_list_files_failed = " backup_list_files_failed "
76+ case scorer_download_fail = " scorer_download_fail "
7677}
7778
7879enum LdkCallbackResponses : String {
@@ -101,6 +102,8 @@ enum LdkCallbackResponses: String {
101102 case backup_client_setup_success = " backup_client_setup_success "
102103 case backup_restore_success = " backup_restore_success "
103104 case backup_client_check_success = " backup_client_check_success "
105+ case scorer_download_success = " scorer_download_success "
106+ case scorer_download_skip = " scorer_download_skip "
104107}
105108
106109enum LdkFileNames : String {
@@ -228,7 +231,43 @@ class Ldk: NSObject {
228231 }
229232
230233 @objc
231- func initNetworkGraph( _ network: NSString , rapidGossipSyncUrl: NSString , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
234+ func downloadScorer( _ scorerSyncUrl: NSString , skipHoursThreshold: NSInteger , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
235+ guard let accountStoragePath = Ldk . accountStoragePath else {
236+ return handleReject ( reject, . init_storage_path)
237+ }
238+
239+ let destinationFile = accountStoragePath. appendingPathComponent ( LdkFileNames . scorer. rawValue)
240+
241+ //If old one is still recent, skip download. Else delete it.
242+ if FileManager ( ) . fileExists ( atPath: destinationFile. path) {
243+ let fileAttributes = try ? FileManager ( ) . attributesOfItem ( atPath: destinationFile. path)
244+ if let creationDate = fileAttributes ? [ . creationDate] as? Date {
245+ let currentTime = Date ( )
246+ let timeInterval = currentTime. timeIntervalSince ( creationDate)
247+ let hoursPassed = timeInterval / 3600
248+
249+ if hoursPassed <= Double ( skipHoursThreshold) {
250+ return handleResolve ( resolve, . scorer_download_skip)
251+ }
252+ }
253+
254+ try ? FileManager ( ) . removeItem ( atPath: destinationFile. path)
255+ }
256+
257+ let url = URL ( string: String ( scorerSyncUrl) ) !
258+ let task = url. downloadTask ( destination: destinationFile) { error in
259+ if let error = error {
260+ return handleReject ( reject, . scorer_download_fail, error)
261+ }
262+
263+ handleResolve ( resolve, . scorer_download_success)
264+ }
265+
266+ task? . resume ( )
267+ }
268+
269+ @objc
270+ func initNetworkGraph( _ network: NSString , rapidGossipSyncUrl: NSString , skipHoursThreshold: NSInteger , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
232271 guard networkGraph == nil else {
233272 return handleReject ( reject, . already_init)
234273 }
@@ -260,6 +299,7 @@ class Ldk: NSObject {
260299 }
261300
262301 print ( " rapidGossipSyncUrl: \( rapidGossipSyncUrl) " )
302+ print ( " accountStoragePath: \( accountStoragePath) " )
263303
264304 //Download url passed, enable rapid gossip sync
265305 do {
@@ -274,7 +314,7 @@ class Ldk: NSObject {
274314 let timestamp = networkGraph? . getLastRapidGossipSyncTimestamp ( ) ?? 0
275315 let minutesDiffSinceLastRGS = ( Calendar . current. dateComponents ( [ . minute] , from: Date . init ( timeIntervalSince1970: TimeInterval ( timestamp) ) , to: Date ( ) ) . minute) !
276316
277- guard minutesDiffSinceLastRGS > 60 else {
317+ guard minutesDiffSinceLastRGS > 60 * skipHoursThreshold else {
278318 LdkEventEmitter . shared. send ( withEvent: . native_log, body: " Skipping rapid gossip sync. Last updated \( minutesDiffSinceLastRGS/ 60 ) hours ago. " )
279319 return handleResolve ( resolve, . network_graph_init_success)
280320 }
@@ -442,6 +482,11 @@ class Ldk: NSObject {
442482 currentBlockchainTipHash = blockHash
443483 currentBlockchainHeight = blockHeight
444484 addForegroundObserver ( )
485+
486+ print ( " Scorer: " )
487+ // Task {
488+ // probabilisticScorer.debugLogLiquidityStats()
489+ // }
445490
446491 return handleResolve ( resolve, . channel_manager_init_success)
447492 }
0 commit comments