Skip to content

Commit dfd43fd

Browse files
added convenient method for get latest pending txs
1 parent 8398554 commit dfd43fd

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

web3swift/Web3/Classes/Web3+WebsocketProvider.swift

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@ import PromiseKit
1111
import BigInt
1212
import 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+
1433
public 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

Comments
 (0)