@@ -250,13 +250,14 @@ class Ldk: NSObject {
250250 if read. isOk ( ) {
251251 networkGraph = read. getValue ( )
252252 LdkEventEmitter . shared. send ( withEvent: . native_log, body: " Loaded network graph from file " )
253-
254253 }
255254 } catch {
256255 networkGraph = NetworkGraph ( genesis_hash: String ( genesisHash) . hexaBytes, logger: logger)
257256 LdkEventEmitter . shared. send ( withEvent: . native_log, body: " Failed to load cached network graph from disk. Will sync from scratch. \( error. localizedDescription) " )
258257 }
259258
259+ print ( " rapidGossipSyncUrl: \( rapidGossipSyncUrl) " )
260+
260261 //Download url passed, enable rapid gossip sync
261262 if rapidGossipSyncUrl != " " {
262263 do {
@@ -377,6 +378,8 @@ class Ldk: NSObject {
377378 channelMonitorsSerialized. append ( [ UInt8] ( try ! Data ( contentsOf: channelFile. standardizedFileURL) ) )
378379 }
379380
381+ print ( " enableP2PGossip \( enableP2PGossip) " )
382+
380383 do {
381384 //Only restore a node if we have existing channel monitors to restore. Else we lose our UserConfig settings when restoring.
382385 if let channelManagerSerialized = storedChannelManager, channelMonitorsSerialized. count > 0 {
@@ -430,6 +433,10 @@ class Ldk: NSObject {
430433 peerHandler = channelManagerConstructor!. getTCPPeerHandler ( )
431434 invoicePayer = channelManagerConstructor!. payer
432435
436+ if enableP2PGossip {
437+ self . networkGraph = channelManagerConstructor!. net_graph
438+ }
439+
433440 return handleResolve ( resolve, . channel_manager_init_success)
434441 }
435442
@@ -819,7 +826,7 @@ class Ldk: NSObject {
819826 }
820827
821828 @objc
822- func networkGraphListNodes ( _ resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
829+ func networkGraphListNodeIds ( _ resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
823830 guard let networkGraph = networkGraph? . read_only ( ) else {
824831 return handleReject ( reject, . init_network_graph)
825832 }
@@ -833,20 +840,29 @@ class Ldk: NSObject {
833840 }
834841
835842 @objc
836- func networkGraphNode ( _ nodeId : NSString , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
843+ func networkGraphNodes ( _ nodeIds : NSArray , resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
837844 guard let networkGraph = networkGraph? . read_only ( ) else {
838845 return handleReject ( reject, . init_network_graph)
839846 }
847+
848+ //Filter out nodes we don't know about as querying unknown nodes will cause a crash
849+ let includedList = nodeIds. map ( { $0 as! String } ) . filter { id in
850+ return networkGraph. list_nodes ( ) . contains { id == Data ( $0. as_slice ( ) ) . hexEncodedString ( ) }
851+ }
840852
841- return resolve ( networkGraph. node ( node_id: NodeId ( pubkey: String ( nodeId) . hexaBytes) ) . asJson)
853+ return resolve ( includedList. map ( { id in
854+ var info = networkGraph. node ( node_id: NodeId ( pubkey: id. hexaBytes) ) . asJson
855+ info [ " id " ] = id
856+ return info
857+ } ) )
842858 }
843859
844860 @objc
845861 func networkGraphListChannels( _ resolve: @escaping RCTPromiseResolveBlock , reject: @escaping RCTPromiseRejectBlock ) {
846862 guard let networkGraph = networkGraph? . read_only ( ) else {
847863 return handleReject ( reject, . init_network_graph)
848864 }
849-
865+
850866 let total = networkGraph. list_channels ( ) . count
851867 if total > 100 {
852868 return handleReject ( reject, . data_too_large_for_rn, nil , " Too many channels to return ( \( total) ) " )
@@ -861,7 +877,14 @@ class Ldk: NSObject {
861877 return handleReject ( reject, . init_network_graph)
862878 }
863879
864- return resolve ( networkGraph. channel ( short_channel_id: UInt64 ( shortChannelId as String ) !) . asJson)
880+ let channelId = String ( shortChannelId)
881+
882+ let channels = networkGraph. list_channels ( )
883+ if !channels. contains{ channelId == String ( $0) } {
884+ return handleReject ( reject, . init_network_graph)
885+ }
886+
887+ return resolve ( networkGraph. channel ( short_channel_id: UInt64 ( channelId) !) . asJson)
865888 }
866889
867890 @objc
0 commit comments