@walletconnect/react-native-compat 2.17.2-canary-ca-5 → 2.17.2-canary-ca-7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/android/build.gradle
CHANGED
|
@@ -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
|
|
126
|
+
implementation("com.github.reown-com:yttrium:0.4.11")
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
if (isNewArchitectureEnabled()) {
|
package/android/src/main/java/com/walletconnect/reactnativemodule/RNWalletConnectModuleModule.kt
CHANGED
|
@@ -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,10 +61,12 @@ 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
|
|
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
|
|
@@ -77,34 +78,23 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
|
|
|
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
|
|
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
|
|
88
|
+
is PrepareResponse.Success -> {
|
|
94
89
|
when (result.v1) {
|
|
95
90
|
is RouteResponseSuccess.Available -> {
|
|
96
91
|
val availableResult = (result.v1 as RouteResponseSuccess.Available).v1
|
|
97
|
-
|
|
98
|
-
val uiFields = client.getRouteUiFields(availableResult, transaction, Currency.USD)
|
|
92
|
+
availableResponseMap[availableResult.orchestrationId] = availableResult
|
|
99
93
|
val gson = Gson()
|
|
100
94
|
val routesJson: JsonElement = gson.toJsonTree(availableResult)
|
|
101
|
-
val routesDetailsJson: JsonElement = gson.toJsonTree(uiFields)
|
|
102
|
-
val dataObject = JsonObject()
|
|
103
|
-
dataObject.add("routes", routesJson)
|
|
104
|
-
dataObject.add("routesDetails", routesDetailsJson)
|
|
105
95
|
val response = JsonObject()
|
|
106
96
|
response.addProperty("status", "available")
|
|
107
|
-
response.add("data",
|
|
97
|
+
response.add("data", routesJson)
|
|
108
98
|
promise.resolve(gson.toJson(response))
|
|
109
99
|
}
|
|
110
100
|
is RouteResponseSuccess.NotRequired -> {
|
|
@@ -115,7 +105,7 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
|
|
|
115
105
|
}
|
|
116
106
|
}
|
|
117
107
|
}
|
|
118
|
-
is
|
|
108
|
+
is PrepareResponse.Error -> {
|
|
119
109
|
System.out.println(result.v1.error.toString())
|
|
120
110
|
when (result.v1.error.toString()) {
|
|
121
111
|
"NO_ROUTES_AVAILABLE" -> {
|
|
@@ -153,7 +143,7 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
|
|
|
153
143
|
}
|
|
154
144
|
|
|
155
145
|
@ReactMethod
|
|
156
|
-
override fun
|
|
146
|
+
override fun status(params: ReadableMap, promise: Promise){
|
|
157
147
|
System.out.println("checkStatus: Hello from YttriumModule address")
|
|
158
148
|
|
|
159
149
|
GlobalScope.launch(Dispatchers.Main) {
|
|
@@ -164,48 +154,118 @@ class RNWalletConnectModuleModule internal constructor(context: ReactApplication
|
|
|
164
154
|
var client = ChainAbstractionClient(projectId)
|
|
165
155
|
|
|
166
156
|
when (val result = client.status(orchestrationId)) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
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
|
+
}
|
|
177
166
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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))
|
|
188
178
|
}
|
|
189
179
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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))
|
|
200
191
|
}
|
|
201
192
|
}
|
|
202
193
|
}
|
|
194
|
+
}
|
|
203
195
|
} catch (e: Exception) {
|
|
204
196
|
// In case of an error, reject the promise
|
|
205
197
|
promise.reject("ERROR", "Yttrium checkStatus Error:" + e.message, e)
|
|
206
198
|
}
|
|
207
199
|
}
|
|
208
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
|
+
|
|
209
269
|
companion object {
|
|
210
270
|
const val NAME = "RNWalletConnectModule"
|
|
211
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
|
|
13
|
-
abstract fun
|
|
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/index.js
CHANGED
|
@@ -78,42 +78,7 @@ if (typeof global?.Application === "undefined") {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
// iOS uses Yttrium, Android uses RNWalletConnectModule
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
export async function checkRoute(params) {
|
|
84
|
-
if (!yttrium) {
|
|
85
|
-
throw new Error("RN Yttrium is not correctly linked");
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const result = await yttrium?.checkRoute(params);
|
|
89
|
-
return parseResult(result);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export async function checkStatus(params) {
|
|
93
|
-
if (!yttrium) {
|
|
94
|
-
throw new Error("RN Yttrium is not correctly linked");
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const result = await yttrium?.checkStatus(params);
|
|
98
|
-
return parseResult(result);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function parseResult(result) {
|
|
102
|
-
if (typeof result === "undefined") return;
|
|
103
|
-
|
|
104
|
-
// iOS returns parsed JSON object, while Android returns stringified
|
|
105
|
-
if (typeof result === "string") {
|
|
106
|
-
try {
|
|
107
|
-
return JSON.parse(result);
|
|
108
|
-
} catch (e) {}
|
|
109
|
-
}
|
|
110
|
-
return result;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
global.yttrium = {
|
|
114
|
-
checkRoute,
|
|
115
|
-
checkStatus,
|
|
116
|
-
};
|
|
81
|
+
global.yttrium = NativeModules.Yttrium || NativeModules.RNWalletConnectModule;
|
|
117
82
|
|
|
118
83
|
// eslint-disable-next-line no-console
|
|
119
84
|
console.log("RN yttrium", global.yttrium);
|
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
|
+
"version": "2.17.2-canary-ca-7",
|
|
5
5
|
"author": "WalletConnect, Inc. <walletconnect.com>",
|
|
6
6
|
"homepage": "https://github.com/walletconnect/walletconnect-monorepo/",
|
|
7
7
|
"license": "Apache-2.0",
|