@@ -11,6 +11,25 @@ import PromiseKit
1111import BigInt
1212import Foundation
1313
14+ extension web3 . Eth {
15+ public func getLatestPendingTransactions( forDelegate delegate: Web3SocketDelegate ) throws {
16+ var infuraWSProvider : InfuraWebsocketProvider
17+ if !( provider is InfuraWebsocketProvider ) {
18+ guard let infuraNetwork = provider. network else {
19+ throw Web3Error . processingError ( desc: " Wrong network " )
20+ }
21+ guard let infuraProvider = InfuraWebsocketProvider ( infuraNetwork, delegate: delegate, keystoreManager: provider. attachedKeystoreManager) else {
22+ throw Web3Error . processingError ( desc: " Wrong network " )
23+ }
24+ infuraWSProvider = infuraProvider
25+ } else {
26+ infuraWSProvider = provider as! InfuraWebsocketProvider
27+ }
28+ infuraWSProvider. connectSocket ( )
29+ try infuraWSProvider. subscribeOn ( method: . newPendingTransactionFilter)
30+ }
31+ }
32+
1433public protocol IWebsocketProvider {
1534 var socket : WebSocket { get }
1635 var delegate : Web3SocketDelegate { get set }
@@ -77,7 +96,7 @@ public final class InfuraWebsocketProvider: WebsocketProvider {
7796
7897 public init ? ( _ network: Networks ,
7998 delegate: Web3SocketDelegate ,
80- keystoreManager manager: KeystoreManager ? ) {
99+ keystoreManager manager: KeystoreManager ? = nil ) {
81100 guard network == Networks . Kovan
82101 || network == Networks . Rinkeby
83102 || network == Networks . Ropsten
@@ -92,7 +111,7 @@ public final class InfuraWebsocketProvider: WebsocketProvider {
92111
93112 public static func connectToSocket( _ network: Networks ,
94113 delegate: Web3SocketDelegate ,
95- keystoreManager manager: KeystoreManager ? ) -> InfuraWebsocketProvider ? {
114+ keystoreManager manager: KeystoreManager ? = nil ) -> InfuraWebsocketProvider ? {
96115 guard let socketProvider = InfuraWebsocketProvider ( network,
97116 delegate: delegate,
98117 keystoreManager: manager) else { return nil }
@@ -175,7 +194,7 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
175194
176195 public init ( endpoint: URL ,
177196 delegate wsdelegate: Web3SocketDelegate ,
178- keystoreManager manager: KeystoreManager ? ,
197+ keystoreManager manager: KeystoreManager ? = nil ,
179198 network net: Networks ? = nil ) {
180199 delegate = wsdelegate
181200 attachedKeystoreManager = manager
@@ -209,10 +228,12 @@ public class WebsocketProvider: Web3Provider, IWebsocketProvider, WebSocketDeleg
209228
210229 public static func connectToSocket( endpoint: URL ,
211230 delegate: Web3SocketDelegate ,
212- keystoreManager manager: KeystoreManager ? ) -> WebsocketProvider {
231+ keystoreManager manager: KeystoreManager ? = nil ,
232+ network net: Networks ? = nil ) -> WebsocketProvider {
213233 let socketProvider = WebsocketProvider ( endpoint: endpoint,
214234 delegate: delegate,
215- keystoreManager: manager)
235+ keystoreManager: manager,
236+ network: net)
216237 socketProvider. connectSocket ( )
217238 return socketProvider
218239 }
0 commit comments