@walletconnect/react-native-compat 2.17.2-canary-ca-4 → 2.17.2-canary-ca-6

Sign up to get free protection for your applications and to get access to all the features.
@@ -123,7 +123,7 @@ dependencies {
123
123
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0' // Latest stable version
124
124
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0' // For Dispatchers.Main
125
125
  implementation 'com.google.code.gson:gson:2.9.0'
126
- implementation 'com.github.reown-com:yttrium:0.4.2'
126
+ implementation("com.github.reown-com:yttrium:0.4.11")
127
127
  }
128
128
 
129
129
  if (isNewArchitectureEnabled()) {
@@ -7,7 +7,6 @@ import android.content.pm.PackageManager
7
7
  import uniffi.uniffi_yttrium.ChainAbstractionClient
8
8
  import kotlinx.coroutines.*
9
9
  import com.facebook.react.bridge.ReadableMap
10
- import uniffi.uniffi_yttrium.InitTransaction
11
10
  import uniffi.uniffi_yttrium.*
12
11
  import uniffi.yttrium.*
13
12
  import com.google.gson.Gson
@@ -62,42 +61,40 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
62
61
 
63
62
  // ------------------------------ Yttrium Chain Abstraction ------------------------------
64
63
 
64
+ private var availableResponseMap: MutableMap<String, RouteResponseAvailable> = mutableMapOf()
65
+
66
+
65
67
  @ReactMethod
66
- override fun checkRoute(params: ReadableMap, promise: Promise){
68
+ override fun prepare(params: ReadableMap, promise: Promise){
67
69
  System.out.println("checkRoute: Hello from YttriumModule")
68
-
69
70
  GlobalScope.launch(Dispatchers.Main) {
70
71
  try {
71
72
  var projectId = params.getString("projectId") as String
72
73
  val transactionMap = params.getMap("transaction")
73
74
  var client = ChainAbstractionClient(projectId)
74
-
75
+
75
76
  if (transactionMap != null) {
76
77
  // Extract values from the nested transaction map
77
78
  val chainId = transactionMap.getString("chainId") ?: ""
78
79
  val txData = transactionMap.getString("data") ?: ""
79
80
  val from = transactionMap.getString("from") ?: ""
80
- val gas = transactionMap.getString("gas") ?: "0"
81
- val gasPrice = transactionMap.getString("gasPrice") ?: "0"
82
- val maxFeePerGas = transactionMap.getString("maxFeePerGas") ?: "0"
83
- val maxPriorityFeePerGas = transactionMap.getString("maxPriorityFeePerGas") ?: "0"
84
- val nonce = transactionMap.getString("nonce") ?: "0"
85
81
  val to = transactionMap.getString("to") ?: ""
86
82
  val value = transactionMap.getString("value") ?: "0"
87
-
88
- val tx = InitTransaction(from, to, value, gas, gasPrice, txData, nonce, maxFeePerGas, maxPriorityFeePerGas, chainId)
89
- val result = client.route(tx)
83
+ val tx = InitialTransaction(chainId, from, to, value, txData)
84
+ val result = client.prepare(tx)
90
85
  System.out.println("checkRoute: result: ")
91
86
  System.out.println(result)
92
87
  when (result) {
93
- is RouteResponse.Success -> {
88
+ is PrepareResponse.Success -> {
94
89
  when (result.v1) {
95
90
  is RouteResponseSuccess.Available -> {
91
+ val availableResult = (result.v1 as RouteResponseSuccess.Available).v1
92
+ availableResponseMap[availableResult.orchestrationId] = availableResult
96
93
  val gson = Gson()
97
- val jsonElement: JsonElement = gson.toJsonTree((result.v1 as RouteResponseSuccess.Available).v1)
94
+ val routesJson: JsonElement = gson.toJsonTree(availableResult)
98
95
  val response = JsonObject()
99
96
  response.addProperty("status", "available")
100
- response.add("data", jsonElement)
97
+ response.add("data", routesJson)
101
98
  promise.resolve(gson.toJson(response))
102
99
  }
103
100
  is RouteResponseSuccess.NotRequired -> {
@@ -108,7 +105,7 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
108
105
  }
109
106
  }
110
107
  }
111
- is RouteResponse.Error -> {
108
+ is PrepareResponse.Error -> {
112
109
  System.out.println(result.v1.error.toString())
113
110
  when (result.v1.error.toString()) {
114
111
  "NO_ROUTES_AVAILABLE" -> {
@@ -146,7 +143,7 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
146
143
  }
147
144
 
148
145
  @ReactMethod
149
- override fun checkStatus(params: ReadableMap, promise: Promise){
146
+ override fun status(params: ReadableMap, promise: Promise){
150
147
  System.out.println("checkStatus: Hello from YttriumModule address")
151
148
 
152
149
  GlobalScope.launch(Dispatchers.Main) {
@@ -157,48 +154,118 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
157
154
  var client = ChainAbstractionClient(projectId)
158
155
 
159
156
  when (val result = client.status(orchestrationId)) {
160
- is StatusResponse.Completed -> {
161
- when(result.v1) {
162
- is StatusResponseCompleted -> {
163
- val response = JsonObject()
164
- response.addProperty("status", "completed")
165
- response.addProperty("createdAt", result.v1.createdAt.toString())
166
- val gson = Gson()
167
- promise.resolve(gson.toJson(response))
168
- }
169
- }
157
+ is StatusResponse.Completed -> {
158
+ when (result.v1) {
159
+ is StatusResponseCompleted -> {
160
+ val response = JsonObject()
161
+ response.addProperty("status", "completed")
162
+ response.addProperty("createdAt", result.v1.createdAt.toString())
163
+ val gson = Gson()
164
+ promise.resolve(gson.toJson(response))
165
+ }
170
166
  }
171
- is StatusResponse.Error -> {
172
- when(result.v1) {
173
- is StatusResponseError -> {
174
- val response = JsonObject()
175
- response.addProperty("status", "error")
176
- response.addProperty("createdAt", result.v1.createdAt.toString())
177
- response.addProperty("reason", result.v1.error.toString())
178
- val gson = Gson()
179
- promise.resolve(gson.toJson(response))
180
- }
167
+ }
168
+
169
+ is StatusResponse.Error -> {
170
+ when (result.v1) {
171
+ is StatusResponseError -> {
172
+ val response = JsonObject()
173
+ response.addProperty("status", "error")
174
+ response.addProperty("createdAt", result.v1.createdAt.toString())
175
+ response.addProperty("reason", result.v1.error.toString())
176
+ val gson = Gson()
177
+ promise.resolve(gson.toJson(response))
181
178
  }
182
179
  }
183
- is StatusResponse.Pending -> {
184
- when(result.v1) {
185
- is StatusResponsePending -> {
186
- val response = JsonObject()
187
- response.addProperty("status", "pending")
188
- response.addProperty("createdAt", result.v1.createdAt.toString())
189
- response.addProperty("checkIn", result.v1.checkIn.toString())
190
- val gson = Gson()
191
- promise.resolve(gson.toJson(response))
192
- }
180
+ }
181
+
182
+ is StatusResponse.Pending -> {
183
+ when (result.v1) {
184
+ is StatusResponsePending -> {
185
+ val response = JsonObject()
186
+ response.addProperty("status", "pending")
187
+ response.addProperty("createdAt", result.v1.createdAt.toString())
188
+ response.addProperty("checkIn", result.v1.checkIn.toString())
189
+ val gson = Gson()
190
+ promise.resolve(gson.toJson(response))
193
191
  }
194
192
  }
195
193
  }
194
+ }
196
195
  } catch (e: Exception) {
197
196
  // In case of an error, reject the promise
198
197
  promise.reject("ERROR", "Yttrium checkStatus Error:" + e.message, e)
199
198
  }
200
199
  }
201
200
  }
201
+
202
+ @ReactMethod
203
+ override fun getBridgeDetails(params: ReadableMap, promise: Promise){
204
+ System.out.println("getFulfilmentDetails: Hello from YttriumModule address")
205
+
206
+ GlobalScope.launch(Dispatchers.Main) {
207
+ try {
208
+
209
+ val projectId = params.getString("projectId") as String
210
+ val orchestrationId = params.getString("orchestrationId") as String
211
+ val client = ChainAbstractionClient(projectId)
212
+
213
+ val availableResult = availableResponseMap[orchestrationId] as RouteResponseAvailable
214
+ val uiFields = client.getUiFields(availableResult, Currency.USD)
215
+ val gson = Gson()
216
+ val resultJson: JsonElement = gson.toJsonTree(uiFields)
217
+ promise.resolve(gson.toJson(resultJson))
218
+ } catch (e: Exception) {
219
+ // In case of an error, reject the promise
220
+ promise.reject("ERROR", "Yttrium getFulfilmentDetails Error:" + e.message, e)
221
+ }
222
+ }
223
+ }
224
+
225
+ @ReactMethod
226
+ override fun getERC20Balance(params: ReadableMap, promise: Promise){
227
+ System.out.println("getERC20Balance: Hello from YttriumModule address")
228
+
229
+ GlobalScope.launch(Dispatchers.Main) {
230
+ try {
231
+
232
+ val projectId = params.getString("projectId") as String
233
+ val tokenAddress = params.getString("tokenAddress") as String
234
+ val ownerAddress = params.getString("ownerAddress") as String
235
+ val chainId = params.getString("chainId") as String
236
+ val client = ChainAbstractionClient(projectId)
237
+ val result = client.erc20TokenBalance(chainId, tokenAddress, ownerAddress)
238
+ val gson = Gson()
239
+ val resultJson: JsonElement = gson.toJsonTree(result)
240
+ promise.resolve(gson.toJson(resultJson))
241
+ } catch (e: Exception) {
242
+ // In case of an error, reject the promise
243
+ promise.reject("ERROR", "Yttrium getERC20Balance Error:" + e.message, e)
244
+ }
245
+ }
246
+ }
247
+
248
+ @ReactMethod
249
+ override fun estimateFees(params: ReadableMap, promise: Promise){
250
+ System.out.println("estimateFees: Hello from YttriumModule address")
251
+
252
+ GlobalScope.launch(Dispatchers.Main) {
253
+ try {
254
+
255
+ val projectId = params.getString("projectId") as String
256
+ val chainId = params.getString("chainId") as String
257
+ val client = ChainAbstractionClient(projectId)
258
+ val result = client.estimateFees(chainId)
259
+ val gson = Gson()
260
+ val resultJson: JsonElement = gson.toJsonTree(result)
261
+ promise.resolve(gson.toJson(resultJson))
262
+ } catch (e: Exception) {
263
+ // In case of an error, reject the promise
264
+ promise.reject("ERROR", "Yttrium estimateFees Error:" + e.message, e)
265
+ }
266
+ }
267
+ }
268
+
202
269
  companion object {
203
270
  const val NAME = "RNWalletConnectModule"
204
271
  }
@@ -9,8 +9,12 @@ abstract class RNWalletConnectModuleSpec internal constructor(context: ReactAppl
9
9
  ReactContextBaseJavaModule(context) {
10
10
 
11
11
  abstract fun isAppInstalled(packageName: String?, promise: Promise);
12
- abstract fun checkRoute(params: ReadableMap, promise: Promise);
13
- abstract fun checkStatus(params: ReadableMap, promise: Promise);
12
+ abstract fun prepare(params: ReadableMap, promise: Promise);
13
+ abstract fun status(params: ReadableMap, promise: Promise);
14
+ abstract fun getBridgeDetails(params: ReadableMap, promise: Promise);
15
+ abstract fun estimateFees(params: ReadableMap, promise: Promise);
16
+ abstract fun getERC20Balance(params: ReadableMap, promise: Promise);
17
+
14
18
  protected abstract fun getTypedExportedConstants(): Map<String, String>
15
19
 
16
20
  override fun getConstants(): Map<String, String> {
package/ios/Yttrium.swift CHANGED
@@ -3,152 +3,215 @@ import YttriumWrapper
3
3
 
4
4
  @objc(Yttrium)
5
5
  class Yttrium: NSObject {
6
-
7
- @objc
8
- func checkStatus(_ params: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
9
- print("checkStatus called with", params )
10
- if let dict = params as? [String: Any],
11
- let projectId = dict["projectId"] as? String,
12
- let orchestrationId = dict["orchestrationId"] as? String {
13
- let client = ChainAbstractionClient.init(projectId: projectId)
14
- Task {
15
- do {
16
- let statusResponse = try await client.status(orchestrationId: orchestrationId)
17
-
18
- switch statusResponse {
19
- case let .completed(statusResponseCompleted):
20
- print("status response completed", statusResponseCompleted)
21
- let responseDict: [String: Any] = [
22
- "createdAt": statusResponseCompleted.createdAt,
23
- "status": "completed"
6
+
7
+ @objc
8
+ func checkStatus(_ params: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
9
+ print("checkStatus called with", params )
10
+ if let dict = params as? [String: Any],
11
+ let projectId = dict["projectId"] as? String,
12
+ let orchestrationId = dict["orchestrationId"] as? String {
13
+ let client = ChainAbstractionClient.init(projectId: projectId)
14
+ Task {
15
+ do {
16
+ let statusResponse = try await client.status(orchestrationId: orchestrationId)
17
+
18
+ switch statusResponse {
19
+ case let .completed(statusResponseCompleted):
20
+ print("status response completed", statusResponseCompleted)
21
+ let responseDict: [String: Any] = [
22
+ "createdAt": statusResponseCompleted.createdAt,
23
+ "status": "completed"
24
+ ]
25
+ resolve(responseDict)
26
+ case let .error(statusResponseError):
27
+ print("status response error", statusResponseError)
28
+ let responseDict: [String: Any] = [
29
+ "createdAt": statusResponseError.createdAt,
30
+ "reason": statusResponseError.error,
31
+ "status": "error"
32
+ ]
33
+ resolve(responseDict)
34
+ case let .pending(statusResponsePending):
35
+ print("status response pending", statusResponsePending)
36
+ let responseDict: [String: Any] = [
37
+ "createdAt": statusResponsePending.createdAt,
38
+ "checkIn": statusResponsePending.checkIn,
39
+ "status": "pending"
40
+ ]
41
+ resolve(responseDict)
42
+ }
43
+ } catch {
44
+ print("Error occurred: \(error)")
45
+ print(error)
46
+ reject("checkStatus err", "checkStatus", error)
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ func availableResponseToDictionary(_ response: YttriumWrapper.RouteResponseAvailable) -> [String: Any] {
53
+ return [
54
+ "orchestrationId": response.orchestrationId,
55
+ "transactions": response.transactions.map { transaction in
56
+ return [
57
+ "from": transaction.from,
58
+ "to": transaction.to,
59
+ "value": transaction.value,
60
+ "gas": transaction.gas,
61
+ "data": transaction.data,
62
+ "nonce": transaction.nonce,
63
+ "chainId": transaction.chainId,
64
+ "gasPrice": transaction.gasPrice,
65
+ "maxFeePerGas": transaction.maxFeePerGas,
66
+ "maxPriorityFeePerGas": transaction.maxPriorityFeePerGas,
67
+ ]
68
+ },
69
+ "metadata": [
70
+ "fundingFrom": response.metadata.fundingFrom.map { funding in
71
+ return [
72
+ "chainId": funding.chainId,
73
+ "tokenContract": funding.tokenContract,
74
+ "symbol": funding.symbol,
75
+ "amount": funding.amount,
76
+ ]
77
+ }
78
+ ],
79
+ "checkIn": response.metadata.checkIn,
80
+ ]
81
+ }
82
+
83
+ func convertRouteUiFieldsToDictionary(_ routeUiFields: RouteUiFields) -> [String: Any] {
84
+ func transactionToDictionary(transaction: YttriumWrapper.Transaction) -> [String: Any] {
85
+ return [
86
+ "from": transaction.from,
87
+ "to": transaction.to,
88
+ "value": transaction.value,
89
+ "gas": transaction.gas,
90
+ "data": transaction.data,
91
+ "nonce": transaction.nonce,
92
+ "chainId": transaction.chainId,
93
+ "gasPrice": transaction.gasPrice,
94
+ "maxFeePerGas": transaction.maxFeePerGas,
95
+ "maxPriorityFeePerGas": transaction.maxPriorityFeePerGas
24
96
  ]
25
- resolve(responseDict)
26
- case let .error(statusResponseError):
27
- print("status response error", statusResponseError)
28
- let responseDict: [String: Any] = [
29
- "createdAt": statusResponseError.createdAt,
30
- "reason": statusResponseError.error,
31
- "status": "error"
97
+ }
98
+
99
+ func estimationToDictionary(estimation: YttriumWrapper.Eip1559Estimation) -> [String: Any] {
100
+ return [
101
+ "maxFeePerGas": estimation.maxFeePerGas,
102
+ "maxPriorityFeePerGas": estimation.maxPriorityFeePerGas
32
103
  ]
33
- resolve(responseDict)
34
- case let .pending(statusResponsePending):
35
- print("status response pending", statusResponsePending)
36
- let responseDict: [String: Any] = [
37
- "createdAt": statusResponsePending.createdAt,
38
- "checkIn": statusResponsePending.checkIn,
39
- "status": "pending"
104
+ }
105
+
106
+ func feeToDictionary(fee: YttriumWrapper.TransactionFee) -> [String: Any] {
107
+ return [
108
+ "fee": amountToDictionary(amount: fee.fee),
109
+ "localFee": amountToDictionary(amount: fee.localFee)
40
110
  ]
41
- resolve(responseDict)
42
- }
43
- } catch {
44
- print("Error occurred: \(error)")
45
- print(error)
46
- reject("checkStatus err", "checkStatus", error)
47
111
  }
48
- }
49
- }
50
- }
51
-
52
- func availableResponseToDictionary(_ response: YttriumWrapper.RouteResponseAvailable) -> [String: Any] {
53
- return [
54
- "orchestrationId": response.orchestrationId,
55
- "transactions": response.transactions.map { transaction in
112
+
113
+ func amountToDictionary(amount: YttriumWrapper.Amount) -> [String: Any] {
114
+ return [
115
+ "symbol": amount.symbol,
116
+ "amount": amount.amount,
117
+ "unit": amount.unit,
118
+ "formatted": amount.formatted,
119
+ "formattedAlt": amount.formattedAlt
120
+ ]
121
+ }
122
+
123
+ func txnDetailsToDictionary(details: YttriumWrapper.TxnDetails) -> [String: Any] {
124
+ return [
125
+ "transaction": transactionToDictionary(transaction: details.transaction),
126
+ "estimate": estimationToDictionary(estimation: details.estimate),
127
+ "fee": feeToDictionary(fee: details.fee)
128
+ ]
129
+ }
130
+
56
131
  return [
57
- "from": transaction.from,
58
- "to": transaction.to,
59
- "value": transaction.value,
60
- "gas": transaction.gas,
61
- "data": transaction.data,
62
- "nonce": transaction.nonce,
63
- "chainId": transaction.chainId,
64
- "gasPrice": transaction.gasPrice,
65
- "maxFeePerGas": transaction.maxFeePerGas,
66
- "maxPriorityFeePerGas": transaction.maxPriorityFeePerGas,
132
+ "route": routeUiFields.route.map { txnDetailsToDictionary(details: $0) },
133
+ "bridge": routeUiFields.bridge.map { feeToDictionary(fee: $0) },
134
+ "initial": txnDetailsToDictionary(details: routeUiFields.initial),
135
+ "localTotal": amountToDictionary(amount: routeUiFields.localTotal)
67
136
  ]
68
- },
69
- "metadata": [
70
- "fundingFrom": response.metadata.fundingFrom.map { funding in
71
- return [
72
- "chainId": funding.chainId,
73
- "tokenContract": funding.tokenContract,
74
- "symbol": funding.symbol,
75
- "amount": funding.amount,
76
- ]
77
- }
78
- ],
79
- "checkIn": response.metadata.checkIn,
80
- ]
81
- }
82
-
83
- @objc
84
- func checkRoute(_ params: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
85
- print("checkRoute called with", params)
86
- if let dict = params as? [String: Any],
87
- let transactionData = dict["transaction"] as? [String: Any],
88
- let from = transactionData["from"] as? FfiAddress,
89
- let chainId = transactionData["chainId"] as? String,
90
- let data = transactionData["data"] as? FfiBytes,
91
- let gasPrice = transactionData["gasPrice"] as? String,
92
- let gas = transactionData["gas"] as? Ffiu64,
93
- let value = transactionData["value"] as? Ffiu256,
94
- let to = transactionData["to"] as? FfiAddress,
95
- let maxFeePerGas = transactionData["maxFeePerGas"] as? Ffiu256,
96
- let maxPriorityFeePerGas = transactionData["maxPriorityFeePerGas"] as? Ffiu256,
97
- let nonce = transactionData["nonce"] as? Ffiu64,
98
- let projectId = dict["projectId"] as? String {
99
-
100
-
101
- let client = ChainAbstractionClient.init(projectId: projectId)
102
- print("created client, checking route...")
103
- Task {
104
- do {
105
- let transaction = InitTransaction.init(from: from, to: to, value: value, gas: gas, gasPrice: gasPrice, data: data, nonce: nonce, maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas, chainId: chainId)
137
+ }
138
+
139
+ @objc
140
+ func checkRoute(_ params: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
141
+ print("checkRoute called with", params)
142
+ if let dict = params as? [String: Any],
143
+ let transactionData = dict["transaction"] as? [String: Any],
144
+ let from = transactionData["from"] as? FfiAddress,
145
+ let chainId = transactionData["chainId"] as? String,
146
+ let data = transactionData["data"] as? FfiBytes,
147
+ let gasPrice = transactionData["gasPrice"] as? String,
148
+ let gas = transactionData["gas"] as? Ffiu64,
149
+ let value = transactionData["value"] as? Ffiu256,
150
+ let to = transactionData["to"] as? FfiAddress,
151
+ let maxFeePerGas = transactionData["maxFeePerGas"] as? Ffiu256,
152
+ let maxPriorityFeePerGas = transactionData["maxPriorityFeePerGas"] as? Ffiu256,
153
+ let nonce = transactionData["nonce"] as? Ffiu64,
154
+ let projectId = dict["projectId"] as? String {
106
155
 
107
- let routeResponseSuccess = try await client.route(transaction: transaction)
108
- print("result", routeResponseSuccess)
109
156
 
110
- switch routeResponseSuccess {
111
- case let .success(routeResponse):
112
- switch routeResponse {
113
- case let .available(availableResponse):
114
- let responseDict = availableResponseToDictionary(availableResponse)
115
- resolve(["status": "available", "data": responseDict])
116
- case .notRequired(_):
117
- print("not required")
118
- resolve(["status": "not_required"])
119
- }
120
- case let .error(routeResponse):
121
- switch routeResponse.error {
122
- case BridgingError.insufficientFunds:
123
- let responseDict: [String: Any] = [
124
- "status": "error",
125
- "reason": "insufficientFunds"
126
- ]
127
- resolve(responseDict)
128
- case BridgingError.insufficientGasFunds:
129
- let responseDict: [String: Any] = [
130
- "status": "error",
131
- "reason": "insufficientGasFunds"
132
- ]
133
- resolve(responseDict)
134
- case BridgingError.noRoutesAvailable:
135
- let responseDict: [String: Any] = [
136
- "status": true,
137
- "reason": "noRoutesAvailable"
138
- ]
139
- resolve(responseDict)
140
- }
141
- print(routeResponse)
142
- print(routeResponse.error)
157
+ let client = ChainAbstractionClient.init(projectId: projectId)
158
+ print("created client, checking route...")
159
+ Task {
160
+ do {
161
+ let transaction = InitTransaction.init(from: from, to: to, value: value, gas: gas, gasPrice: gasPrice, data: data, nonce: nonce, maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas, chainId: chainId)
162
+
163
+ let routeResponseSuccess = try await client.route(transaction: transaction)
164
+ print("result", routeResponseSuccess)
165
+
166
+ switch routeResponseSuccess {
167
+ case let .success(routeResponse):
168
+ switch routeResponse {
169
+ case let .available(availableResponse):
170
+ let uiFields = try await client.getRouteUiFields(routeResponse: availableResponse, initialTransaction: Transaction(from: from, to: to, value: value, gas: gas, data: data, nonce: nonce, chainId: chainId, gasPrice: gasPrice, maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas), currency: Currency.usd)
171
+
172
+ let routesDetails = convertRouteUiFieldsToDictionary(uiFields)
173
+
174
+ print("ui_fields_json", routesDetails)
175
+ let responseDict = availableResponseToDictionary(availableResponse)
176
+ resolve(["status": "available", "data": [
177
+ "routes": responseDict,
178
+ "routesDetails": routesDetails
179
+ ]])
180
+ case .notRequired(_):
181
+ print("not required")
182
+ resolve(["status": "not_required"])
183
+ }
184
+ case let .error(routeResponse):
185
+ switch routeResponse.error {
186
+ case BridgingError.insufficientFunds:
187
+ let responseDict: [String: Any] = [
188
+ "status": "error",
189
+ "reason": "insufficientFunds"
190
+ ]
191
+ resolve(responseDict)
192
+ case BridgingError.insufficientGasFunds:
193
+ let responseDict: [String: Any] = [
194
+ "status": "error",
195
+ "reason": "insufficientGasFunds"
196
+ ]
197
+ resolve(responseDict)
198
+ case BridgingError.noRoutesAvailable:
199
+ let responseDict: [String: Any] = [
200
+ "status": "error",
201
+ "reason": "noRoutesAvailable"
202
+ ]
203
+ resolve(responseDict)
204
+ }
205
+ print(routeResponse)
206
+ print(routeResponse.error)
207
+ }
208
+ // resolve(result)
209
+ } catch {
210
+ print("Error occurred: \(error)")
211
+ print(error)
212
+ reject("yttrium err", "yttrium_err", error)
213
+ }
143
214
  }
144
- // resolve(result)
145
- } catch {
146
- print("Error occurred: \(error)")
147
- print(error)
148
- reject("yttrium err", "yttrium_err", error)
149
- }
150
215
  }
151
216
  }
152
-
153
- }
154
217
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walletconnect/react-native-compat",
3
3
  "description": "Shims for WalletConnect Protocol in React Native Projects",
4
- "version": "2.17.2-canary-ca-4",
4
+ "version": "2.17.2-canary-ca-6",
5
5
  "author": "WalletConnect, Inc. <walletconnect.com>",
6
6
  "homepage": "https://github.com/walletconnect/walletconnect-monorepo/",
7
7
  "license": "Apache-2.0",
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
15
15
  s.source = { :git => "https://github.com/walletconnect/walletconnect-monorepo.git", :tag => "#{s.version}" }
16
16
 
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
- s.dependency 'YttriumWrapper' , '0.2.22'
18
+ s.dependency 'YttriumWrapper' , '0.4.6'
19
19
 
20
20
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
21
21
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.