Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a870eb7c55 | ||
|
|
168afba00b | ||
|
|
f135a76551 | ||
|
|
617051cba4 | ||
|
|
7832a3a24d | ||
|
|
e22b6dd88a | ||
|
|
9c90775a1d | ||
|
|
4d0c29f72d | ||
|
|
3ed35a023f | ||
|
|
8fe8bafc2c | ||
|
|
d22b8e03c8 | ||
|
|
3b1b4a989c | ||
|
|
34e5b8b426 |
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
library 'status-jenkins-lib@v1.9.17'
|
||||
|
||||
/* Options section can't access functions in objects. */
|
||||
def isPRBuild = utils.isPRBuild()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
library 'status-jenkins-lib@v1.9.17'
|
||||
|
||||
import groovy.json.JsonBuilder
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
library 'status-jenkins-lib@v1.9.17'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
library 'status-jenkins-lib@v1.9.17'
|
||||
|
||||
/* Options section can't access functions in objects. */
|
||||
def isPRBuild = utils.isPRBuild()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
library 'status-jenkins-lib@v1.9.17'
|
||||
|
||||
/* Options section can't access functions in objects. */
|
||||
def isPRBuild = utils.isPRBuild()
|
||||
|
||||
+2
-2
@@ -920,7 +920,7 @@ PODS:
|
||||
- glog
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- React-Core
|
||||
- react-native-compat (2.17.3):
|
||||
- react-native-compat (2.11.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- React-Core
|
||||
@@ -1536,7 +1536,7 @@ SPEC CHECKSUMS:
|
||||
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
|
||||
react-native-blur: b2b140d3d65077a1d5d26be62d9415f895592344
|
||||
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
|
||||
react-native-compat: fd639220cca206df6c74b95df56a1809d78ba5a3
|
||||
react-native-compat: 3af9add14d349701306d3d052638435f6795ac2c
|
||||
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
|
||||
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
|
||||
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
|
||||
|
||||
+270
-229
@@ -8838,8 +8838,8 @@
|
||||
"repo": "https://jitpack.io",
|
||||
"files": {
|
||||
"reflow-animator-1.0.6.pom": {
|
||||
"sha1": "d2c5089ae74a366676d9432c401e373b4895858e",
|
||||
"sha256": "sha256-uanUNC0CwC2YnlQ4rpZBMdp+Is6UF36Y/Iwn6YLLHno="
|
||||
"sha1": "4fe3d33c764beebdc477d93a590f63dfa38a5f6b",
|
||||
"sha256": "sha256-MEINlM+8v6LDFGREWswamEl17l26xa4eQHeKPcxbSI8="
|
||||
},
|
||||
"reflow-animator-1.0.6.aar": {
|
||||
"sha1": "36074a3fcb77c2ba12bd2de7dde81441e0c7504f",
|
||||
@@ -8898,20 +8898,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/gradle/github-dependency-graph-gradle-plugin/1.3.2",
|
||||
"path": "org/gradle/github-dependency-graph-gradle-plugin/1.3.1",
|
||||
"repo": "https://plugins.gradle.org/m2",
|
||||
"files": {
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.pom": {
|
||||
"sha1": "0740a44f4c99d3e2d9fbc2c89afcb195ec66dbdf",
|
||||
"sha256": "sha256-xaVDODswVgtoaoIAtgCELvnd8IAx8AYdJA+FE3a0Jxs="
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.pom": {
|
||||
"sha1": "5d95862731c88c1e9190fa27a7bd2ffe3ab549d7",
|
||||
"sha256": "sha256-Zk7PNeEBetpWAp4e2rN5A+zn0NDsG3G5kU62uPssiJo="
|
||||
},
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.jar": {
|
||||
"sha1": "ba3d0995475c6aa79048e865d7923bbed20f36a0",
|
||||
"sha256": "sha256-VdNKG2xBu75P6hSlZaERE3ZxOSSwAaPMjD2EnGSejQA="
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.jar": {
|
||||
"sha1": "c905642b753938ef0fa1cda1fc330fae1c4016aa",
|
||||
"sha256": "sha256-0uYWjgzaasT18c62W6IElG2jW1Oe+X0O/4dflT5E61k="
|
||||
},
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.module": {
|
||||
"sha1": "879866cccedf304d8c484d3bb70eb6d699e9e118",
|
||||
"sha256": "sha256-nBqz4Xbqelt3YhEAEG9aPzYC0+2MBcM1M+1Ys5PumhQ="
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.module": {
|
||||
"sha1": "818778b46a93f8d60f11cfa83c7ecbb2481706d8",
|
||||
"sha256": "sha256-agfZPNoTEZDEU5USp5slvtvCfm5OxZucX7XuZ9xugzU="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -9052,16 +9052,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "commons-codec/commons-codec/1.18.0",
|
||||
"path": "commons-codec/commons-codec/1.17.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-codec-1.18.0.pom": {
|
||||
"sha1": "2aa7395e4e4d63be2fd4439da7a01527235f76bf",
|
||||
"sha256": "sha256-dLkW2ksDhMYZ5t1MGN7+iqQ4f3lSBSU8+0u7L0WM3c4="
|
||||
"commons-codec-1.17.1.pom": {
|
||||
"sha1": "d187e2d50ab520895df0dcb9d88980ffea50bfa3",
|
||||
"sha256": "sha256-f6DbTYFQ2vkylYuK6onuJKu00Y4jFqXeU1J4/BMVEqA="
|
||||
},
|
||||
"commons-codec-1.18.0.jar": {
|
||||
"sha1": "ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f",
|
||||
"sha256": "sha256-ugBfMEzvkqPe3iSjitWsm4r8zw2PdYOdbBM4Y0z39uQ="
|
||||
"commons-codec-1.17.1.jar": {
|
||||
"sha1": "973638b7149d333563584137ebf13a691bb60579",
|
||||
"sha256": "sha256-+fbLED8t3DyZqdgK2irnvwaFER/Wv/zLcgM9HaTm/yM="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -9135,20 +9135,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "commons-logging/commons-logging/1.3.5",
|
||||
"path": "commons-logging/commons-logging/1.3.4",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-logging-1.3.5.pom": {
|
||||
"sha1": "378e7ead6461eabd50a97f6503d061cad0dcae9d",
|
||||
"sha256": "sha256-zPSjA0b1AnuUlqvVYpCsJtFZq/K+ZN8SZWEdyUALnWg="
|
||||
"commons-logging-1.3.4.pom": {
|
||||
"sha1": "e919eab34a66d31a9bbe15ddc563d7d2e6770826",
|
||||
"sha256": "sha256-1L2jSJKqzL9PrTP8MjqKqQfvnXmYRlnaJJRMCoa/CGU="
|
||||
},
|
||||
"commons-logging-1.3.5-api.jar": {
|
||||
"sha1": "2e234baf9b0fd82e4e2f0db3b9083900fbfe2f36",
|
||||
"sha256": "sha256-6WjRzl2r6cQzxHbTd+ZSJzD2FttdtdKO2sfEWMtVMdw="
|
||||
"commons-logging-1.3.4-api.jar": {
|
||||
"sha1": "de4050262dfa7522365a9e3c76ed8cf4683fcffa",
|
||||
"sha256": "sha256-X1zVkiUzQHDbaxctBaaFuEei+tY+WxjtAjqqpeErgh8="
|
||||
},
|
||||
"commons-logging-1.3.5.jar": {
|
||||
"sha1": "a3fcc5d3c29b2b03433aa2d2f2d2c1b1638924a1",
|
||||
"sha256": "sha256-bXp0TkAnZJ+7UIld+Ul9EJ+Yx2amNwYv6NLqu7MUC6Q="
|
||||
"commons-logging-1.3.4.jar": {
|
||||
"sha1": "b9fc14968d63a8b8a8a2c1885fe3e90564239708",
|
||||
"sha256": "sha256-vC3+MvHvBlCeagZRRMGt97Qg6r8RqH8wvRJ/j6ozIBY="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -11836,12 +11836,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/code/gson/gson-parent/2.12.1",
|
||||
"path": "com/google/code/gson/gson-parent/2.11.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"gson-parent-2.12.1.pom": {
|
||||
"sha1": "660107b2e76095ef86bbd15c503afe11e5260bfb",
|
||||
"sha256": "sha256-yeewt+Mb574iaEl5wGgAHGUssRPE5u2JTjm2Q97gf8E="
|
||||
"gson-parent-2.11.0.pom": {
|
||||
"sha1": "b32d3bc5c89c852efe4c176df6c3fdeccbe150ef",
|
||||
"sha256": "sha256-issfO3Km8CaRasBzW62aqwKT1Sftt7NlMn3vE6k2e3o="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -11967,24 +11967,24 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/code/gson/gson/2.12.1",
|
||||
"path": "com/google/code/gson/gson/2.11.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"gson-2.12.1.pom": {
|
||||
"sha1": "d2c3993ff96e5da39a57e5e0b695eda560949b57",
|
||||
"sha256": "sha256-C1c17IX0UoLx4sdpd5gAQnsVCoFj9AUJOpKAtxyrGXg="
|
||||
"gson-2.11.0.pom": {
|
||||
"sha1": "55796dd7cc329027df79e96c4e6631e3c02c93c5",
|
||||
"sha256": "sha256-wOVHvqmYiI5uJcWIapDnYicryItSdTQ90sBd7Wyi42A="
|
||||
},
|
||||
"gson-2.12.1.buildinfo": {
|
||||
"sha1": "c2e219d4a63eebf78ce409ee8303eb930248f486",
|
||||
"sha256": "sha256-fNm4d7ep72MLsQq/BeBRdEuam/9hzGJafTURb48yeuY="
|
||||
"gson-2.11.0.buildinfo": {
|
||||
"sha1": "4d1c42ee3c07943d8e07fab98bf0491877b4c0c6",
|
||||
"sha256": "sha256-d6O/J0uIwA+ieS0kkb+yLkeL3OUzOMUcMBHW7nDr0pI="
|
||||
},
|
||||
"gson-2.12.1.buildinfo.asc": {
|
||||
"sha1": "01ba63402708ab4efbd2fa2f4dc5ee7f136b9479",
|
||||
"sha256": "sha256-M+At44sk0y+mblm7UnhRzYzeO36NPGTpP3rTID/wJjU="
|
||||
"gson-2.11.0.buildinfo.asc": {
|
||||
"sha1": "ba50162dd390a51e11a706d62ef9a5d120138337",
|
||||
"sha256": "sha256-blLhhVcT0w8htC6V6rrqU+CZ3egMLBv5AgE76D+zGIY="
|
||||
},
|
||||
"gson-2.12.1.jar": {
|
||||
"sha1": "4e773a317740b83b43cfc3d652962856041697cb",
|
||||
"sha256": "sha256-6+4T1ft0d81/HMAQ4MNW34yoBwlxUkjal/eeNcy0++w="
|
||||
"gson-2.11.0.jar": {
|
||||
"sha1": "527175ca6d81050b53bdd4c457a6d6e017626b0e",
|
||||
"sha256": "sha256-V5KNblpu3rKr03cKj5W6RNzkXzsjt6ncKzCcWBVSp4s="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12199,6 +12199,21 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/errorprone/error_prone_annotations/2.27.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"error_prone_annotations-2.27.0.pom": {
|
||||
"sha1": "85103026aa50b0e4efafee8f486e3ecd9ebfde31",
|
||||
"sha256": "sha256-TKWjXWEjXhZUmsNG0eNFUc3w/ifoSqV+A8vrJV6k5do="
|
||||
},
|
||||
"error_prone_annotations-2.27.0.jar": {
|
||||
"sha1": "91b2c29d8a6148b5e2e4930f070d4840e2e48e34",
|
||||
"sha256": "sha256-JMkjNyxY410LnxagKJKbua7cd1IYZ8J08r0HNd9bofU="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/errorprone/error_prone_annotations/2.36.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -12335,6 +12350,17 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/errorprone/error_prone_parent/2.27.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"error_prone_parent-2.27.0.pom": {
|
||||
"sha1": "336f77abf2668b10cae4ab136ea0c8258875de00",
|
||||
"sha256": "sha256-+oGCnQSVWd9pJ/nJpv1rvQn4tQ5tRzaucsgwC2w9dlQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/errorprone/error_prone_parent/2.36.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -12535,27 +12561,27 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava-parent/33.4.0-jre",
|
||||
"path": "com/google/guava/guava-parent/33.3.1-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-parent-33.4.0-jre.pom": {
|
||||
"sha1": "ee79b87abc4ef9b3591db13c59de368c7b03dc79",
|
||||
"sha256": "sha256-Okme00oNnuDxvMOSMAIaHNTi990EJqtoRPWFRl1B3Nc="
|
||||
"guava-parent-33.3.1-jre.pom": {
|
||||
"sha1": "94729a0ed1dc35f623edd13afa6c1c2fe9a15d7c",
|
||||
"sha256": "sha256-VUQdsn6Iad/v4FMFm99Hi9x+lVhWQr85HwAjNF/VYoc="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava-testlib/33.4.0-jre",
|
||||
"path": "com/google/guava/guava-testlib/33.3.1-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-testlib-33.4.0-jre.pom": {
|
||||
"sha1": "f92730965d606702deb41eca3afb47396b7a5c6a",
|
||||
"sha256": "sha256-p+EQNjDV99XYCN3NnbnVhLvVldRW2UxpHOwJDQ7qZ/A="
|
||||
"guava-testlib-33.3.1-jre.pom": {
|
||||
"sha1": "12fbde61e46674436b0ec48f9b54fbd5f78f8256",
|
||||
"sha256": "sha256-4n6bu2lrvSCUeAF1YUO9EazSCFBFSnEILoceA+27PSw="
|
||||
},
|
||||
"guava-testlib-33.4.0-jre.jar": {
|
||||
"sha1": "e849ea71846b5ca96387d543c7ac862f18fe2513",
|
||||
"sha256": "sha256-JF+agJa8uth2DSga3QKf4klh/pOZ3f6as3srsLCe7WI="
|
||||
"guava-testlib-33.3.1-jre.jar": {
|
||||
"sha1": "a2eeefe29ae8a5b2b6d3a318295fa9a1925bdc61",
|
||||
"sha256": "sha256-j943uKx8GbgmwhbfKvPXEd9JRb/baLPx5qHD9KUng1w="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12741,20 +12767,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava/33.4.0-jre",
|
||||
"path": "com/google/guava/guava/33.3.1-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-33.4.0-jre.pom": {
|
||||
"sha1": "5c671f0be7aa66b15ed0ec2e1afb4ee99c8c78e8",
|
||||
"sha256": "sha256-+pTbQAIt38d1r57PsTDM5RW5b3QNr4LyCvhG2VBUE0s="
|
||||
"guava-33.3.1-jre.pom": {
|
||||
"sha1": "5a5628b34628748abcb73144a909ddbea2265ed9",
|
||||
"sha256": "sha256-MTtn/BPrOwY07acVoSKZcfXem4GIvCgHYoFbg6J18ZM="
|
||||
},
|
||||
"guava-33.4.0-jre.jar": {
|
||||
"sha1": "03fcc0a259f724c7de54a6a55ea7e26d3d5c0cac",
|
||||
"sha256": "sha256-uRjJin5E2+lOvZ/j5Azdqttak+anjrYAi0LfI3JB5Tg="
|
||||
"guava-33.3.1-jre.jar": {
|
||||
"sha1": "852f8b363da0111e819460021ca693cacca3e8db",
|
||||
"sha256": "sha256-S/Dixa+ORSXJbo/eF6T3MH+X+EePEcTI41oOMpiuTpA="
|
||||
},
|
||||
"guava-33.4.0-jre.module": {
|
||||
"sha1": "edaf59b47aef1afba209dfafe1481ed86ff07f04",
|
||||
"sha256": "sha256-gg6BfobEk6p6/9bLuZHuYJJbbIt0VB90LLIgcPbyBFk="
|
||||
"guava-33.3.1-jre.module": {
|
||||
"sha1": "c99293bbf166d01849489fc6f94a101f79072aa7",
|
||||
"sha256": "sha256-QYWMhHU/2WprfFESL8zvOVWMkcwIJk4IUGvPIODmNzM="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12927,12 +12953,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-bom/4.30.0-RC1",
|
||||
"path": "com/google/protobuf/protobuf-bom/4.29.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-bom-4.30.0-RC1.pom": {
|
||||
"sha1": "da26e5286a508eb4c29c3294f34d2fb932916cce",
|
||||
"sha256": "sha256-Gs5LZwG6EhofKfwcjoPgc9pKFKCgex2GkjeMwK+GDYM="
|
||||
"protobuf-bom-4.29.0.pom": {
|
||||
"sha1": "5542df7ac3708da8bf30756f4ee6d804d04b8c9b",
|
||||
"sha256": "sha256-3L/Apl6DmDAE0HFOmL8NIGBwEUVbYhk5cowAkmvIyZk="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13178,16 +13204,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-java/4.30.0-RC1",
|
||||
"path": "com/google/protobuf/protobuf-java/4.29.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-java-4.30.0-RC1.pom": {
|
||||
"sha1": "9b1a4031569c7b624e2e7e0d7bb12fd752f37e39",
|
||||
"sha256": "sha256-3A0yPW415z4X6ICF0obJblY2xk8N8WcLCULsC8MYass="
|
||||
"protobuf-java-4.29.0.pom": {
|
||||
"sha1": "27c4abe9c47f4aed31cf7acff86853a05f7e85f0",
|
||||
"sha256": "sha256-7cHftEVG5yel+sU/CQUGv6aN2DB65vEHbv+tVy+S16Q="
|
||||
},
|
||||
"protobuf-java-4.30.0-RC1.jar": {
|
||||
"sha1": "fe024780d64bf9edeb16d33974fd06799758a9e5",
|
||||
"sha256": "sha256-ywRRWEELxFcCkN+AagbwIbYvLB4m7X4dtlczp8PzXoU="
|
||||
"protobuf-java-4.29.0.jar": {
|
||||
"sha1": "ffea90ab158435d68de76951857ef5f8b0f98365",
|
||||
"sha256": "sha256-FpAYUevl6J/oiqrTwmhmNzaVvC4wYnu4kyhH4vX8LnY="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13307,12 +13333,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-parent/4.30.0-RC1",
|
||||
"path": "com/google/protobuf/protobuf-parent/4.29.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-parent-4.30.0-RC1.pom": {
|
||||
"sha1": "bfd3c39ebcb48274c73c80b82a2925b26a2aea80",
|
||||
"sha256": "sha256-vBZlQhUkJXKX06FCuoKNYc5/hD86HDSonJ4agltkvxQ="
|
||||
"protobuf-parent-4.29.0.pom": {
|
||||
"sha1": "c35e0844930aea715cc8f4335fee49223b1fe35c",
|
||||
"sha256": "sha256-jU6O2nh45revZuPCtvWHE839P7bNsHGS3My2HN0uSTA="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13626,20 +13652,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okio/okio-jvm/3.10.2",
|
||||
"path": "com/squareup/okio/okio-jvm/3.9.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"okio-jvm-3.10.2.pom": {
|
||||
"sha1": "bf3c29f09bf646535ba5a72206280bd5d9631d90",
|
||||
"sha256": "sha256-AP000Iv0YxNiofVSLKpXyuKMosfpOS76My72Vs/anUM="
|
||||
"okio-jvm-3.9.1.pom": {
|
||||
"sha1": "32a1fc013a444bd5d7c45346973c102d02dbeb1e",
|
||||
"sha256": "sha256-VXZInO8kBTNoAPxt6VhUU18zVxpO/lpa0OybmwkNIdU="
|
||||
},
|
||||
"okio-jvm-3.10.2.jar": {
|
||||
"sha1": "6a2cc3acd5a83e66075a2f6c5b0608b6043fa34c",
|
||||
"sha256": "sha256-/Qp+dsZzHwDpILe8EcBdgjqTIEVDGt1Ujgld4CCmnt4="
|
||||
"okio-jvm-3.9.1.jar": {
|
||||
"sha1": "79696e3f4ff05d41ba2b3dc68adb5808a2e5dc53",
|
||||
"sha256": "sha256-/m/pE3j5v6ewjDhkgozkGABc8orMoS6IR+tlxWXDdQA="
|
||||
},
|
||||
"okio-jvm-3.10.2.module": {
|
||||
"sha1": "e1125ef565c7f5fd6fbf0f925188c81febe1d0ee",
|
||||
"sha256": "sha256-p4CkJMVx4odVASiuADMjVibf/iFsuNs7ICRkmWrZaPA="
|
||||
"okio-jvm-3.9.1.module": {
|
||||
"sha1": "470544322c29b112668d2018c05fd94107b05e26",
|
||||
"sha256": "sha256-sK+pGSxC18Rj3jjWMlk2xpAdnjtxSXNf/RihHfMQNKs="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13732,20 +13758,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okio/okio/3.10.2",
|
||||
"path": "com/squareup/okio/okio/3.9.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"okio-3.10.2.pom": {
|
||||
"sha1": "3d4a51279ef5bc796682828afd74ef3ab54ad543",
|
||||
"sha256": "sha256-7lbAIUoPqfER2nExxVDo3ICvDL9WCVbBzNosZtdQa0E="
|
||||
"okio-3.9.1.pom": {
|
||||
"sha1": "1cd169f2bbe6215607a62447b9e4b64a125b5e56",
|
||||
"sha256": "sha256-06DDd+epr8zbsCqrXgUNwhL/2pQNvUcOo5cSpDQt8I4="
|
||||
},
|
||||
"okio-3.10.2.jar": {
|
||||
"sha1": "5117e7c820a89b5722cc37fc9152d54131d4cd36",
|
||||
"sha256": "sha256-3iJdy5APSY2cdVGHpEx043V2vYk62pa4bbYRDiellRM="
|
||||
"okio-3.9.1.jar": {
|
||||
"sha1": "3f1067fc8f61b89e013ea121198c49c991d74cbb",
|
||||
"sha256": "sha256-mcjrvEmV8p3ViwXXVYP8yLlX2yHu64xdiXM/DTSVWJc="
|
||||
},
|
||||
"okio-3.10.2.module": {
|
||||
"sha1": "0e038c29ef477f04b63b0f29847815c52decf3be",
|
||||
"sha256": "sha256-P94fn79yxsMm1eiktTL0/Z/aLdDLFEK8pODHl9FBI4c="
|
||||
"okio-3.9.1.module": {
|
||||
"sha1": "eaa18fe21ddaef8640880e11315ef39757fbc75f",
|
||||
"sha256": "sha256-m5C0J0pa1gLdV01tS0iQNmOy3ppgufw0AiSCk9hD4SE="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15233,16 +15259,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "io/netty/netty-tcnative-classes/2.0.70.Final",
|
||||
"path": "io/netty/netty-tcnative-classes/2.0.69.Final",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"netty-tcnative-classes-2.0.70.Final.pom": {
|
||||
"sha1": "c1e1a8fdfb72675d90886ad28a6949529f798b1a",
|
||||
"sha256": "sha256-QRtGiEv20l66H2RTU5HsWxCH6Rjg5T0iTkIgoE+zJnU="
|
||||
"netty-tcnative-classes-2.0.69.Final.pom": {
|
||||
"sha1": "ee65d639d3c5312a4b6369f0d59504ad0c8dfe0b",
|
||||
"sha256": "sha256-WdoPlJ4r7on1cR6z4Mb9jPeRTmtwwAfza56waIJDAVw="
|
||||
},
|
||||
"netty-tcnative-classes-2.0.70.Final.jar": {
|
||||
"sha1": "5f75accc769e69f2e6c1e56ba3a08b6c4bcc25f8",
|
||||
"sha256": "sha256-p5wVeTE9StSKPswdAaJdoG0i1kScO8w2nCMYdJvPVbw="
|
||||
"netty-tcnative-classes-2.0.69.Final.jar": {
|
||||
"sha1": "0f018f36b688bafabe4573af230a8b59cf3c0713",
|
||||
"sha256": "sha256-C7woSMsJnrP29Ow2UBs2AOGChFfNpB1TMGh/YB7gS+8="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15259,12 +15285,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "io/netty/netty-tcnative-parent/2.0.70.Final",
|
||||
"path": "io/netty/netty-tcnative-parent/2.0.69.Final",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"netty-tcnative-parent-2.0.70.Final.pom": {
|
||||
"sha1": "b5573ffca02a2c092bdb0f7e5efb7da495523ea4",
|
||||
"sha256": "sha256-gHWl5UlncBGgcXXZuNqWOli4hLMujhAbdeeBUhc/3DU="
|
||||
"netty-tcnative-parent-2.0.69.Final.pom": {
|
||||
"sha1": "ba3c1cc69d48f0196ee84ecd3c5157c52a987931",
|
||||
"sha256": "sha256-KVMCcZZjdhDIlPMr2nBQk82HaDFcnxpXOVGnXxeGmvw="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15742,16 +15768,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy-agent/1.15.11",
|
||||
"path": "net/bytebuddy/byte-buddy-agent/1.15.4",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-agent-1.15.11.pom": {
|
||||
"sha1": "4015ca3530951c4336155d578de83f0e6b900f8c",
|
||||
"sha256": "sha256-tfoTlvFHl7jYCIJ+d0O6il8gO0iJvjLklj1EvV7XWag="
|
||||
"byte-buddy-agent-1.15.4.pom": {
|
||||
"sha1": "9440b88e2dfa9fb64979d9150453e5535c45e7d3",
|
||||
"sha256": "sha256-UJEHS07O1v8WbjlDlHRk/0Lac5Y4BC34aDuj6MIJ51U="
|
||||
},
|
||||
"byte-buddy-agent-1.15.11.jar": {
|
||||
"sha1": "a38b16385e867f59a641330f0362ebe742788ed8",
|
||||
"sha256": "sha256-MW0sB5XCpNTEdW8ub5NJg3x0MKw04Ed+rYdNBfXMGeU="
|
||||
"byte-buddy-agent-1.15.4.jar": {
|
||||
"sha1": "58e850dde88f3cf20f41f659440bef33f6c4fe02",
|
||||
"sha256": "sha256-HXbe/RWaVkuct6lo0N6ic2e4tw6951qWjn7xkhvHXuQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15778,6 +15804,17 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy-parent/1.15.4",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-parent-1.15.4.pom": {
|
||||
"sha1": "d8cc6c53d8cda7c416764d4e4a74183546e1e5a2",
|
||||
"sha256": "sha256-lwLCIT4/23CHv9M0tjQ80F9EUIqT64+Uqn2mVKwftI8="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy-parent/1.15.10",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -15789,17 +15826,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy-parent/1.15.11",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-parent-1.15.11.pom": {
|
||||
"sha1": "80e27b5d9cf8ba40dfd0b8ee8f7915d7237aec6d",
|
||||
"sha256": "sha256-jcUZ16PnkhEqfNhB6vvsTwDbxjPQha3SDEXwq0dspJY="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy/1.11.13",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -15830,6 +15856,21 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy/1.15.4",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-1.15.4.pom": {
|
||||
"sha1": "1bab74a93db543cc550920d0cd7d58d8734bda4d",
|
||||
"sha256": "sha256-L7uet+1bcChb8EOXvnjcKoUdDcLnSGXYFJfGGomOIb0="
|
||||
},
|
||||
"byte-buddy-1.15.4.jar": {
|
||||
"sha1": "e8bd42992701720649765383ff570f415190b83f",
|
||||
"sha256": "sha256-Smg9g/8hnyDUTzXKMC2CHgxoQuP6j58e6RPrFvSc7Gw="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy/1.15.10",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -15845,21 +15886,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy/1.15.11",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-1.15.11.pom": {
|
||||
"sha1": "c625e547e59a502e99eba31c1a5b1c514e8c64f5",
|
||||
"sha256": "sha256-IFuLJUGWcX6B2tZyu4aacZr8lt8pf5fYEe/+H0NlPa4="
|
||||
},
|
||||
"byte-buddy-1.15.11.jar": {
|
||||
"sha1": "f61886478e0f9ee4c21d09574736f0ff45e0a46c",
|
||||
"sha256": "sha256-+giZiq4ee9roO94HEsUOhETXHA4MGWuyJHrejUrQ65A="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/java/dev/jna/jna-platform/5.6.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -16433,6 +16459,17 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/apache/32",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"apache-32.pom": {
|
||||
"sha1": "2e08f841a6fbc946452701faaf5e39a17ac97ef3",
|
||||
"sha256": "sha256-z9hywOwn9Trmj0PbwP7N7YrddzB5pTr705DkB7Qs5y8="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/apache/33",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -16666,6 +16703,28 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/commons/commons-parent/71",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-parent-71.pom": {
|
||||
"sha1": "91d35791f5037779fb320d054ed09cb14925dc32",
|
||||
"sha256": "sha256-lbe+cPMWrkyiL2+90I3iGC6HzYdKZQ3nw9M4anR6gqM="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/commons/commons-parent/72",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-parent-72.pom": {
|
||||
"sha1": "cdfbaff82e756be4cb74d3f09b8fbf8f6b06c79d",
|
||||
"sha256": "sha256-Q0Xev8dnsa6saKvdcvxn0YtSHUs5A3KhG2P/DFhrIyA="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/commons/commons-parent/78",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -16677,28 +16736,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/commons/commons-parent/79",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-parent-79.pom": {
|
||||
"sha1": "a2f13e0fa1f22588976e02c39b840653986ba685",
|
||||
"sha256": "sha256-Yo3zAUis08SRz8trc8euS1mJ5VJqsTovQo3qXUrRDXo="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/commons/commons-parent/81",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-parent-81.pom": {
|
||||
"sha1": "4a342190fb243a221636ac0e0b02d3eed07a9908",
|
||||
"sha256": "sha256-NI1OfBMb5hFMhUpxnOekQwenw5vTZghJd7JP0prQ7bQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/apache/httpcomponents/httpclient/4.1.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -17434,20 +17471,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/checkerframework/checker-qual/3.49.0",
|
||||
"path": "org/checkerframework/checker-qual/3.48.2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"checker-qual-3.49.0.pom": {
|
||||
"sha1": "d13e380978f7ccc023bfef031f9d664d52c3877e",
|
||||
"sha256": "sha256-yEUftI7+1jgbMpFG1PrvtvTYq/E79XLCaosawoCW54A="
|
||||
"checker-qual-3.48.2.pom": {
|
||||
"sha1": "95acb8356a028eeb22171b7330f7bb78cf0f9506",
|
||||
"sha256": "sha256-Sk+LlzEYgyx4SrUIpzAJ2tAt5Nq/0dFJLWa45MC6HRE="
|
||||
},
|
||||
"checker-qual-3.49.0.jar": {
|
||||
"sha1": "54be36cb42c9b991c109e467e2bfa82af4cda44e",
|
||||
"sha256": "sha256-i52aNuqvfA/CZQPIPNl9jJwPnikTzCpukqwmxzXU3L4="
|
||||
"checker-qual-3.48.2.jar": {
|
||||
"sha1": "2a4797df796b23026b8215545b0d2936bacc52af",
|
||||
"sha256": "sha256-ryPyDJlbL+3jWx66gRd6mmaUTsZ7jk3uGapMwLcQxrU="
|
||||
},
|
||||
"checker-qual-3.49.0.module": {
|
||||
"sha1": "b6e4941f8d6af0d46a496f72d1b8944e0ed8fd5d",
|
||||
"sha256": "sha256-YA0Z+9XjfemEh8OYBF4UCmUc9brRx5xcl88MyYRMQuQ="
|
||||
"checker-qual-3.48.2.module": {
|
||||
"sha1": "cdf30d8d4b97e12fc85e65e1bd55210a1a084b10",
|
||||
"sha256": "sha256-D2RjlMmz5KL1aitsZ6C0NAkqxrq3pJvC/wGtjKf08NU="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -19864,16 +19901,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.20-Beta2",
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"kotlin-reflect-2.1.20-Beta2.pom": {
|
||||
"sha1": "1f22f7def1b72d86f0122e94963556693dcd9054",
|
||||
"sha256": "sha256-TSmv4VZwoDfXO+C2ohrnzhcbhR5hQPWOERDtz2j/Djo="
|
||||
"kotlin-reflect-2.1.0.pom": {
|
||||
"sha1": "6c72cb76dbf12249eec091d5a7d6ea27a27fcc87",
|
||||
"sha256": "sha256-nNhLPU9xfJYjXkujtydolcz/1V3kEcfOCz97q1Yu/kI="
|
||||
},
|
||||
"kotlin-reflect-2.1.20-Beta2.jar": {
|
||||
"sha1": "9747e5ae1b3b47d83f7a810fbdd603c90cd5b0ad",
|
||||
"sha256": "sha256-MsWsLXYMzUpOX6IMg2JMSqx4DN7upMURajx3sgHgs4E="
|
||||
"kotlin-reflect-2.1.0.jar": {
|
||||
"sha1": "dc3753b59b67d79b7d2f546d51e22a0ec1f082d8",
|
||||
"sha256": "sha256-tfYI7fqYqM+iNyzBLRitqXS+HFbBCT7/BswGH0/AiLI="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21514,6 +21551,33 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.9.25",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"kotlin-stdlib-1.9.25.pom": {
|
||||
"sha1": "cd80842137758a376e09fd243351e10abb0fa13c",
|
||||
"sha256": "sha256-fcMxikdte5AtDSevm1b2Y+jMQmOi0zrQUMertlpbZ6E="
|
||||
},
|
||||
"kotlin-stdlib-1.9.25-all.jar": {
|
||||
"sha1": "6c69e7b26179394dafd3c90e630ef763b8c1a267",
|
||||
"sha256": "sha256-zsOLwzAucqiq+c3kNrWpBx7gMx4q0F6E2LuJczTX6dQ="
|
||||
},
|
||||
"kotlin-stdlib-1.9.25-common.jar": {
|
||||
"sha1": "4c7276a1529397ee6389483a408c57a9c6d4ca7d",
|
||||
"sha256": "sha256-zBF0wWk6JC3Wy8gWpSfEU+BBhJTjbFDNxleL9AFxrNs="
|
||||
},
|
||||
"kotlin-stdlib-1.9.25.jar": {
|
||||
"sha1": "f700a2f2b8f0d6d0fde48f56d894dc722fb029d7",
|
||||
"sha256": "sha256-+c3Nv/H13oU4CuUml35oNybCqkLbHtbm5Qronklulf0="
|
||||
},
|
||||
"kotlin-stdlib-1.9.25.module": {
|
||||
"sha1": "b36cccb05e35f533bf4a44ce7ba25dca4d356a2b",
|
||||
"sha256": "sha256-Q+BqZsO3XKPkxcswSWjqg1ImJHuj9WExK9Gepi3oRqc="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -21537,29 +21601,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.20-Beta2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"kotlin-stdlib-2.1.20-Beta2.pom": {
|
||||
"sha1": "4f06272e28b5e94f321d4f5e999110a95d93ea05",
|
||||
"sha256": "sha256-MO2EkKrOoo71CWbghKGSZ/P1JqCL87tkkKUHe7fIgn4="
|
||||
},
|
||||
"kotlin-stdlib-2.1.20-Beta2-all.jar": {
|
||||
"sha1": "919751264e79f13e6ec79f4eef1d5222e6520d31",
|
||||
"sha256": "sha256-geB9406Esp4U8/3vkC9LxM8dXalZuGffaD++HMVM4eE="
|
||||
},
|
||||
"kotlin-stdlib-2.1.20-Beta2.jar": {
|
||||
"sha1": "98e06078584a3b816315d9baee83d04022f3271c",
|
||||
"sha256": "sha256-dDREYP6u8bxGO6aeUtUOfbAEn3E4uECxzz+yKom8/Vk="
|
||||
},
|
||||
"kotlin-stdlib-2.1.20-Beta2.module": {
|
||||
"sha1": "42afc0b12293bb6474c45f25c4da99ae6fb16103",
|
||||
"sha256": "sha256-SnA8ORhx/5f6h1qdImY6A3werSKT5SZ+CDK7U2pMHrY="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-tooling-core/1.8.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
@@ -21760,16 +21801,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/json/json/20250107",
|
||||
"path": "org/json/json/20240303",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"json-20250107.pom": {
|
||||
"sha1": "91b62e77c1b5a92b6dc79f8c0c154311e1477c85",
|
||||
"sha256": "sha256-ph+87jbeXMAb7ZMEYseLwEvBZBCwHZtfEABq8UoRvFY="
|
||||
"json-20240303.pom": {
|
||||
"sha1": "78c0fa2a26888461731e26603ef4b19cc53239ca",
|
||||
"sha256": "sha256-mUuvXYm/TKpc6WjkxOqxNcj5eD7PTSt7Dp0cik3fHk8="
|
||||
},
|
||||
"json-20250107.jar": {
|
||||
"sha1": "a1b5f0b5a1ce018b93a691c57ffc7d141b3a10f1",
|
||||
"sha256": "sha256-hdTBqxktMRf9Asf/8ewP5jreRc9W3vf+lQ7wYM8G6Z8="
|
||||
"json-20240303.jar": {
|
||||
"sha1": "0ebb88e8fb5122b7506d5cf1d69f1ccdb790d22a",
|
||||
"sha256": "sha256-PPbNaJLjLitMHDng9S9SSKL1s3ZG/fu3mma0a2GEFO0="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21809,16 +21850,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/junit/junit-bom/5.12.0-RC2",
|
||||
"path": "org/junit/junit-bom/5.11.3",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"junit-bom-5.12.0-RC2.pom": {
|
||||
"sha1": "f7f31a9a73bd214137a5e22c45da37aa8fa893a1",
|
||||
"sha256": "sha256-9H9ulor+J1iVBQAkFvwfbn78IHHc1HMNSDTUUp/XY+E="
|
||||
"junit-bom-5.11.3.pom": {
|
||||
"sha1": "ff35120d66bcbdd05c8b94b57b08b9d30f15c343",
|
||||
"sha256": "sha256-8T3y5Mrx/rzlZ2Z+fDeBAaAzHVPRMk1uLf467Psfd3Q="
|
||||
},
|
||||
"junit-bom-5.12.0-RC2.module": {
|
||||
"sha1": "49aa327f7c618b489654a7ac980a5647adf95be4",
|
||||
"sha256": "sha256-5S09WIMqPhrcc3ky5x9gjbj5lefgLRpDmNjdhKDH/2o="
|
||||
"junit-bom-5.11.3.module": {
|
||||
"sha1": "cbe8d3c987c55bc57869f232f052c0df0042c32b",
|
||||
"sha256": "sha256-S/D1PO6nx5D9+9JNujyeBM3FGGQnnuv8V6qkc+vKA4A="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21914,16 +21955,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/mockito/mockito-core/5.15.2",
|
||||
"path": "org/mockito/mockito-core/5.14.2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"mockito-core-5.15.2.pom": {
|
||||
"sha1": "199967c4a9531dd9b29ed2ef72fc4b427192466c",
|
||||
"sha256": "sha256-/tgS0qLznJhHSyoUxjxl+PRxeDtggtyGfAwbYFPGlIA="
|
||||
"mockito-core-5.14.2.pom": {
|
||||
"sha1": "2f6476e2e7da6a275ebac685ed983d3f7bee84e3",
|
||||
"sha256": "sha256-Y45Wpo9JaHm8ig9Tz735xMw5pFtuQ4ozOl6oPAnunP0="
|
||||
},
|
||||
"mockito-core-5.15.2.jar": {
|
||||
"sha1": "87be4b1e0cc5febc07ab3197a8ff3ede56b37a79",
|
||||
"sha256": "sha256-v0i3Ny2UkdXsiuu0zdGH0VZjkxWZwPvnQQFmzg4eWP8="
|
||||
"mockito-core-5.14.2.jar": {
|
||||
"sha1": "f7bf936008d7664e2002c3faf0c02071c8d10e7c",
|
||||
"sha256": "sha256-IpYUHB4fLhrjXAjTapq0Vj7NZuA1M/6CYwp2TnqkkYI="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -807,7 +807,7 @@ org.glassfish.jaxb:txw2:2.2.11
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.2
|
||||
org.gradle.toolchains:foojay-resolver:0.5.0
|
||||
org.gradle:github-dependency-graph-gradle-plugin:1.3.2
|
||||
org.gradle:github-dependency-graph-gradle-plugin:1.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.2
|
||||
org.jacoco:org.jacoco.core:0.7.4.201502262128
|
||||
@@ -1021,5 +1021,5 @@ xml-apis:xml-apis:1.4.01
|
||||
org.gradle.toolchains.foojay-resolver-convention:org.gradle.toolchains.foojay-resolver-convention.gradle.plugin:0.5.0
|
||||
org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.8.0
|
||||
com.android.tools.build:gradle:3.5.4
|
||||
com.facebook.react:hermes-android:0.73.5
|
||||
com.android.tools.lint:lint-gradle:31.1.1
|
||||
com.facebook.react:hermes-android:0.73.5
|
||||
+29
-26
@@ -552,7 +552,7 @@ https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animat
|
||||
https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom
|
||||
https://jitpack.io/com/github/zacharee/AndroidPdfViewer/4.0.1/AndroidPdfViewer-4.0.1.pom
|
||||
https://plugins.gradle.org/m2/com/adarshr/gradle-test-logger-plugin/2.0.0/gradle-test-logger-plugin-2.0.0.pom
|
||||
https://plugins.gradle.org/m2/org/gradle/github-dependency-graph-gradle-plugin/1.3.2/github-dependency-graph-gradle-plugin-1.3.2.pom
|
||||
https://plugins.gradle.org/m2/org/gradle/github-dependency-graph-gradle-plugin/1.3.1/github-dependency-graph-gradle-plugin-1.3.1.pom
|
||||
https://plugins.gradle.org/m2/org/gradle/toolchains/foojay-resolver-convention/org.gradle.toolchains.foojay-resolver-convention.gradle.plugin/0.5.0/org.gradle.toolchains.foojay-resolver-convention.gradle.plugin-0.5.0.pom
|
||||
https://plugins.gradle.org/m2/org/gradle/toolchains/foojay-resolver/0.5.0/foojay-resolver-0.5.0.pom
|
||||
https://repo.maven.apache.org/maven2/antlr/antlr/2.7.1/antlr-2.7.1.pom
|
||||
@@ -562,12 +562,12 @@ https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-cod
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.18.0/commons-codec-1.18.0.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.pom
|
||||
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
|
||||
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.18.0/commons-io-2.18.0.pom
|
||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
|
||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.5/commons-logging-1.3.5.pom
|
||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/adobe/xmp/xmpcore/6.1.11/xmpcore-6.1.11.pom
|
||||
https://repo.maven.apache.org/maven2/com/afollestad/material-dialogs/commons/0.9.6.0/commons-0.9.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/afollestad/material-dialogs/core/0.9.6.0/core-0.9.6.0.pom
|
||||
@@ -726,7 +726,7 @@ https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5/gson
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.6/gson-parent-2.8.6.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.9/gson-parent-2.8.9.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.9.1/gson-parent-2.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.12.1/gson-parent-2.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.11.0/gson-parent-2.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3/gson-2.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.pom
|
||||
@@ -735,7 +735,7 @@ https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.9/gson-2.8.9.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.9.1/gson-2.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.12.1/gson-2.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.0-rc2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.7.0/tink-1.7.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.28.3/dagger-2.28.3.pom
|
||||
@@ -750,6 +750,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotatio
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.36.0/error_prone_annotations-2.36.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
|
||||
@@ -762,6 +763,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.9.0/error_prone_parent-2.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.36.0/error_prone_parent-2.36.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
|
||||
@@ -779,8 +781,8 @@ https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/30.1-jre/guav
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/31.0.1-android/guava-parent-31.0.1-android.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/31.0.1-jre/guava-parent-31.0.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/31.1-jre/guava-parent-31.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.4.0-jre/guava-parent-33.4.0-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/33.4.0-jre/guava-testlib-33.4.0-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.3.1-jre/guava-parent-33.3.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/33.3.1-jre/guava-testlib-33.3.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/22.0/guava-22.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/23.0/guava-23.0.pom
|
||||
@@ -793,7 +795,7 @@ https://repo.maven.apache.org/maven2/com/google/guava/guava/30.1-jre/guava-30.1-
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/31.0.1-android/guava-31.0.1-android.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/33.4.0-jre/guava-33.4.0-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/33.3.1-jre/guava-33.3.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/1.0/listenablefuture-1.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom
|
||||
@@ -807,7 +809,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.13.0/pro
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.17.2/protobuf-bom-3.17.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.2/protobuf-bom-3.19.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.3/protobuf-bom-3.19.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.30.0-RC1/protobuf-bom-4.30.0-RC1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.29.0/protobuf-bom-4.29.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.17.2/protobuf-javalite-3.17.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.19.2/protobuf-javalite-3.19.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
|
||||
@@ -824,7 +826,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.13.0/pr
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.17.2/protobuf-java-3.17.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.2/protobuf-java-3.19.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.3/protobuf-java-3.19.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.30.0-RC1/protobuf-java-4.30.0-RC1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.29.0/protobuf-java-4.29.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-lite/3.0.1/protobuf-lite-3.0.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
|
||||
@@ -835,7 +837,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.13.0/
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.17.2/protobuf-parent-3.17.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.2/protobuf-parent-3.19.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.3/protobuf-parent-3.19.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.30.0-RC1/protobuf-parent-4.30.0-RC1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.29.0/protobuf-parent-4.29.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.4/truth-parent-1.4.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.4/truth-1.4.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/zxing/core/3.4.1/core-3.4.1.pom
|
||||
@@ -856,13 +858,13 @@ https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/4.11.0/okhttp-4
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.2.0/okio-jvm-3.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.10.2/okio-jvm-3.10.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.9.1/okio-jvm-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.17.4/okio-parent-1.17.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.17.4/okio-1.17.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.8.0/okio-2.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.9.0/okio-2.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.2.0/okio-3.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.10.2/okio-3.10.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.9.1/okio-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.1/all-1.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.2/all-1.2.2.pom
|
||||
@@ -969,9 +971,9 @@ https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.52.Final/netty-
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.72.Final/netty-resolver-4.1.72.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-resolver/5.0.0.Alpha2/netty-resolver-5.0.0.Alpha2.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.46.Final/netty-tcnative-classes-2.0.46.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.70.Final/netty-tcnative-classes-2.0.70.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.69.Final/netty-tcnative-classes-2.0.69.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.46.Final/netty-tcnative-parent-2.0.46.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.70.Final/netty-tcnative-parent-2.0.70.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.69.Final/netty-tcnative-parent-2.0.69.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.34.Final/netty-transport-4.1.34.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.52.Final/netty-transport-4.1.52.Final.pom
|
||||
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.72.Final/netty-transport-4.1.72.Final.pom
|
||||
@@ -1004,15 +1006,15 @@ https://repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.pom
|
||||
https://repo.maven.apache.org/maven2/me/zhanghai/android/materialprogressbar/library/1.4.2/library-1.4.2.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.13/byte-buddy-agent-1.11.13.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.19/byte-buddy-agent-1.11.19.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.15.11/byte-buddy-agent-1.15.11.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.15.4/byte-buddy-agent-1.15.4.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.13/byte-buddy-parent-1.11.13.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.19/byte-buddy-parent-1.11.19.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.4/byte-buddy-parent-1.15.4.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.10/byte-buddy-parent-1.15.10.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.11/byte-buddy-parent-1.15.11.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.19/byte-buddy-1.11.19.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.4/byte-buddy-1.15.4.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.10/byte-buddy-1.15.10.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.11/byte-buddy-1.15.11.pom
|
||||
https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.6.0/jna-platform-5.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1.pom
|
||||
@@ -1056,6 +1058,7 @@ https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/21/apache-21.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/23/apache-23.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/32/apache-32.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/33/apache-33.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom
|
||||
@@ -1075,9 +1078,9 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/common
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/commons-parent-42.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/commons-parent-48.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/71/commons-parent-71.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/72/commons-parent-72.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/78/commons-parent-78.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/79/commons-parent-79.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/81/commons-parent-81.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
|
||||
@@ -1132,7 +1135,7 @@ https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.1/che
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.49.0/checker-qual-3.49.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.48.2/checker-qual-3.48.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
|
||||
@@ -1282,7 +1285,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.20/kotlin-reflect-1.6.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.10/kotlin-reflect-1.7.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.20-Beta2/kotlin-reflect-2.1.20-Beta2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.0/kotlin-reflect-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.20/kotlin-scripting-common-1.6.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.8.0/kotlin-scripting-common-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom
|
||||
@@ -1391,8 +1394,8 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/k
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.25/kotlin-stdlib-1.9.25.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.0/kotlin-stdlib-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.20-Beta2/kotlin-stdlib-2.1.20-Beta2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom
|
||||
@@ -1406,17 +1409,17 @@ https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.2.1/markdown-j
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.2.1/markdown-0.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
|
||||
https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.pom
|
||||
https://repo.maven.apache.org/maven2/org/json/json/20250107/json-20250107.pom
|
||||
https://repo.maven.apache.org/maven2/org/json/json/20240303/json-20240303.pom
|
||||
https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.13.1/jsoup-1.13.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.12.0-RC2/junit-bom-5.12.0-RC2.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.11.3/junit-bom-5.11.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8.1/stax-ex-1.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.pom
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.1.0/stax-ex-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/4.0.0/mockito-core-4.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/5.15.2/mockito-core-5.15.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/5.14.2/mockito-core-5.14.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-inline/4.0.0/mockito-inline-4.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.2/objenesis-parent-3.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.3/objenesis-parent-3.3.pom
|
||||
|
||||
@@ -36,5 +36,4 @@ org.gradle.toolchains.foojay-resolver-convention:org.gradle.toolchains.foojay-re
|
||||
org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:$kotlin_version
|
||||
com.android.tools.build:gradle:$tools_version
|
||||
com.facebook.react:hermes-android:$hermes_version
|
||||
com.android.tools.lint:lint-gradle:31.1.1
|
||||
EOF
|
||||
|
||||
@@ -41,7 +41,7 @@ function gen_deps_list() {
|
||||
# FIXME: Fix for missing packages.
|
||||
# https://github.com/status-im/status-mobile/issues/15447
|
||||
function add_deps_hack() {
|
||||
"${CUR_DIR}/deps_hack.sh" >> "${DEPS_LIST}"
|
||||
"${CUR_DIR}/deps_versions.sh" >> "${DEPS_LIST}"
|
||||
}
|
||||
|
||||
# Find download URLs for each dependency.
|
||||
|
||||
+17
-6
@@ -53,14 +53,25 @@ in {
|
||||
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
|
||||
versions = ["16.0" "16.1" "16.2"];
|
||||
};
|
||||
go = super.go_1_22;
|
||||
go = super.go_1_21;
|
||||
clang = super.clang_15;
|
||||
buildGoPackage = super.buildGo122Package;
|
||||
buildGoModule = super.buildGo122Module;
|
||||
gomobile = callPackage ./pkgs/gomobile {
|
||||
#FIXME: No Android SDK packages for aarch64-darwin.
|
||||
androidPkgs = self.androidEnvCustom.compose;
|
||||
buildGoPackage = super.buildGo121Package;
|
||||
buildGoModule = super.buildGo121Module;
|
||||
gomobile = (super.gomobile.overrideAttrs (old: {
|
||||
patches = [
|
||||
(self.fetchurl { # https://github.com/golang/mobile/pull/84
|
||||
url = "https://github.com/golang/mobile/commit/f20e966e05b8f7e06bed500fa0da81cf6ebca307.patch";
|
||||
sha256 = "sha256-TZ/Yhe8gMRQUZFAs9G5/cf2b9QGtTHRSObBFD5Pbh7Y=";
|
||||
})
|
||||
(self.fetchurl { # https://github.com/golang/go/issues/58426
|
||||
url = "https://github.com/golang/mobile/commit/406ed3a7b8e44dc32844953647b49696d8847d51.patch";
|
||||
sha256 = "sha256-dqbYukHkQEw8npOkKykOAzMC3ot/Y4DEuh7fE+ptlr8=";
|
||||
})
|
||||
];
|
||||
})).override {
|
||||
# FIXME: No Android SDK packages for aarch64-darwin.
|
||||
withAndroidPkgs = stdenv.system != "aarch64-darwin";
|
||||
androidPkgs = self.androidEnvCustom.compose;
|
||||
};
|
||||
|
||||
# Android environment
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchgit,
|
||||
fetchurl,
|
||||
buildGo122Module,
|
||||
zlib,
|
||||
makeWrapper,
|
||||
xcodeenv,
|
||||
androidenv,
|
||||
xcodeWrapperArgs ? { },
|
||||
xcodeWrapper ? xcodeenv.composeXcodeWrapper xcodeWrapperArgs,
|
||||
withAndroidPkgs ? stdenv.system != "aarch64-darwin",
|
||||
androidPkgs ? (
|
||||
androidenv.composeAndroidPackages {
|
||||
includeNDK = true;
|
||||
}
|
||||
),
|
||||
}:
|
||||
buildGo122Module {
|
||||
pname = "gomobile";
|
||||
version = "0-unstable-2024-12-13";
|
||||
|
||||
src = fetchgit {
|
||||
name = "gomobile";
|
||||
url = "https://go.googlesource.com/mobile";
|
||||
rev = "a87c1cf6cf463f0d4476cfe0fcf67c2953d76e7c";
|
||||
hash = "sha256-7j4rdmCZMC8tn4vAsC9x/mMNkom/+Tl7uAY+5gkSvfY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-6ycxEDEE0/i6Lxo0gb8wq3U2U7Q49AJj+PdzSl57wwI=";
|
||||
|
||||
CGO_ENABLED = "1";
|
||||
|
||||
subPackages = [
|
||||
"bind"
|
||||
"cmd/gobind"
|
||||
"cmd/gomobile"
|
||||
];
|
||||
|
||||
# Fails with: go: cannot find GOROOT directory
|
||||
doCheck = false;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcodeWrapper ];
|
||||
|
||||
# Prevent a non-deterministic temporary directory from polluting the resulting object files
|
||||
postPatch = ''
|
||||
substituteInPlace cmd/gomobile/env.go --replace-quiet \
|
||||
'tmpdir, err = ioutil.TempDir("", "gomobile-work-")' \
|
||||
'tmpdir = filepath.Join(os.Getenv("NIX_BUILD_TOP"), "gomobile-work")'
|
||||
substituteInPlace cmd/gomobile/init.go --replace-quiet \
|
||||
'tmpdir, err = ioutil.TempDir(gomobilepath, "work-")' \
|
||||
'tmpdir = filepath.Join(os.Getenv("NIX_BUILD_TOP"), "work")'
|
||||
|
||||
# To fix unable to import bind: no Go package in golang.org/x/mobile/bind
|
||||
substituteInPlace cmd/gomobile/init.go --replace \
|
||||
'golang.org/x/mobile/cmd/gobind@latest' \
|
||||
'golang.org/x/mobile/cmd/gobind'
|
||||
'';
|
||||
|
||||
# Necessary for GOPATH when using gomobile.
|
||||
postInstall = ''
|
||||
mkdir -p $out/src/golang.org/x
|
||||
ln -s $src $out/src/golang.org/x/mobile
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
for prog in gomobile gobind; do
|
||||
wrapProgram $out/bin/$prog \
|
||||
--suffix GOPATH : $out \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ zlib ]}" \
|
||||
${lib.optionalString withAndroidPkgs ''
|
||||
--prefix PATH : "${androidPkgs.androidsdk}/bin" \
|
||||
--set-default ANDROID_HOME "${androidPkgs.androidsdk}/libexec/android-sdk"
|
||||
''}
|
||||
done
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Tool for building and running mobile apps written in Go";
|
||||
homepage = "https://pkg.go.dev/golang.org/x/mobile/cmd/gomobile";
|
||||
license = with lib.licenses; [ bsd3 ];
|
||||
maintainers = with lib.maintainers; [ jakubgs ];
|
||||
};
|
||||
}
|
||||
+18
-26
@@ -89,11 +89,7 @@
|
||||
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_MAINNET_TOKEN #shadow/env "ALCHEMY_BASE_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_SEPOLIA_TOKEN #shadow/env "ALCHEMY_BASE_SEPOLIA_TOKEN"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_USER #shadow/env "STATUS_BUILD_ETH_RPC_PROXY_USER"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_PASSWORD #shadow/env
|
||||
"STATUS_BUILD_ETH_RPC_PROXY_PASSWORD"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_URL #shadow/env "STATUS_BUILD_ETH_RPC_PROXY_URL"}
|
||||
status-im.config/ALCHEMY_BASE_SEPOLIA_TOKEN #shadow/env "ALCHEMY_BASE_SEPOLIA_TOKEN"}
|
||||
:compiler-options {:output-feature-set :es5
|
||||
;; We disable `:fn-deprecated` warnings because we
|
||||
;; are managing deprecation via clj-kondo and we
|
||||
@@ -115,27 +111,23 @@
|
||||
:chunks {:fleets legacy.status-im.fleet.default-fleet/default-fleets}
|
||||
:release
|
||||
{:closure-defines
|
||||
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
||||
status-im.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
||||
status-im.config/STATUS_BUILD_PROXY_USER #shadow/env "STATUS_BUILD_PROXY_USER"
|
||||
status-im.config/STATUS_BUILD_PROXY_PASSWORD #shadow/env "STATUS_BUILD_PROXY_PASSWORD"
|
||||
status-im.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
||||
status-im.config/MIXPANEL_APP_ID #shadow/env "MIXPANEL_APP_ID"
|
||||
status-im.config/MIXPANEL_TOKEN #shadow/env "MIXPANEL_TOKEN"
|
||||
status-im.config/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
|
||||
status-im.config/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
|
||||
status-im.config/ALCHEMY_ETHEREUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_ETHEREUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ETHEREUM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_MAINNET_TOKEN #shadow/env "ALCHEMY_BASE_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_SEPOLIA_TOKEN #shadow/env "ALCHEMY_BASE_SEPOLIA_TOKEN"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_USER #shadow/env "STATUS_BUILD_ETH_RPC_PROXY_USER"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_PASSWORD #shadow/env
|
||||
"STATUS_BUILD_ETH_RPC_PROXY_PASSWORD"
|
||||
status-im.config/STATUS_BUILD_ETH_RPC_PROXY_URL #shadow/env "STATUS_BUILD_ETH_RPC_PROXY_URL"}
|
||||
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
||||
status-im.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
||||
status-im.config/STATUS_BUILD_PROXY_USER #shadow/env "STATUS_BUILD_PROXY_USER"
|
||||
status-im.config/STATUS_BUILD_PROXY_PASSWORD #shadow/env "STATUS_BUILD_PROXY_PASSWORD"
|
||||
status-im.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
||||
status-im.config/MIXPANEL_APP_ID #shadow/env "MIXPANEL_APP_ID"
|
||||
status-im.config/MIXPANEL_TOKEN #shadow/env "MIXPANEL_TOKEN"
|
||||
status-im.config/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
|
||||
status-im.config/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
|
||||
status-im.config/ALCHEMY_ETHEREUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_ETHEREUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ETHEREUM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_MAINNET_TOKEN #shadow/env "ALCHEMY_BASE_MAINNET_TOKEN"
|
||||
status-im.config/ALCHEMY_BASE_SEPOLIA_TOKEN #shadow/env "ALCHEMY_BASE_SEPOLIA_TOKEN"}
|
||||
:compiler-options {:output-feature-set :es6
|
||||
;;disable for android build as there
|
||||
;;is an intermittent warning with deftype
|
||||
|
||||
@@ -6,17 +6,28 @@
|
||||
[{:keys [status theme blur?]}]
|
||||
{:flex-direction :row
|
||||
:align-self :flex-start
|
||||
:background-color (when (= status :error)
|
||||
(colors/theme-colors
|
||||
(colors/override-color :danger 10 50)
|
||||
(colors/override-color :danger 10 60)
|
||||
theme))
|
||||
:background-color (cond (= status :error)
|
||||
(colors/theme-colors
|
||||
(colors/override-color :danger 10 50)
|
||||
(colors/override-color :danger 10 60)
|
||||
theme)
|
||||
(= status :warning)
|
||||
(colors/theme-colors
|
||||
(colors/override-color :warning 10 50)
|
||||
(colors/override-color :warning 10 60)
|
||||
theme))
|
||||
:border-width 1
|
||||
:border-color (cond (= status :error)
|
||||
(colors/theme-colors
|
||||
(colors/override-color :danger 20 50)
|
||||
(colors/override-color :danger 20 60)
|
||||
theme)
|
||||
|
||||
(= status :warning)
|
||||
(colors/theme-colors
|
||||
(colors/override-color :warning 20 50)
|
||||
(colors/override-color :warning 20 60)
|
||||
theme)
|
||||
(and blur? (= status :default)) (colors/theme-colors
|
||||
colors/neutral-80-opa-5
|
||||
colors/white-opa-5
|
||||
@@ -35,5 +46,7 @@
|
||||
[{:keys [status theme networks-shown?]}]
|
||||
{:padding-left (if networks-shown? 4 0)
|
||||
:margin-top -1
|
||||
:color (when (= status :error)
|
||||
(colors/resolve-color :danger theme))})
|
||||
:color (cond (= status :error)
|
||||
(colors/resolve-color :danger theme)
|
||||
(= status :warning)
|
||||
(colors/resolve-color :warning theme))})
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
(ns status-im.app.events
|
||||
(:require
|
||||
[status-im.app.use-case :as uc]
|
||||
[taoensso.timbre :as log]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
|
||||
(def navigation-effects-tree
|
||||
{:uc-view-saved-addresses
|
||||
{:on-start [[:dispatch [:open-modal :screen/settings.saved-addresses]]]
|
||||
:uc-add-saved-address {:on-start [[:dispatch [:open-modal :screen/settings.add-address-to-save]]]
|
||||
:on-finish [[:dispatch [:navigate-back]]]}
|
||||
:on-finish [[:dispatch [:navigate-back]]]}})
|
||||
|
||||
|
||||
(def db-path-use-case-stack [:app :use-cases-stack])
|
||||
|
||||
(defn use-cases
|
||||
[db]
|
||||
(get-in db db-path-use-case-stack '()))
|
||||
|
||||
(defn current-use-case
|
||||
[db]
|
||||
(-> db
|
||||
use-cases
|
||||
first))
|
||||
|
||||
(defn- navigation-effects-for-key
|
||||
[db last-key]
|
||||
(let [path (-> db
|
||||
use-cases
|
||||
reverse
|
||||
vec
|
||||
(conj last-key))]
|
||||
(tap> {:in :navigation-effects-for-key
|
||||
:use-cases (use-cases db)})
|
||||
(get-in navigation-effects-tree path)))
|
||||
|
||||
(defn start-use-case-navigation-effects
|
||||
[db]
|
||||
(navigation-effects-for-key db :on-start))
|
||||
|
||||
(defn finish-use-case-navigation-effects
|
||||
[db]
|
||||
(navigation-effects-for-key db :on-finish))
|
||||
|
||||
|
||||
(rf/reg-event-fx :app/start-use-case
|
||||
(fn [{:keys [db]} [use-case-id]]
|
||||
(let [new-db (update-in db db-path-use-case-stack conj use-case-id)]
|
||||
#_(tap> {:in :app/start-use-case
|
||||
:effects (start-use-case-navigation-effects new-db)})
|
||||
{:db new-db
|
||||
:fx (start-use-case-navigation-effects new-db)})))
|
||||
|
||||
(rf/reg-event-fx :app/finish-use-case
|
||||
(fn [{:keys [db]} [use-case-to-finish]]
|
||||
(let [new-db (update-in db db-path-use-case-stack rest)]
|
||||
(if (= (current-use-case db) use-case-to-finish)
|
||||
{:db new-db
|
||||
:fx (finish-use-case-navigation-effects db)}
|
||||
;; TODO: kozieiev: replace with effect
|
||||
(log/error "Attempt to finish use case that is not current:" use-case-to-finish)))))
|
||||
|
||||
(rf/reg-event-fx :app/clear-use-cases-stack
|
||||
(fn [{:keys [db]}]
|
||||
{:db (assoc-in db db-path-use-case-stack '())}))
|
||||
|
||||
(comment
|
||||
(rf/dispatch [:app/start-use-case :uc-save-address])
|
||||
(rf/dispatch [:app/start-use-case :uc-edit-address])
|
||||
(rf/dispatch [:app/finish-use-case :uc-edit-address])
|
||||
(rf/dispatch [:app/finish-use-case :uc-save-address])
|
||||
|
||||
|
||||
(rf/dispatch [:app/clear-use-cases-stack])
|
||||
|
||||
(rf/sub [:app/use-case-active? :uc-edit-address])
|
||||
(rf/sub [:app/use-case-active? :uc-save-address])
|
||||
(rf/sub [:app/current-use-case])
|
||||
(rf/dispatch [:navigate-back])
|
||||
|
||||
(start-use-case-navigation-effects {:app {:use-cases-stack
|
||||
'(:uc-view-saved-addresses :uc-add-saved-address)}})
|
||||
(finish-use-case-navigation-effects {:app {:use-cases-stack
|
||||
'(:uc-view-saved-addresses :uc-add-saved-address)}})
|
||||
|
||||
(use-cases {:app {:use-cases-stack
|
||||
'(:uc-view-saved-addresses :uc-add-saved-address)}})
|
||||
|
||||
(-> {:app {:use-cases-stack '(:uc-view-saved-addresses :uc-add-saved-address)}}
|
||||
use-cases
|
||||
reverse
|
||||
vec
|
||||
(conj :on-exit))
|
||||
|
||||
|
||||
)
|
||||
|
||||
#_(rf/reg-event-fx
|
||||
:app/notify-user
|
||||
(fn [{:keys [db]} [{:keys [text type] :as message}]]
|
||||
(let [notification-id (-> db
|
||||
(get-in [:app :last-user-notification :id] 0)
|
||||
inc)]
|
||||
{;; whenever we need to publish notification we override the old and increment id
|
||||
:db (assoc-in db
|
||||
[:app :last-user-notification]
|
||||
(merge message
|
||||
{:id notification-id}))
|
||||
;; TODO: toasts are part of ui layer and they shouldn't be published here. Instead some part
|
||||
;; of ui should keep track of last user notification and generate toast
|
||||
:fx [#_[:dispatch
|
||||
[:toasts/upsert
|
||||
{:type type
|
||||
:text text}]]]})))
|
||||
|
||||
#_(comment
|
||||
(rf/dispatch [:app/notify-user
|
||||
{:type :positive
|
||||
:text "This is a good news"}])
|
||||
(rf/dispatch [:app/notify-user
|
||||
{:type :negative
|
||||
:text "This is a bad news"}])
|
||||
|
||||
(rf/dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:text "This is a test notification3"}])
|
||||
)
|
||||
@@ -1,97 +0,0 @@
|
||||
(ns status-im.app.use-case)
|
||||
|
||||
(defmulti initial-state
|
||||
(fn [use-case-id]
|
||||
use-case-id))
|
||||
|
||||
(defmethod initial-state :default
|
||||
[_]
|
||||
{:use-case-id :default})
|
||||
|
||||
(defn start
|
||||
[use-case-id state-update]
|
||||
(merge (initial-state use-case-id)
|
||||
state-update))
|
||||
|
||||
(defn make-step
|
||||
[current-state state-update]
|
||||
(merge current-state state-update))
|
||||
|
||||
(defn finish
|
||||
[use-case-id state-update]
|
||||
(merge (initial-state use-case-id)
|
||||
state-update))
|
||||
|
||||
|
||||
;; -----------------------------------------------------
|
||||
|
||||
(defmethod initial-state :uc-view-saved-addresses
|
||||
[_]
|
||||
{:use-case-id :uc-view-saved-addresses})
|
||||
|
||||
(defmethod initial-state :uc-add-saved-address
|
||||
[_]
|
||||
{:use-case-id :uc-add-saved-address
|
||||
:address nil
|
||||
:ens nil
|
||||
:ens? false
|
||||
:name nil
|
||||
:customization-color nil})
|
||||
|
||||
;; -----------------------------------------------------
|
||||
|
||||
(defmulti navigation-start
|
||||
(fn [use-case-data]
|
||||
(:use-case-id use-case-data)))
|
||||
|
||||
(defmulti navigation-step
|
||||
(fn [use-case-data]
|
||||
(:use-case-id use-case-data)))
|
||||
|
||||
(defmethod navigation-step :default
|
||||
[]
|
||||
nil)
|
||||
|
||||
(defmulti navigation-finish
|
||||
(fn [use-case-data]
|
||||
(:use-case-id use-case-data)))
|
||||
|
||||
;; -----------------------------------------------------
|
||||
|
||||
(defmethod navigation-start :uc-view-saved-addresses
|
||||
[_]
|
||||
[[:dispatch [:open-modal :screen/settings.saved-addresses]]])
|
||||
|
||||
(defmethod navigation-finish :uc-view-saved-addresses
|
||||
[_]
|
||||
[[:dispatch [:navigate-back]]])
|
||||
|
||||
;; -----------------------------------------------------
|
||||
|
||||
(defmethod navigation-start :uc-add-saved-address
|
||||
[_]
|
||||
[[:dispatch [:open-modal :screen/settings.add-address-to-save]]])
|
||||
|
||||
(defmethod navigation-step :uc-add-saved-address
|
||||
[{:keys [address ens ens?] :as use-case-state}]
|
||||
[[:dispatch [:open-modal :screen/settings.add-address-to-save]]])
|
||||
|
||||
(defmethod navigation-finish :uc-add-saved-address
|
||||
[_]
|
||||
[[:dispatch [:navigate-back]]])
|
||||
|
||||
;; -----------------------------------------------------
|
||||
(comment
|
||||
(initial-state :uc-add-saved-address)
|
||||
(initial-state :uc-view-saved-addresses)
|
||||
(initial-state :unknown)
|
||||
|
||||
(navigation-start {:use-case-id :uc-add-saved-address})
|
||||
(navigation-finish {:use-case-id :uc-add-saved-address})
|
||||
(navigation-start {:use-case-id :uc-add-saved-address})
|
||||
|
||||
(-> :uc-add-saved-address
|
||||
initial-state
|
||||
(make-step {:address "0xasdfas"})))
|
||||
|
||||
|
||||
@@ -9,38 +9,35 @@
|
||||
[{:keys [db]} {:keys [type action data error] :as event}]
|
||||
(log/info "local pairing signal received"
|
||||
{:event event})
|
||||
(let [{:keys [account password chatKey]} data
|
||||
role (get-in db [:syncing :role])
|
||||
receiver? (= role constants/local-pairing-role-receiver)
|
||||
sender? (= role constants/local-pairing-role-sender)
|
||||
connection-success? (and (= type
|
||||
constants/local-pairing-event-connection-success)
|
||||
(= action
|
||||
constants/local-pairing-action-connect))
|
||||
connection-error? (= type
|
||||
constants/local-pairing-event-connection-error)
|
||||
error-on-pairing? (contains? constants/local-pairing-event-errors type)
|
||||
completed-pairing? (and (= type
|
||||
constants/local-pairing-event-transfer-success)
|
||||
(= action
|
||||
constants/local-pairing-action-pairing-installation))
|
||||
received-account? (and (= type
|
||||
constants/local-pairing-event-received-account)
|
||||
(= action
|
||||
constants/local-pairing-action-pairing-account)
|
||||
(and (some? account) (some? password)))
|
||||
multiaccount-data (when received-account?
|
||||
(merge account
|
||||
{:password password
|
||||
:whisper-private-key chatKey}))
|
||||
navigate-to-syncing-devices? (and (or connection-success? connection-error?) receiver?)
|
||||
user-in-syncing-devices-screen? (or (= (:view-id db) :screen/onboarding.syncing-progress)
|
||||
(= (:view-id db) :screen/profile.profiles)
|
||||
(= (:view-id db)
|
||||
:screen/onboarding.syncing-progress-intro))
|
||||
user-in-sign-in-intro-screen? (= (:view-id db) :screen/onboarding.sign-in-intro)
|
||||
keystore-files-transfer-action? (= action
|
||||
constants/local-pairing-action-keystore-files-transfer)]
|
||||
(let [{:keys [account password]} data
|
||||
role (get-in db [:syncing :role])
|
||||
receiver? (= role constants/local-pairing-role-receiver)
|
||||
sender? (= role constants/local-pairing-role-sender)
|
||||
connection-success? (and (= type
|
||||
constants/local-pairing-event-connection-success)
|
||||
(= action
|
||||
constants/local-pairing-action-connect))
|
||||
connection-error? (= type
|
||||
constants/local-pairing-event-connection-error)
|
||||
error-on-pairing? (contains? constants/local-pairing-event-errors type)
|
||||
completed-pairing? (and (= type
|
||||
constants/local-pairing-event-transfer-success)
|
||||
(= action
|
||||
constants/local-pairing-action-pairing-installation))
|
||||
received-account? (and (= type
|
||||
constants/local-pairing-event-received-account)
|
||||
(= action
|
||||
constants/local-pairing-action-pairing-account)
|
||||
(and (some? account) (some? password)))
|
||||
multiaccount-data (when received-account?
|
||||
(merge account {:password password}))
|
||||
navigate-to-syncing-devices? (and (or connection-success? connection-error?) receiver?)
|
||||
user-in-syncing-devices-screen? (or (= (:view-id db) :screen/onboarding.syncing-progress)
|
||||
(= (:view-id db) :screen/profile.profiles)
|
||||
(= (:view-id db) :screen/onboarding.syncing-progress-intro))
|
||||
user-in-sign-in-intro-screen? (= (:view-id db) :screen/onboarding.sign-in-intro)
|
||||
keystore-files-transfer-action? (= action
|
||||
constants/local-pairing-action-keystore-files-transfer)]
|
||||
(merge {:db (cond-> db
|
||||
connection-success?
|
||||
(assoc-in [:syncing :pairing-status] :connected)
|
||||
|
||||
@@ -10,35 +10,16 @@
|
||||
[utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
(defn- partially-operable-accounts?
|
||||
[accounts]
|
||||
(->> accounts
|
||||
vals
|
||||
(some #(= :partially (:operable %)))
|
||||
boolean))
|
||||
|
||||
(rf/reg-event-fx :standard-auth/migrate-partially-operable-accounts
|
||||
(fn [{:keys [db]} [{:keys [masked-password on-success]}]]
|
||||
(let [on-auth-success-callback #(on-success masked-password)
|
||||
has-partially-operable-accounts? (-> (get-in db [:wallet :accounts])
|
||||
partially-operable-accounts?)]
|
||||
{:fx [(if has-partially-operable-accounts?
|
||||
[:dispatch
|
||||
[:wallet/make-partially-operable-accounts-fully-operable
|
||||
{:password masked-password
|
||||
:on-success on-auth-success-callback
|
||||
:on-error on-auth-success-callback}]]
|
||||
[:effects.standard-auth/on-auth-success on-auth-success-callback])]})))
|
||||
|
||||
(defn- handle-password-success
|
||||
[{:keys [migrate-partially-operable-accounts? on-auth-success masked-password]}]
|
||||
[has-partially-operable-accounts? on-auth-success masked-password]
|
||||
(let [on-auth-success-callback #(on-auth-success masked-password)]
|
||||
(rf/dispatch [:standard-auth/set-success true])
|
||||
(rf/dispatch [:standard-auth/reset-login-password])
|
||||
(if migrate-partially-operable-accounts?
|
||||
(rf/dispatch [:standard-auth/migrate-partially-operable-accounts
|
||||
{:masked-password masked-password
|
||||
:on-success on-auth-success}])
|
||||
(if has-partially-operable-accounts?
|
||||
(rf/dispatch [:wallet/make-partially-operable-accounts-fully-operable
|
||||
{:password masked-password
|
||||
:on-success on-auth-success-callback
|
||||
:on-error on-auth-success-callback}])
|
||||
(on-auth-success-callback))))
|
||||
|
||||
(defn authorize
|
||||
@@ -61,10 +42,9 @@
|
||||
{:pin pin
|
||||
:on-success (fn [{:keys [encryption-public-key]}]
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(handle-password-success {:migrate-partially-operable-accounts? false
|
||||
:on-auth-success on-auth-success
|
||||
:masked-password (security/mask-data
|
||||
encryption-public-key)}))
|
||||
(handle-password-success false
|
||||
on-auth-success
|
||||
(security/mask-data encryption-public-key)))
|
||||
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error
|
||||
%])}]))}]))}]]
|
||||
[:effects.biometric/check-if-available
|
||||
@@ -105,12 +85,7 @@
|
||||
keycard? (get-in db [:profile/profile :keycard-pairing])]
|
||||
{:fx [(if keycard?
|
||||
[:keychain/get-keycard-keys [key-uid on-auth-success]]
|
||||
[:keychain/get-user-password
|
||||
[key-uid
|
||||
(fn [masked-password]
|
||||
(rf/dispatch [:standard-auth/migrate-partially-operable-accounts
|
||||
{:masked-password masked-password
|
||||
:on-success on-auth-success}]))]])
|
||||
[:keychain/get-user-password [key-uid on-auth-success]])
|
||||
[:dispatch [:standard-auth/set-success true]]
|
||||
[:dispatch [:standard-auth/reset-login-password]]]}))
|
||||
|
||||
@@ -133,14 +108,15 @@
|
||||
(defn- bottom-sheet-password-view
|
||||
[{:keys [on-press-biometric on-auth-success auth-button-icon-left auth-button-label]}]
|
||||
(fn []
|
||||
[enter-password/view
|
||||
{:on-enter-password #(handle-password-success {:migrate-partially-operable-accounts? true
|
||||
:on-auth-success on-auth-success
|
||||
:masked-password (security/hash-masked-password
|
||||
%)})
|
||||
:on-press-biometrics on-press-biometric
|
||||
:button-icon-left auth-button-icon-left
|
||||
:button-label auth-button-label}]))
|
||||
(let [has-partially-operable-accounts? (rf/sub [:wallet/has-partially-operable-accounts?])]
|
||||
[enter-password/view
|
||||
{:on-enter-password #(handle-password-success
|
||||
has-partially-operable-accounts?
|
||||
on-auth-success
|
||||
(security/hash-masked-password %))
|
||||
:on-press-biometrics on-press-biometric
|
||||
:button-icon-left auth-button-icon-left
|
||||
:button-label auth-button-label}])))
|
||||
|
||||
(defn authorize-with-keycard
|
||||
[_ [{:keys [on-complete]}]]
|
||||
@@ -179,12 +155,6 @@
|
||||
(when on-close
|
||||
(on-close success?))))
|
||||
|
||||
(rf/reg-fx
|
||||
:effects.standard-auth/on-auth-success
|
||||
(fn [on-auth-success]
|
||||
(when on-auth-success
|
||||
(on-auth-success))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:standard-auth/close
|
||||
(fn [{:keys [db]} [on-close]]
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
|
||||
(defn outmost-transparent-container
|
||||
[]
|
||||
{:elevation 2
|
||||
:pointer-events :box-none
|
||||
:padding-top (+ (safe-area/get-top) 6)
|
||||
:flex-direction :column
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:background-color :yellow})
|
||||
{:elevation 2
|
||||
:pointer-events :box-none
|
||||
:padding-top (+ (safe-area/get-top) 6)
|
||||
:flex-direction :column
|
||||
:justify-content :center
|
||||
:align-items :center})
|
||||
|
||||
(def each-toast-container
|
||||
{:width "100%"
|
||||
|
||||
@@ -28,9 +28,6 @@
|
||||
(goog-define WALLET_CONNECT_PROJECT_ID "87815d72a81d739d2a7ce15c2cfdefb3")
|
||||
(goog-define MIXPANEL_APP_ID "3350627")
|
||||
(goog-define MIXPANEL_TOKEN "5c73bda2d36a9f688a5ee45641fb6775")
|
||||
(goog-define STATUS_BUILD_ETH_RPC_PROXY_USER "")
|
||||
(goog-define STATUS_BUILD_ETH_RPC_PROXY_PASSWORD "")
|
||||
(goog-define STATUS_BUILD_ETH_RPC_PROXY_URL "")
|
||||
|
||||
(def mainnet-rpc-url (str "https://eth-archival.rpc.grove.city/v1/" POKT_TOKEN))
|
||||
(def sepolia-rpc-url (str "https://sepolia-archival.rpc.grove.city/v1/" POKT_TOKEN))
|
||||
|
||||
@@ -443,7 +443,10 @@
|
||||
(def ^:const wallet-account-name-max-length 20)
|
||||
|
||||
|
||||
(def ^:const gas-rate-low 0)
|
||||
(def ^:const gas-rate-medium 1)
|
||||
(def ^:const gas-rate-high 2)
|
||||
(def ^:const gas-rate-custom 3)
|
||||
(def ^:const send-type-transfer 0)
|
||||
(def ^:const send-type-bridge 5)
|
||||
(def ^:const send-type-erc-721-transfer 6)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
[status-im.contexts.chat.messenger.messages.pin.events :as messages.pin]
|
||||
[status-im.contexts.communities.events :as communities]
|
||||
[status-im.contexts.shell.activity-center.events :as activity-center]
|
||||
[status-im.infra.transform :as infra.transform]
|
||||
[status-im.contexts.wallet.data-store :as wallet.data-store]
|
||||
[taoensso.timbre :as log]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
@@ -220,10 +220,10 @@
|
||||
current-visibility-status-clj)))
|
||||
|
||||
(seq saved-addresses-js)
|
||||
(let [saved-addresses (-> saved-addresses-js types/js->clj infra.transform/rpc->saved-addresses)]
|
||||
(let [saved-addresses (-> saved-addresses-js types/js->clj wallet.data-store/rpc->saved-addresses)]
|
||||
(js-delete response-js "savedAddresses")
|
||||
(rf/merge cofx
|
||||
{:fx [[:dispatch [:domain/reconcile-saved-addresses saved-addresses]]]}
|
||||
{:fx [[:dispatch [:wallet/reconcile-saved-addresses saved-addresses]]]}
|
||||
(process-next response-js sync-handler)))
|
||||
|
||||
(seq ens-username-details-js)
|
||||
|
||||
@@ -94,8 +94,7 @@
|
||||
(rf/reg-fx :effects.keycard/login-with-keycard
|
||||
(fn [{:keys [key-uid password whisper-private-key]}]
|
||||
(native-module/login-account
|
||||
(assoc (merge (profile.config/login)
|
||||
(profile.config/fix-node-config-migration))
|
||||
(assoc (profile.config/login)
|
||||
:keyUid key-uid
|
||||
:password password
|
||||
:keycardWhisperPrivateKey whisper-private-key))))
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
[{:type :select
|
||||
:key :status
|
||||
:options [{:key :error}
|
||||
{:key :warning}
|
||||
{:key :default}]}
|
||||
{:type :text
|
||||
:key :title}
|
||||
|
||||
@@ -11,9 +11,6 @@
|
||||
{;; Temporary fix until https://github.com/status-im/status-go/issues/3024 is resolved
|
||||
:wakuV2Nameserver "8.8.8.8"
|
||||
:kdfIterations 3200
|
||||
:ethRpcProxyUser config/STATUS_BUILD_ETH_RPC_PROXY_USER
|
||||
:ethRpcProxyPassword config/STATUS_BUILD_ETH_RPC_PROXY_PASSWORD
|
||||
:ethRpcProxyUrl config/STATUS_BUILD_ETH_RPC_PROXY_URL
|
||||
:statusProxyEnabled config/status-proxy-enabled?
|
||||
:statusProxyStageName config/status-proxy-stage-name
|
||||
:statusProxyMarketUser config/STATUS_BUILD_PROXY_USER
|
||||
@@ -34,35 +31,28 @@
|
||||
:alchemyBaseMainnetToken config/ALCHEMY_BASE_MAINNET_TOKEN
|
||||
:alchemyBaseSepoliaToken config/ALCHEMY_BASE_SEPOLIA_TOKEN})
|
||||
|
||||
(defn- common-config
|
||||
[]
|
||||
{:verifyTransactionURL config/verify-transaction-url
|
||||
:verifyENSURL config/verify-ens-url
|
||||
:verifyENSContractAddress config/verify-ens-contract-address
|
||||
:verifyTransactionChainID config/verify-transaction-chain-id
|
||||
:wakuV2LightClient true
|
||||
:wakuV2EnableMissingMessageVerification true
|
||||
:wakuV2EnableStoreConfirmationForMessagesSent false})
|
||||
|
||||
(defn fix-node-config-migration
|
||||
[]
|
||||
(common-config))
|
||||
|
||||
(defn create
|
||||
[]
|
||||
(let [log-enabled? (boolean (not-empty config/log-level))]
|
||||
(merge
|
||||
(assoc
|
||||
(login)
|
||||
(common-config)
|
||||
{:deviceName (native-module/get-installation-name)
|
||||
:rootDataDir (native-module/backup-disabled-data-dir)
|
||||
:rootKeystoreDir (native-module/keystore-dir)
|
||||
:logLevel (when log-enabled? config/log-level)
|
||||
:logEnabled log-enabled?
|
||||
:logFilePath (native-module/log-file-directory)
|
||||
:wakuV2Fleet config/fleet
|
||||
:previewPrivacy config/blank-preview?
|
||||
:testNetworksEnabled config/test-networks-enabled?})))
|
||||
:deviceName (native-module/get-installation-name)
|
||||
:rootDataDir (native-module/backup-disabled-data-dir)
|
||||
:rootKeystoreDir (native-module/keystore-dir)
|
||||
:logLevel (when log-enabled? config/log-level)
|
||||
:logEnabled log-enabled?
|
||||
:logFilePath (native-module/log-file-directory)
|
||||
:verifyTransactionURL config/verify-transaction-url
|
||||
:verifyENSURL config/verify-ens-url
|
||||
:verifyENSContractAddress config/verify-ens-contract-address
|
||||
:verifyTransactionChainID config/verify-transaction-chain-id
|
||||
:wakuV2LightClient true
|
||||
:wakuV2Fleet config/fleet
|
||||
;; NOTE: https://github.com/status-im/status-go/pull/5570#discussion_r1690794119
|
||||
:wakuV2EnableMissingMessageVerification true
|
||||
:wakuV2EnableStoreConfirmationForMessagesSent false
|
||||
:previewPrivacy config/blank-preview?
|
||||
:testNetworksEnabled config/test-networks-enabled?)))
|
||||
|
||||
(defn strip-file-prefix
|
||||
[path]
|
||||
|
||||
@@ -8,10 +8,7 @@
|
||||
(fn [[key-uid hashed-password]]
|
||||
;;"node.login" signal will be triggered as a callback
|
||||
(native-module/login-account
|
||||
(assoc (merge (profile.config/login)
|
||||
(profile.config/fix-node-config-migration))
|
||||
:keyUid key-uid
|
||||
:password hashed-password))))
|
||||
(assoc (profile.config/login) :keyUid key-uid :password hashed-password))))
|
||||
|
||||
(rf/reg-fx :effects.profile/enable-local-notifications
|
||||
(fn []
|
||||
|
||||
@@ -26,22 +26,16 @@
|
||||
|
||||
(rf/reg-event-fx :profile.login/local-paired-user
|
||||
(fn [{:keys [db]}]
|
||||
(let [{:keys [key-uid password keycard-pairing
|
||||
whisper-private-key]} (get-in db [:syncing :profile])
|
||||
login-sha3-password (get-in db [:syncing :login-sha3-password])
|
||||
password (if-not (nil? login-sha3-password) ;; already logged in
|
||||
login-sha3-password
|
||||
password)
|
||||
masked-password (security/mask-data password)]
|
||||
{:db (-> db
|
||||
(assoc-in [:onboarding/profile :password] masked-password)
|
||||
(assoc-in [:onboarding/profile :syncing?] true))
|
||||
:fx [(if keycard-pairing
|
||||
[:effects.keycard/login-with-keycard
|
||||
{:password password
|
||||
:whisper-private-key whisper-private-key
|
||||
:key-uid key-uid}]
|
||||
[:effects.profile/login [key-uid password]])]})))
|
||||
(let [{:keys [key-uid password]} (get-in db [:syncing :profile])
|
||||
login-sha3-password (get-in db [:syncing :login-sha3-password])
|
||||
password (if-not (nil? login-sha3-password) ;; already logged in
|
||||
login-sha3-password
|
||||
password)
|
||||
masked-password (security/mask-data password)]
|
||||
{:db (-> db
|
||||
(assoc-in [:onboarding/profile :password] masked-password)
|
||||
(assoc-in [:onboarding/profile :syncing?] true))
|
||||
:effects.profile/login [key-uid password]})))
|
||||
|
||||
;; login phase 1: we want to load and show chats faster, so we split login into 2 phases
|
||||
(rf/reg-event-fx :profile.login/login-existing-profile
|
||||
|
||||
+7
-9
@@ -15,8 +15,7 @@
|
||||
|
||||
(defn- navigate-back
|
||||
[]
|
||||
(rf/dispatch [:app/finish-use-case :uc-add-saved-address])
|
||||
#_(rf/dispatch [:navigate-back]))
|
||||
(rf/dispatch [:navigate-back]))
|
||||
|
||||
(defn- validate-input
|
||||
[account-addresses saved-addresses user-input]
|
||||
@@ -145,9 +144,9 @@
|
||||
on-change-text (rn/use-callback
|
||||
(fn [new-value]
|
||||
(let [trimmed-value (string/trim new-value)]
|
||||
(set-error (validate (string/lower-case trimmed-value)))
|
||||
(set-address-or-ens trimmed-value)
|
||||
(set-ens-address "")
|
||||
(set-error (validate (string/lower-case trimmed-value)))
|
||||
(when (validation/ens-name? trimmed-value)
|
||||
(debounce/debounce-and-dispatch
|
||||
[:wallet/resolve-ens
|
||||
@@ -165,16 +164,15 @@
|
||||
on-press-continue (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch
|
||||
[:open-modal :screen/settings.save-address
|
||||
[:wallet/set-address-to-save
|
||||
{:address address
|
||||
:ens (when ens-name? address-or-ens)
|
||||
:ens? ens-name?}]))
|
||||
:ens? ens-name?}])
|
||||
(rf/dispatch
|
||||
[:open-modal :screen/settings.save-address]))
|
||||
[address ens-name? address-or-ens])]
|
||||
(rn/use-unmount #(rf/dispatch [:wallet/clean-scanned-address]))
|
||||
#_(rn/use-effect (fn []
|
||||
(when (rf/sub [:app/use-case-active? :uc-add-saved-addresses])
|
||||
(rf/dispatch [:navigate-back])))
|
||||
[(rf/sub [:app/use-case-active? :uc-add-saved-addresses])])
|
||||
(rn/use-mount #(rf/dispatch [:wallet/clear-address-to-save]))
|
||||
[quo/overlay {:type :shell}
|
||||
[floating-button-page/view
|
||||
{:footer-container-padding 0
|
||||
|
||||
@@ -5,97 +5,152 @@
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(rf/reg-event-fx :app/save-address
|
||||
(fn [{:keys [db]}
|
||||
[{:keys [address name customization-color ens edit?]}]]
|
||||
(let [on-success (if edit?
|
||||
[:wallet/edit-saved-address-success]
|
||||
[:wallet/add-saved-address-success])
|
||||
test-networks-enabled? (boolean (get-in db [:profile/profile :test-networks-enabled?]))
|
||||
address-to-save {:address address
|
||||
:name name
|
||||
:colorId customization-color
|
||||
:ens ens
|
||||
:isTest test-networks-enabled?}]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_upsertSavedAddress"
|
||||
:params [address-to-save]
|
||||
:on-success on-success
|
||||
:on-error [:wallet/add-saved-address-failed]}]]]})))
|
||||
(defn save-address
|
||||
[{:keys [db]}
|
||||
[{:keys [address name customization-color on-success on-error ens]}]]
|
||||
(let [test-networks-enabled? (boolean (get-in db [:profile/profile :test-networks-enabled?]))
|
||||
address-to-save {:address address
|
||||
:name name
|
||||
:colorId customization-color
|
||||
:ens ens
|
||||
:isTest test-networks-enabled?}]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_upsertSavedAddress"
|
||||
:params [address-to-save]
|
||||
:on-success on-success
|
||||
:on-error on-error}]]]}))
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address-success
|
||||
(fn [{:keys [db]} [{:keys [address test-networks-enabled? toast-message]}]]
|
||||
(let [db-key (if test-networks-enabled? :test :prod)
|
||||
saved-address (get-in db [:wallet :saved-addresses db-key address])]
|
||||
{:fx [[:dispatch [:domain/reconcile-saved-addresses [(assoc saved-address :removed? true)]]]
|
||||
[:dispatch [:hide-bottom-sheet]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text toast-message}]}]]})))
|
||||
(rf/reg-event-fx :wallet/save-address save-address)
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address-failed
|
||||
(fn [_ [error]]
|
||||
{:fx [[:dispatch [:hide-bottom-sheet]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :negative
|
||||
:theme :dark
|
||||
:text error}]}]]}))
|
||||
(defn- update-saved-addresses
|
||||
[saved-addresses-db new-saved-addresses]
|
||||
(reduce
|
||||
(fn [acc {:keys [address removed? test?] :as saved-address}]
|
||||
(let [db-key (if test? :test :prod)]
|
||||
(if removed?
|
||||
(update acc db-key dissoc address)
|
||||
(assoc-in acc [db-key address] saved-address))))
|
||||
(or saved-addresses-db
|
||||
{:test {}
|
||||
:prod {}})
|
||||
new-saved-addresses))
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address
|
||||
(fn [{:keys [db]} [{:keys [address toast-message]}]]
|
||||
(let [test-networks-enabled? (boolean (get-in db [:profile/profile :test-networks-enabled?]))]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_deleteSavedAddress"
|
||||
:params [address test-networks-enabled?]
|
||||
:on-success [:wallet/delete-saved-address-success
|
||||
{:address address
|
||||
:test-networks-enabled? test-networks-enabled?
|
||||
:toast-message toast-message}]
|
||||
:on-error [:wallet/delete-saved-address-failed]}]]]})))
|
||||
(defn reconcile-saved-addresses
|
||||
[{:keys [db]} [saved-addresses]]
|
||||
{:db (update-in db [:wallet :saved-addresses] update-saved-addresses saved-addresses)})
|
||||
|
||||
(rf/reg-event-fx :wallet/add-saved-address-success
|
||||
(fn [_]
|
||||
{:fx [[:dispatch [:infra/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.add-address-to-save]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.save-address]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text (i18n/label :t/address-saved)}]}]]}))
|
||||
(rf/reg-event-fx :wallet/reconcile-saved-addresses reconcile-saved-addresses)
|
||||
|
||||
(rf/reg-event-fx :wallet/edit-saved-address-success
|
||||
(fn [_]
|
||||
{:fx [[:dispatch [:infra/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.edit-saved-address]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text (i18n/label :t/address-edited)}]}]]}))
|
||||
(defn get-saved-addresses-success
|
||||
[_ [raw-saved-addresses]]
|
||||
(let [saved-addresses (data-store/rpc->saved-addresses raw-saved-addresses)]
|
||||
{:fx [[:dispatch [:wallet/reconcile-saved-addresses saved-addresses]]]}))
|
||||
|
||||
(rf/reg-event-fx :wallet/get-saved-addresses-success get-saved-addresses-success)
|
||||
|
||||
(rf/reg-event-fx :wallet/add-saved-address-failed
|
||||
(fn [_ [error]]
|
||||
{:fx [[:dispatch [:infra/saved-addresses-rpc-error :add-save-address error]]
|
||||
[:dispatch
|
||||
[:toasts/upsert
|
||||
{:type :negative
|
||||
:theme :dark
|
||||
:text error}]]]}))
|
||||
(defn saved-addresses-rpc-error
|
||||
[_ [action error]]
|
||||
(log/warn (str "[wallet] [saved-addresses] Failed to " action)
|
||||
{:error error}))
|
||||
|
||||
(rf/reg-event-fx :wallet/check-remaining-capacity-for-saved-addresses
|
||||
(fn [{:keys [db]} [{:keys [on-success on-error]}]]
|
||||
(let [test-networks-enabled? (boolean (get-in db [:profile/profile :test-networks-enabled?]))]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_remainingCapacityForSavedAddresses"
|
||||
:params [test-networks-enabled?]
|
||||
:on-success on-success
|
||||
:on-error on-error}]]]})))
|
||||
(rf/reg-event-fx :wallet/saved-addresses-rpc-error saved-addresses-rpc-error)
|
||||
|
||||
(defn get-saved-addresses
|
||||
[_]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_getSavedAddresses"
|
||||
:on-success [:wallet/get-saved-addresses-success]
|
||||
:on-error [:wallet/saved-addresses-rpc-error :get-saved-addresses]}]]]})
|
||||
|
||||
(rf/reg-event-fx :wallet/get-saved-addresses get-saved-addresses)
|
||||
|
||||
(defn delete-saved-address-success
|
||||
[{:keys [db]} [{:keys [address test-networks-enabled? toast-message]}]]
|
||||
(let [db-key (if test-networks-enabled? :test :prod)
|
||||
saved-address (get-in db [:wallet :saved-addresses db-key address])]
|
||||
{:fx [[:dispatch [:wallet/reconcile-saved-addresses [(assoc saved-address :removed? true)]]]
|
||||
[:dispatch [:hide-bottom-sheet]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text toast-message}]}]]}))
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address-success delete-saved-address-success)
|
||||
|
||||
(defn delete-saved-address-failed
|
||||
[_ [error]]
|
||||
{:fx [[:dispatch [:hide-bottom-sheet]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :negative
|
||||
:theme :dark
|
||||
:text error}]}]]})
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address-failed delete-saved-address-failed)
|
||||
|
||||
(defn delete-saved-address
|
||||
[{:keys [db]} [{:keys [address toast-message]}]]
|
||||
(let [test-networks-enabled? (boolean (get-in db [:profile/profile :test-networks-enabled?]))]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_deleteSavedAddress"
|
||||
:params [address test-networks-enabled?]
|
||||
:on-success [:wallet/delete-saved-address-success
|
||||
{:address address
|
||||
:test-networks-enabled? test-networks-enabled?
|
||||
:toast-message toast-message}]
|
||||
:on-error [:wallet/delete-saved-address-failed]}]]]}))
|
||||
|
||||
(rf/reg-event-fx :wallet/delete-saved-address delete-saved-address)
|
||||
|
||||
(defn add-saved-address-success
|
||||
[_ [toast-message]]
|
||||
{:fx [[:dispatch [:wallet/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.add-address-to-save]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.save-address]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text toast-message}]}]]})
|
||||
|
||||
(rf/reg-event-fx :wallet/add-saved-address-success add-saved-address-success)
|
||||
|
||||
(defn edit-saved-address-success
|
||||
[_]
|
||||
{:fx [[:dispatch [:wallet/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.edit-saved-address]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:toasts/upsert
|
||||
{:type :positive
|
||||
:theme :dark
|
||||
:text (i18n/label :t/address-edited)}]}]]})
|
||||
|
||||
(rf/reg-event-fx :wallet/edit-saved-address-success edit-saved-address-success)
|
||||
|
||||
(defn add-saved-address-failed
|
||||
[_ [error]]
|
||||
{:fx [[:dispatch [:wallet/saved-addresses-rpc-error :add-save-address error]]
|
||||
[:dispatch
|
||||
[:toasts/upsert
|
||||
{:type :negative
|
||||
:theme :dark
|
||||
:text error}]]]})
|
||||
|
||||
(rf/reg-event-fx :wallet/add-saved-address-failed add-saved-address-failed)
|
||||
|
||||
(defn set-address-to-save
|
||||
[{:keys [db]} [args]]
|
||||
{:db (assoc-in db [:wallet :ui :saved-address] args)})
|
||||
|
||||
(rf/reg-event-fx :wallet/set-address-to-save set-address-to-save)
|
||||
|
||||
(defn clear-address-to-save
|
||||
[{:keys [db]}]
|
||||
{:db (update-in db [:wallet :ui] dissoc :saved-address)})
|
||||
|
||||
(rf/reg-event-fx :wallet/clear-address-to-save clear-address-to-save)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
result-fx (:fx effects)
|
||||
expected-fx [[:json-rpc/call
|
||||
[{:method "wakuext_getSavedAddresses"
|
||||
:on-success [:infra/convert-saved-addresses]
|
||||
:on-success [:wallet/get-saved-addresses-success]
|
||||
:on-error [:wallet/saved-addresses-rpc-error :get-saved-addresses]}]]]]
|
||||
(is (match? expected-fx result-fx)))))
|
||||
|
||||
@@ -56,10 +56,10 @@
|
||||
(deftest get-saved-addresses-success-test
|
||||
(let [cofx {:db {}}
|
||||
raw-saved-addresses [saved-address-rpc-1]
|
||||
effects (events/convert-saved-addresses cofx [raw-saved-addresses])
|
||||
effects (events/get-saved-addresses-success cofx [raw-saved-addresses])
|
||||
saved-addresses (data-store/rpc->saved-addresses raw-saved-addresses)
|
||||
result-fx (:fx effects)
|
||||
expected-fx [[:dispatch [:domain/reconcile-saved-addresses saved-addresses]]]]
|
||||
expected-fx [[:dispatch [:wallet/reconcile-saved-addresses saved-addresses]]]]
|
||||
(is (match? expected-fx result-fx))))
|
||||
|
||||
(deftest reconcile-saved-addresses-test
|
||||
@@ -220,7 +220,7 @@
|
||||
toast-message "Address saved"
|
||||
effects (events/add-saved-address-success cofx [toast-message])
|
||||
result-fx (:fx effects)
|
||||
expected-fx [[:dispatch [:infra/get-saved-addresses]]
|
||||
expected-fx [[:dispatch [:wallet/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.add-address-to-save]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.save-address]]
|
||||
[:dispatch-later
|
||||
@@ -238,7 +238,7 @@
|
||||
toast-message "Address edited"
|
||||
effects (events/edit-saved-address-success cofx)
|
||||
result-fx (:fx effects)
|
||||
expected-fx [[:dispatch [:infra/get-saved-addresses]]
|
||||
expected-fx [[:dispatch [:wallet/get-saved-addresses]]
|
||||
[:dispatch [:dismiss-modal :screen/settings.edit-saved-address]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
|
||||
@@ -17,42 +17,50 @@
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [{:keys [address name customization-color ens
|
||||
ens? edit?]} (rf/sub [:get-screen-params])
|
||||
(let [{:keys [edit?]} (rf/sub [:get-screen-params])
|
||||
{:keys [address name customization-color ens ens?]}
|
||||
(rf/sub [:wallet/saved-address])
|
||||
[address-label set-address-label] (rn/use-state (or name ""))
|
||||
[address-color set-address-color] (rn/use-state (or customization-color
|
||||
(rand-nth colors/account-colors)))
|
||||
placeholder (i18n/label :t/address-name)
|
||||
address-text (rn/use-callback
|
||||
(fn []
|
||||
[quo/address-text
|
||||
{:full-address? true
|
||||
:address address
|
||||
:format :long}])
|
||||
[address])
|
||||
on-press-save (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:app/save-address
|
||||
{:edit? edit?
|
||||
:name address-label
|
||||
:ens (when ens? ens)
|
||||
:address address
|
||||
:customization-color address-color}]))
|
||||
[address address-label
|
||||
address-color])
|
||||
data-item-props (rn/use-memo
|
||||
#(cond-> {:status :default
|
||||
:size :default
|
||||
:subtitle-type :default
|
||||
:blur? true
|
||||
:card? true
|
||||
:title (i18n/label :t/address)
|
||||
:subtitle ens
|
||||
:custom-subtitle address-text
|
||||
:container-style style/data-item}
|
||||
ens?
|
||||
(dissoc :custom-subtitle))
|
||||
[ens ens? address-text])]
|
||||
placeholder (i18n/label :t/address-name)
|
||||
address-text (rn/use-callback
|
||||
(fn []
|
||||
[quo/address-text
|
||||
{:full-address? true
|
||||
:address address
|
||||
:format :long}])
|
||||
[address])
|
||||
on-press-save (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:wallet/save-address
|
||||
{:on-success
|
||||
(if edit?
|
||||
[:wallet/edit-saved-address-success]
|
||||
[:wallet/add-saved-address-success
|
||||
(i18n/label :t/address-saved)])
|
||||
:on-error
|
||||
[:wallet/add-saved-address-failed]
|
||||
:name address-label
|
||||
:ens (when ens? ens)
|
||||
:address address
|
||||
:customization-color address-color}]))
|
||||
[address address-label
|
||||
address-color])
|
||||
data-item-props (rn/use-memo
|
||||
#(cond-> {:status :default
|
||||
:size :default
|
||||
:subtitle-type :default
|
||||
:label :none
|
||||
:blur? true
|
||||
:card? true
|
||||
:title (i18n/label :t/address)
|
||||
:subtitle ens
|
||||
:custom-subtitle address-text
|
||||
:container-style style/data-item}
|
||||
ens?
|
||||
(dissoc :custom-subtitle))
|
||||
[ens ens? address-text])]
|
||||
[quo/overlay {:type :shell}
|
||||
[floating-button-page/view
|
||||
{:footer-container-padding (if edit? (+ (safe-area/get-bottom) 12) 0)
|
||||
|
||||
+8
-9
@@ -9,7 +9,7 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn view
|
||||
[{:keys [name address customization-color] :as address-details}]
|
||||
[{:keys [name address customization-color] :as opts}]
|
||||
(let [open-send-flow (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:wallet/init-send-flow-for-address
|
||||
@@ -62,20 +62,19 @@
|
||||
{:theme :dark
|
||||
:shell? true
|
||||
:content (fn []
|
||||
[remove-address/view address-details])}])
|
||||
[address-details])
|
||||
[remove-address/view opts])}])
|
||||
[opts])
|
||||
open-show-address-qr (rn/use-callback
|
||||
#(rf/dispatch [:open-modal
|
||||
:screen/settings.share-saved-address
|
||||
address-details])
|
||||
[address-details])
|
||||
:screen/settings.share-saved-address opts])
|
||||
[opts])
|
||||
open-edit-saved-address (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:wallet/set-address-to-save opts])
|
||||
(rf/dispatch [:open-modal
|
||||
:screen/settings.edit-saved-address
|
||||
(merge {:edit? true}
|
||||
address-details)]))
|
||||
[address-details])]
|
||||
{:edit? true}]))
|
||||
[opts])]
|
||||
[quo/action-drawer
|
||||
[[{:icon :i/arrow-up
|
||||
:label (i18n/label :t/send-to-user {:user name})
|
||||
|
||||
@@ -99,20 +99,11 @@
|
||||
|
||||
(defn- navigate-back
|
||||
[]
|
||||
(rf/dispatch [:app/finish-use-case :uc-view-saved-addresses])
|
||||
#_(rf/dispatch [:navigate-back]))
|
||||
(rf/dispatch [:navigate-back]))
|
||||
|
||||
(defn- add-address-to-save
|
||||
[]
|
||||
(rf/dispatch [:wallet/check-remaining-capacity-for-saved-addresses
|
||||
{:on-success (fn []
|
||||
(rf/dispatch [:app/start-use-case :uc-add-saved-address])
|
||||
#_(rf/dispatch [:open-modal :screen/settings.add-address-to-save]))
|
||||
:on-error #(rf/dispatch [:toasts/upsert
|
||||
{:type :negative
|
||||
:theme :dark
|
||||
:text (i18n/label
|
||||
:t/saved-addresses-limit-reached-toast)}])}]))
|
||||
(rf/dispatch [:open-modal :screen/settings.add-address-to-save]))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
@@ -154,10 +145,6 @@
|
||||
:on-clear on-clear-input
|
||||
:customization-color customization-color}))
|
||||
[has-saved-addresses? customization-color search-text])]
|
||||
#_(rn/use-effect (fn []
|
||||
(when (rf/sub [:app/use-case-active? :uc-view-saved-addresses])
|
||||
(rf/dispatch [:navigate-back])))
|
||||
[(rf/sub [:app/use-case-active? :uc-view-saved-addresses])])
|
||||
[quo/overlay
|
||||
{:type :shell
|
||||
:top-inset? true}
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
|
||||
(defn open-saved-addresses-settings-modal
|
||||
[]
|
||||
(rf/dispatch [:app/start-use-case :uc-view-saved-addresses])
|
||||
#_(rf/dispatch [:open-modal :screen/settings.saved-addresses]))
|
||||
(rf/dispatch [:open-modal :screen/settings.saved-addresses]))
|
||||
|
||||
(defn open-keypairs-and-accounts-settings-modal
|
||||
[]
|
||||
|
||||
+3
-7
@@ -64,7 +64,7 @@
|
||||
[button (assoc params :word (second options))]])
|
||||
|
||||
(defn- complete-backup-sheet
|
||||
[on-success on-try-again]
|
||||
[on-success]
|
||||
(let [customization-color (rf/sub [:profile/customization-color])
|
||||
[checked? set-checked] (rn/use-state false)]
|
||||
[:<>
|
||||
@@ -88,10 +88,7 @@
|
||||
:button-two-label (i18n/label :t/cancel)
|
||||
:button-two-props {:type :grey
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:hide-bottom-sheet])
|
||||
(when on-try-again
|
||||
(rf/dispatch [:navigate-back])
|
||||
(on-try-again)))}}]]))
|
||||
(rf/dispatch [:hide-bottom-sheet]))}}]]))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
@@ -126,8 +123,7 @@
|
||||
{:theme theme
|
||||
:shell? shell?
|
||||
:content (fn [] [complete-backup-sheet
|
||||
on-success
|
||||
on-try-again])}])))
|
||||
on-success])}])))
|
||||
(do
|
||||
(when (> @incorrect-count 0)
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
|
||||
@@ -35,12 +35,13 @@
|
||||
chain-ids (chain/chain-ids db)
|
||||
params [[address] chain-ids (create-default-filters) limit-per-request]]
|
||||
{:db (-> db
|
||||
(update-in [:wallet :activities] dissoc address)
|
||||
(update-in [:wallet :ui :activity-tab :request] dissoc :request-id)
|
||||
(update-in [:wallet :ui :activity-tab :request]
|
||||
assoc
|
||||
:address address
|
||||
:loading? true
|
||||
:remove-all-previous-activites? true))
|
||||
:address address
|
||||
:loading? true
|
||||
:initial-request? true))
|
||||
:fx [[:json-rpc/call
|
||||
[{:method "wallet_startActivityFilterSessionV2"
|
||||
:params params
|
||||
@@ -68,8 +69,7 @@
|
||||
has-more? (get-in db [:wallet :ui :activity-tab :request :has-more?])
|
||||
params [session-id limit-per-request]]
|
||||
(when (and session-id has-more?)
|
||||
{:db (assoc-in db [:wallet :ui :activity-tab :request :remove-all-existing-activities?] false)
|
||||
:fx [[:json-rpc/call
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wallet_getMoreForActivityFilterSession"
|
||||
:params params
|
||||
:on-error [:wallet/log-rpc-error
|
||||
@@ -80,7 +80,7 @@
|
||||
:wallet/reset-activities-filter-session
|
||||
(fn [{:keys [db]}]
|
||||
(when-let [session-id (get-in db [:wallet :ui :activity-tab :request :request-id])]
|
||||
{:db (assoc-in db [:wallet :ui :activity-tab :request :remove-all-existing-activities?] true)
|
||||
{:db (assoc-in db [:wallet :ui :activity-tab :request :initial-request?] true)
|
||||
:fx [[:json-rpc/call
|
||||
[{:method "wallet_resetActivityFilterSession"
|
||||
:params [session-id limit-per-request]
|
||||
@@ -91,22 +91,21 @@
|
||||
(rf/reg-event-fx
|
||||
:wallet/activity-filtering-for-current-account-done
|
||||
(fn [{:keys [db]} [{:keys [message]}]]
|
||||
(let [{:keys [address
|
||||
remove-all-existing-activities?]} (get-in db [:wallet :ui :activity-tab :request])
|
||||
{:keys [activities offset hasMore]} (transforms/json->clj message)
|
||||
new-activities (->> activities
|
||||
(cske/transform-keys
|
||||
transforms/->kebab-case-keyword)
|
||||
(collection/index-by :key))
|
||||
existing-activities (get-in db [:wallet :activities address])
|
||||
updated-activities (if remove-all-existing-activities?
|
||||
new-activities
|
||||
(nested-merge existing-activities new-activities))]
|
||||
(let [{:keys [address initial-request?]} (get-in db [:wallet :ui :activity-tab :request])
|
||||
{:keys [activities offset hasMore]} (transforms/json->clj message)
|
||||
new-activities (->> activities
|
||||
(cske/transform-keys transforms/->kebab-case-keyword)
|
||||
(collection/index-by :key))
|
||||
existing-activities (get-in db [:wallet :activities address])
|
||||
updated-activities (if initial-request?
|
||||
new-activities
|
||||
(nested-merge existing-activities new-activities))]
|
||||
{:db (-> db
|
||||
(assoc-in [:wallet :activities address] updated-activities)
|
||||
(assoc-in [:wallet :ui :activity-tab :request :offset] offset)
|
||||
(assoc-in [:wallet :ui :activity-tab :request :has-more?] hasMore)
|
||||
(assoc-in [:wallet :ui :activity-tab :request :loading?] false))})))
|
||||
(assoc-in [:wallet :ui :activity-tab :request :loading?] false)
|
||||
(assoc-in [:wallet :ui :activity-tab :request :initial-request?] false))})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/activities-filtering-entries-updated
|
||||
|
||||
@@ -31,20 +31,11 @@
|
||||
on-end-reached (rn/use-callback
|
||||
#(rf/dispatch
|
||||
[:wallet/get-more-for-activities-filter-session]))]
|
||||
(cond
|
||||
(and (empty? activity-list) loading?)
|
||||
[quo/skeleton-list
|
||||
{:content :messages
|
||||
:parent-height (:height (rn/get-window))
|
||||
:animated? false}]
|
||||
|
||||
(and (empty? activity-list) (false? loading?))
|
||||
(if (and (and (some? loading?) (false? loading?)) (empty? activity-list))
|
||||
[empty-tab/view
|
||||
{:title (i18n/label :t/no-activity)
|
||||
:description (i18n/label :t/empty-tab-description)
|
||||
:image (resources/get-themed-image :no-activity theme)}]
|
||||
|
||||
:else
|
||||
[rn/section-list
|
||||
{:sections activity-list
|
||||
:sticky-section-headers-enabled false
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
[clojure.string :as string]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.collectible.utils :as collectible-utils]
|
||||
[status-im.contexts.wallet.common.utils.networks :as network-utils]
|
||||
[status-im.contexts.wallet.send.utils :as send-utils]
|
||||
[utils.collection :as utils.collection]
|
||||
[utils.money :as money]
|
||||
@@ -162,7 +163,28 @@
|
||||
(->> (map rpc->keypair keypairs)
|
||||
(sort-by #(if (= (:type %) :profile) 0 1))))
|
||||
|
||||
(defn- add-keys-to-saved-address
|
||||
[saved-address]
|
||||
(-> saved-address
|
||||
(assoc :network-preferences-names
|
||||
(network-utils/network-preference-prefix->network-names (:chain-short-names saved-address)))
|
||||
(assoc :ens? (not (string/blank? (:ens saved-address))))))
|
||||
|
||||
(defn rpc->saved-address
|
||||
[saved-address]
|
||||
(-> saved-address
|
||||
(set/rename-keys {:chainShortNames :chain-short-names
|
||||
:isTest :test?
|
||||
:createdAt :created-at
|
||||
:colorId :customization-color
|
||||
:mixedcaseAddress :mixedcase-address
|
||||
:removed :removed?})
|
||||
(update :customization-color (comp keyword string/lower-case))
|
||||
add-keys-to-saved-address))
|
||||
|
||||
(defn rpc->saved-addresses
|
||||
[saved-addresses]
|
||||
(map rpc->saved-address saved-addresses))
|
||||
|
||||
(defn reconcile-keypairs
|
||||
[keypairs]
|
||||
@@ -209,9 +231,22 @@
|
||||
|
||||
(def ^:private precision 6)
|
||||
|
||||
(defn from-wei
|
||||
[wei-amount]
|
||||
(send-utils/convert-to-gwei wei-amount precision))
|
||||
|
||||
(defn new->old-route-path
|
||||
[new-path]
|
||||
(let [to-bignumber (fn [k] (-> new-path k money/bignumber))]
|
||||
(tap> {:in :new->old-route-path
|
||||
:new-path new-path
|
||||
:suggested-tx-nonce (-> new-path
|
||||
:suggested-tx-nonce
|
||||
money/from-hex
|
||||
money/to-string
|
||||
js/parseInt)
|
||||
:suggested-tx-gas-amount (:suggested-tx-gas-amount new-path)})
|
||||
(let [to-bignumber (fn [k] (-> new-path k money/bignumber))
|
||||
suggested-levels-for-max-fees-per-gas (:suggested-levels-for-max-fees-per-gas new-path)]
|
||||
{:approval-fee (to-bignumber :approval-fee)
|
||||
:approval-l-1-fee (to-bignumber :approval-l-1-fee)
|
||||
:bonder-fees (to-bignumber :tx-bonder-fees)
|
||||
@@ -220,35 +255,27 @@
|
||||
:amount-in-locked (:amount-in-locked new-path)
|
||||
:amount-in (:amount-in new-path)
|
||||
:max-amount-in (:max-amount-in new-path)
|
||||
:gas-fees {:gas-price "0"
|
||||
:base-fee (send-utils/convert-to-gwei (:tx-base-fee
|
||||
new-path)
|
||||
precision)
|
||||
:max-priority-fee-per-gas (send-utils/convert-to-gwei (:tx-priority-fee
|
||||
new-path)
|
||||
precision)
|
||||
:max-fee-per-gas-low (send-utils/convert-to-gwei
|
||||
(get-in
|
||||
new-path
|
||||
[:suggested-levels-for-max-fees-per-gas
|
||||
:low])
|
||||
precision)
|
||||
:max-fee-per-gas-medium (send-utils/convert-to-gwei
|
||||
(get-in
|
||||
new-path
|
||||
[:suggested-levels-for-max-fees-per-gas
|
||||
:medium])
|
||||
precision)
|
||||
:max-fee-per-gas-high (send-utils/convert-to-gwei
|
||||
(get-in
|
||||
new-path
|
||||
[:suggested-levels-for-max-fees-per-gas
|
||||
:high])
|
||||
precision)
|
||||
:l-1-gas-fee (send-utils/convert-to-gwei (:tx-l-1-fee
|
||||
new-path)
|
||||
precision)
|
||||
:eip-1559-enabled true}
|
||||
:gas-fees {:gas-price "0"
|
||||
:base-fee (from-wei (:tx-base-fee new-path))
|
||||
:tx-priority-fee (from-wei (:tx-priority-fee new-path))
|
||||
:l-1-gas-fee (from-wei (:tx-l-1-fee new-path))
|
||||
:eip-1559-enabled true
|
||||
:tx-max-fees-per-gas (from-wei (:tx-max-fees-per-gas new-path))
|
||||
:current-base-fee (from-wei (:current-base-fee new-path))
|
||||
:suggested-min-priority-fee (from-wei (:suggested-min-priority-fee
|
||||
new-path))
|
||||
:suggested-max-priority-fee (from-wei (:suggested-max-priority-fee
|
||||
new-path))
|
||||
:suggested-gas-fees-for-setting
|
||||
{:transaction-setting/normal (from-wei
|
||||
(:low
|
||||
suggested-levels-for-max-fees-per-gas))
|
||||
:transaction-setting/fast (from-wei
|
||||
(:medium
|
||||
suggested-levels-for-max-fees-per-gas))
|
||||
:transaction-setting/urgent (from-wei
|
||||
(:high
|
||||
suggested-levels-for-max-fees-per-gas))}}
|
||||
:bridge-name (:processor-name new-path)
|
||||
:amount-out (:amount-out new-path)
|
||||
:approval-contract-address (:approval-contract-address new-path)
|
||||
@@ -256,8 +283,19 @@
|
||||
:estimated-time (:estimated-time new-path)
|
||||
:to (:to-chain new-path)
|
||||
:approval-amount-required (:approval-amount-required new-path)
|
||||
;; :cost () ;; tbd not used on desktop
|
||||
:gas-amount (:tx-gas-amount new-path)}))
|
||||
:gas-amount (:tx-gas-amount new-path)
|
||||
:router-input-params-uuid (:router-input-params-uuid new-path)
|
||||
:nonce (-> new-path
|
||||
:tx-nonce
|
||||
money/from-hex
|
||||
money/to-string
|
||||
js/parseInt)
|
||||
:suggested-tx-nonce (-> new-path
|
||||
:suggested-tx-nonce
|
||||
money/from-hex
|
||||
money/to-string
|
||||
js/parseInt)
|
||||
:suggested-tx-gas-amount (:suggested-tx-gas-amount new-path)}))
|
||||
|
||||
(defn tokens-never-loaded?
|
||||
[db]
|
||||
|
||||
@@ -57,10 +57,11 @@
|
||||
|
||||
(rf/reg-event-fx :wallet/select-account-tab
|
||||
(fn [{:keys [db]} [tab]]
|
||||
{:db (assoc-in db [:wallet :ui :account-page :active-tab] tab)
|
||||
:fx [(if (= tab :activity)
|
||||
[:dispatch [:wallet/fetch-activities-for-current-account]]
|
||||
[:dispatch [:wallet/stop-activity-filter-session]])]}))
|
||||
(let [activity-tab-selected? (= tab :activity)]
|
||||
{:db (assoc-in db [:wallet :ui :account-page :active-tab] tab)
|
||||
:fx [(if activity-tab-selected?
|
||||
[:dispatch [:wallet/fetch-activities-for-current-account]]
|
||||
[:dispatch [:wallet/stop-activity-filter-session]])]})))
|
||||
|
||||
(rf/reg-event-fx :wallet/select-home-tab
|
||||
(fn [{:keys [db]} [tab]]
|
||||
@@ -577,7 +578,7 @@
|
||||
[:dispatch [:wallet/get-ethereum-chains]]
|
||||
[:dispatch [:wallet/get-accounts]]
|
||||
[:dispatch [:wallet/get-keypairs]]
|
||||
[:dispatch [:infra/get-saved-addresses]]
|
||||
[:dispatch [:wallet/get-saved-addresses]]
|
||||
(when (ff/enabled? ::ff/wallet.wallet-connect)
|
||||
[:dispatch-later [{:ms 500 :dispatch [:wallet-connect/init]}]])]}))
|
||||
|
||||
|
||||
@@ -6,10 +6,12 @@
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.common.utils.networks :as network-utils]
|
||||
[status-im.contexts.wallet.data-store :as data-store]
|
||||
[status-im.contexts.wallet.send.transaction-settings.core :as transaction-settings]
|
||||
[status-im.contexts.wallet.send.utils :as send-utils]
|
||||
[status-im.contexts.wallet.sheets.network-selection.view :as network-selection]
|
||||
[taoensso.timbre :as log]
|
||||
[utils.address]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.money :as utils.money]
|
||||
[utils.number]
|
||||
[utils.re-frame :as rf]
|
||||
@@ -90,7 +92,8 @@
|
||||
:receiver-network-values receiver-network-values
|
||||
:network-links network-links
|
||||
:loading-suggested-routes? false
|
||||
:enough-assets? true)}))))
|
||||
:enough-assets? true)
|
||||
:fx [#_[:dispatch [:wallet/clear-user-tx-settings]]]}))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/suggested-routes-error
|
||||
@@ -384,16 +387,100 @@
|
||||
(rf/reg-event-fx
|
||||
:wallet/set-token-amount-to-send
|
||||
(fn [{:keys [db]} [{:keys [amount stack-id start-flow?]}]]
|
||||
{:db (assoc-in db [:wallet :ui :send :amount] amount)
|
||||
:fx [[:dispatch
|
||||
[:wallet/wizard-navigate-forward
|
||||
{:current-screen stack-id
|
||||
:start-flow? start-flow?
|
||||
:flow-id :wallet-send-flow}]]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet.send/auth-slider-completed
|
||||
(fn [{:keys [db]}]
|
||||
(let [last-request-uuid (get-in db [:wallet :ui :send :last-request-uuid])]
|
||||
{:db (-> db
|
||||
(assoc-in [:wallet :ui :send :amount] amount)
|
||||
(update-in [:wallet :ui :send] dissoc :transaction-for-signing))
|
||||
{:db (update-in db [:wallet :ui :send] dissoc :transaction-for-signing)
|
||||
:fx [[:dispatch [:wallet/build-transactions-from-route {:request-uuid last-request-uuid}]]
|
||||
[:dispatch
|
||||
[:wallet/wizard-navigate-forward
|
||||
{:current-screen stack-id
|
||||
:start-flow? start-flow?
|
||||
:flow-id :wallet-send-flow}]]]})))
|
||||
[:wallet.send/set-sign-transactions-callback-fx
|
||||
[:dispatch
|
||||
[:wallet/prepare-signatures-for-transactions :send]]]]]})))
|
||||
|
||||
(defn log-transaction-signature-error
|
||||
[error]
|
||||
(log/error
|
||||
"failed to prepare signatures for transactions"
|
||||
{:event :wallet/prepare-signatures-for-transactions
|
||||
:error error})
|
||||
(rf/dispatch
|
||||
[:toasts/upsert
|
||||
{:id :prepare-signatures-for-transactions-error
|
||||
:type :negative
|
||||
:text (:message error)}]))
|
||||
|
||||
(defn- send-transactions-with-signatures
|
||||
[tx-type signatures]
|
||||
(rf/dispatch
|
||||
[:wallet/send-router-transactions-with-signatures tx-type
|
||||
signatures]))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/send-router-transactions-with-signatures
|
||||
(fn [{:keys [db]} [tx-type signatures]]
|
||||
(let [transaction-for-signing (get-in db [:wallet :ui tx-type :transaction-for-signing])
|
||||
signatures-map (reduce (fn [acc {:keys [message signature]}]
|
||||
(assoc acc
|
||||
message
|
||||
(send-utils/signature-rsv signature)))
|
||||
{}
|
||||
signatures)]
|
||||
{:json-rpc/call [{:method "wallet_sendRouterTransactionsWithSignatures"
|
||||
:params [{:uuid (get-in transaction-for-signing [:sendDetails :uuid])
|
||||
:signatures signatures-map}]
|
||||
:on-success (fn []
|
||||
(rf/dispatch [:hide-bottom-sheet]))
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to send router transactions with signatures"
|
||||
{:event :wallet/send-router-transactions-with-signatures
|
||||
:error error})
|
||||
(rf/dispatch [:toasts/upsert
|
||||
{:id :send-router-transactions-with-signatures-error
|
||||
:type :negative
|
||||
:text (:message error)}]))}]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/prepare-signatures-for-transactions
|
||||
(fn [{:keys [db]} [tx-type]]
|
||||
(let [transaction-for-signing (get-in db
|
||||
[:wallet :ui tx-type :transaction-for-signing])
|
||||
signing-details (:signingDetails transaction-for-signing)
|
||||
{:keys [hashes address signOnKeycard]} signing-details
|
||||
send-tx-fn (partial send-transactions-with-signatures tx-type)]
|
||||
(if signOnKeycard
|
||||
{:fx [[:dispatch
|
||||
[:standard-auth/authorize-with-keycard
|
||||
{:on-complete (fn [pin]
|
||||
(rf/dispatch [:keycard/connect-and-sign-hashes
|
||||
{:keycard-pin pin
|
||||
:address address
|
||||
:hashes hashes
|
||||
:on-success send-tx-fn
|
||||
:on-failure log-transaction-signature-error}]))}]]]}
|
||||
{:fx [[:dispatch
|
||||
[:standard-auth/authorize
|
||||
{:on-auth-success (fn [sha3-pwd]
|
||||
(rf/dispatch [:wallet/standard-auth-autorization-success hashes
|
||||
address sha3-pwd send-tx-fn]))
|
||||
:auth-button-label (i18n/label :t/confirm)}]]]}))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/standard-auth-autorization-success
|
||||
(fn [_ [hashes address sha3-pwd send-tx-fn]]
|
||||
{:fx [[:effects.wallet/sign-transaction-hashes
|
||||
{:hashes hashes
|
||||
:address address
|
||||
:password (security/safe-unmask-data sha3-pwd)
|
||||
:on-success send-tx-fn
|
||||
:on-error log-transaction-signature-error}]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/build-transaction-for-collectible-route
|
||||
@@ -409,16 +496,14 @@
|
||||
(rf/reg-event-fx
|
||||
:wallet/set-token-amount-to-bridge
|
||||
(fn [{:keys [db]} [{:keys [amount stack-id start-flow?]}]]
|
||||
(let [last-request-uuid (get-in db [:wallet :ui :send :last-request-uuid])]
|
||||
{:db (-> db
|
||||
(assoc-in [:wallet :ui :send :amount] amount)
|
||||
(update-in [:wallet :ui :send] dissoc :transaction-for-signing))
|
||||
:fx [[:dispatch [:wallet/build-transactions-from-route {:request-uuid last-request-uuid}]]
|
||||
[:dispatch
|
||||
[:wallet/wizard-navigate-forward
|
||||
{:current-screen stack-id
|
||||
:start-flow? start-flow?
|
||||
:flow-id :wallet-bridge-flow}]]]})))
|
||||
{:db (-> db
|
||||
(assoc-in [:wallet :ui :send :amount] amount)
|
||||
(update-in [:wallet :ui :send] dissoc :transaction-for-signing))
|
||||
:fx [[:dispatch
|
||||
[:wallet/wizard-navigate-forward
|
||||
{:current-screen stack-id
|
||||
:start-flow? start-flow?
|
||||
:flow-id :wallet-bridge-flow}]]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/clean-bridge-to-selection
|
||||
@@ -669,66 +754,6 @@
|
||||
:type :negative
|
||||
:text (:message error)}]))}]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/prepare-signatures-for-transactions
|
||||
(fn [{:keys [db]} [type sha3-pwd]]
|
||||
(let [{:keys [hashes address signOnKeycard]} (get-in db
|
||||
[:wallet :ui type :transaction-for-signing
|
||||
:signingDetails])
|
||||
on-success (fn [signatures]
|
||||
(rf/dispatch
|
||||
[:wallet/send-router-transactions-with-signatures type
|
||||
signatures]))
|
||||
on-error (fn [error]
|
||||
(log/error
|
||||
"failed to prepare signatures for transactions"
|
||||
{:event :wallet/prepare-signatures-for-transactions
|
||||
:error error})
|
||||
(rf/dispatch
|
||||
[:toasts/upsert
|
||||
{:id :prepare-signatures-for-transactions-error
|
||||
:type :negative
|
||||
:text (:message error)}]))]
|
||||
(if signOnKeycard
|
||||
{:fx [[:dispatch
|
||||
[:standard-auth/authorize-with-keycard
|
||||
{:on-complete #(rf/dispatch [:keycard/connect-and-sign-hashes
|
||||
{:keycard-pin %
|
||||
:address address
|
||||
:hashes hashes
|
||||
:on-success on-success
|
||||
:on-failure on-error}])}]]]}
|
||||
{:fx [[:effects.wallet/sign-transaction-hashes
|
||||
{:hashes hashes
|
||||
:address address
|
||||
:password (security/safe-unmask-data sha3-pwd)
|
||||
:on-success on-success
|
||||
:on-error on-error}]]}))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/send-router-transactions-with-signatures
|
||||
(fn [{:keys [db]} [type signatures]]
|
||||
(let [transaction-for-signing (get-in db [:wallet :ui type :transaction-for-signing])
|
||||
signatures-map (reduce (fn [acc {:keys [message signature]}]
|
||||
(assoc acc
|
||||
message
|
||||
(send-utils/signature-rsv signature)))
|
||||
{}
|
||||
signatures)]
|
||||
{:json-rpc/call [{:method "wallet_sendRouterTransactionsWithSignatures"
|
||||
:params [{:uuid (get-in transaction-for-signing [:sendDetails :uuid])
|
||||
:signatures signatures-map}]
|
||||
:on-success (fn []
|
||||
(rf/dispatch [:hide-bottom-sheet]))
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to send router transactions with signatures"
|
||||
{:event :wallet/send-router-transactions-with-signatures
|
||||
:error error})
|
||||
(rf/dispatch [:toasts/upsert
|
||||
{:id :send-router-transactions-with-signatures-error
|
||||
:type :negative
|
||||
:text (:message error)}]))}]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/select-from-account
|
||||
(fn [{db :db} [{:keys [address stack-id network-details network start-flow?] :as params}]]
|
||||
@@ -815,37 +840,68 @@
|
||||
:fx [[:dispatch [:navigate-back]]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/init-tx-settings
|
||||
:wallet/clear-user-tx-settings
|
||||
(fn [{db :db}]
|
||||
{:db (assoc-in db
|
||||
[:wallet :ui :send :tx-settings]
|
||||
{:max-base-fee {:low 5
|
||||
:current 8.2
|
||||
:high 9}
|
||||
:priority-fee {:low 0.6
|
||||
:high 5.1
|
||||
:current 1.1}
|
||||
:max-gas-amount {:low 30000
|
||||
:current 31000}
|
||||
:nonce {:last-transaction 21
|
||||
:current 22}})}))
|
||||
{:db (update-in db [:wallet :ui :send] dissoc :user-tx-settings)}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/set-max-base-fee
|
||||
(fn [{db :db} [value]]
|
||||
{:db (assoc-in db [:wallet :ui :send :tx-settings :max-base-fee :current] value)}))
|
||||
{:db (assoc-in db [:wallet :ui :send :user-tx-settings :max-base-fee] value)}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/set-priority-fee
|
||||
(fn [{db :db} [value]]
|
||||
{:db (assoc-in db [:wallet :ui :send :tx-settings :priority-fee :current] value)}))
|
||||
{:db (assoc-in db [:wallet :ui :send :user-tx-settings :priority-fee] value)}))
|
||||
(rf/reg-event-fx
|
||||
|
||||
:wallet/set-max-gas-amount
|
||||
(fn [{db :db} [value]]
|
||||
{:db (assoc-in db [:wallet :ui :send :tx-settings :max-gas-amount :current] value)}))
|
||||
{:db (assoc-in db [:wallet :ui :send :user-tx-settings :gas-amount] value)}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/set-nonce
|
||||
(fn [{db :db} [value]]
|
||||
{:db (assoc-in db [:wallet :ui :send :tx-settings :nonce :current] value)}))
|
||||
{:db (assoc-in db [:wallet :ui :send :user-tx-settings :nonce] value)}))
|
||||
|
||||
(rf/reg-event-fx :wallet/quick-transaction-settings-confirmed
|
||||
(fn [{db :db} [confirmed-setting]]
|
||||
(let [gas-rate (transaction-settings/transaction-setting->gas-rate confirmed-setting)
|
||||
route (first (get-in db [:wallet :ui :send :route]))
|
||||
path-tx-identity (send-utils/path-identity route)
|
||||
params [path-tx-identity gas-rate]]
|
||||
{:db (assoc-in db [:wallet :ui :send :confirmed-quick-tx-setting] confirmed-setting)
|
||||
:json-rpc/call [{:method "wallet_setFeeMode"
|
||||
:params params
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to set quick transaction settings"
|
||||
{:event :wallet/quick-transaction-settings-confirmed
|
||||
:error (:message error)
|
||||
:params params}))}]})))
|
||||
|
||||
|
||||
|
||||
(rf/reg-event-fx :wallet/custom-transaction-settings-confirmed
|
||||
(fn [{db :db}]
|
||||
(let [route (first (get-in db [:wallet :ui :send :route]))
|
||||
user-tx-settings (get-in db [:wallet :ui :send :user-tx-settings])
|
||||
path-tx-identity (send-utils/path-identity route)
|
||||
custom-tx-params (send-utils/path-tx-custom-params user-tx-settings route)
|
||||
params [path-tx-identity custom-tx-params]]
|
||||
(tap> {:in :wallet/custom-transaction-settings-confirmed
|
||||
:custom-tx-params custom-tx-params})
|
||||
{:json-rpc/call [{:method "wallet_setCustomTxDetails"
|
||||
:params params
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to set custom tx settings"
|
||||
{:event :wallet/custom-transaction-settings-confirmed
|
||||
:error (:message error)
|
||||
:params params}))}]}))
|
||||
)
|
||||
|
||||
|
||||
(rf/reg-event-fx :wallet.send/set-sign-transactions-callback-fx
|
||||
(fn [{:keys [db]} [callback-fx]]
|
||||
{:db (assoc-in db
|
||||
[:wallet :ui :send :sign-transactions-callback-fx]
|
||||
callback-fx)}))
|
||||
|
||||
@@ -65,9 +65,8 @@
|
||||
:to {:chain-id 1
|
||||
:native-currency-symbol "ETH"}
|
||||
:gas-amount "23487"
|
||||
:gas-fees {:base-fee "32.325296406"
|
||||
:max-priority-fee-per-gas "0.011000001"
|
||||
:eip1559-enabled true}}]
|
||||
:gas-fees {:base-fee "32.325296406"
|
||||
:eip1559-enabled true}}]
|
||||
:wallet/wallet-send-suggested-routes nil
|
||||
:wallet/wallet-send-receiver-networks [1]
|
||||
:view-id :screen/wallet.send-input-amount
|
||||
|
||||
@@ -72,11 +72,6 @@
|
||||
|
||||
:else (rf/dispatch [:wallet/stop-and-clean-suggested-routes])))
|
||||
|
||||
(defn- get-fee-formatted
|
||||
[route]
|
||||
(when-let [native-currency-symbol (-> route first :from :native-currency-symbol)]
|
||||
(rf/sub [:wallet/wallet-send-fee-fiat-formatted native-currency-symbol])))
|
||||
|
||||
(defn- insufficient-asset-amount?
|
||||
[{:keys [token-symbol owned-eth-token input-state limit-exceeded? enough-assets?]}]
|
||||
(let [eth-selected? (= token-symbol (string/upper-case constants/mainnet-short-name))
|
||||
@@ -172,7 +167,7 @@
|
||||
(empty? route)
|
||||
(not valid-input?))
|
||||
fee-formatted (when (or (not confirm-disabled?) not-enough-asset?)
|
||||
(get-fee-formatted route))
|
||||
(rf/sub [:wallet/wallet-send-fee-fiat-formatted]))
|
||||
handle-on-confirm (fn [amount]
|
||||
(rf/dispatch [:wallet/set-token-amount-to-send
|
||||
{:amount amount
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
[quo.theme :as quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[react-native.safe-area :as safe-area]
|
||||
[status-im.common.biometric.utils :as biometric]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.floating-button-page.view :as floating-button-page]
|
||||
[status-im.common.standard-authentication.core :as standard-auth]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.send.transaction-confirmation.style :as style]
|
||||
[status-im.contexts.wallet.send.transaction-settings.view :as transaction-settings]
|
||||
@@ -168,10 +169,9 @@
|
||||
:subtitle subtitle}])
|
||||
|
||||
(defn- transaction-details
|
||||
[{:keys [estimated-time-min max-fees to-network route
|
||||
transaction-type]}]
|
||||
(let [route-loaded? (and route (seq route))
|
||||
loading-suggested-routes? (rf/sub [:wallet/wallet-send-loading-suggested-routes?])
|
||||
[{:keys [estimated-time-min max-fees to-network
|
||||
transaction-type route-loaded?]}]
|
||||
(let [loading-suggested-routes? (rf/sub [:wallet/wallet-send-loading-suggested-routes?])
|
||||
amount (rf/sub [:wallet/send-total-amount-formatted])]
|
||||
[rn/view
|
||||
{:style (style/details-container
|
||||
@@ -225,11 +225,7 @@
|
||||
estimated-time-min (reduce + (map :estimated-time route))
|
||||
token-symbol (or token-display-name
|
||||
(-> send-transaction-data :token :symbol))
|
||||
first-route (first route)
|
||||
native-currency-symbol (get-in first-route
|
||||
[:from :native-currency-symbol])
|
||||
fee-formatted (rf/sub [:wallet/wallet-send-fee-fiat-formatted
|
||||
native-currency-symbol])
|
||||
fee-formatted (rf/sub [:wallet/wallet-send-fee-fiat-formatted])
|
||||
account (rf/sub [:wallet/current-viewing-account])
|
||||
account-color (:color account)
|
||||
bridge-to-network (when bridge-to-chain-id
|
||||
@@ -237,7 +233,6 @@
|
||||
bridge-to-chain-id]))
|
||||
loading-suggested-routes? (rf/sub
|
||||
[:wallet/wallet-send-loading-suggested-routes?])
|
||||
transaction-for-signing (rf/sub [:wallet/wallet-send-transaction-for-signing])
|
||||
from-account-props {:customization-color account-color
|
||||
:size 32
|
||||
:emoji (:emoji account)
|
||||
@@ -249,24 +244,9 @@
|
||||
user-props {:full-name to-address
|
||||
:address (utils/get-shortened-address
|
||||
to-address)}
|
||||
sign-on-keycard? (get-in transaction-for-signing
|
||||
[:signingDetails :signOnKeycard])]
|
||||
biometric-auth? (= (rf/sub [:auth-method]) constants/auth-method-biometric)
|
||||
biometric-type (rf/sub [:biometrics/supported-type])]
|
||||
(hot-reload/use-safe-unmount #(rf/dispatch [:wallet/clean-route-data-for-collectible-tx]))
|
||||
;; In token send flow we already have transaction built when
|
||||
;; we reach confirmation screen. But in send collectible flow
|
||||
;; routes request happens at the same time with navigation to
|
||||
;; confirmation screen. So we need to build the transaction as soon
|
||||
;; as route is available.
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
(when (and (send-utils/tx-type-collectible? transaction-type)
|
||||
first-route)
|
||||
(rf/dispatch [:wallet/build-transaction-for-collectible-route])))
|
||||
[first-route])
|
||||
(rn/use-mount
|
||||
(fn []
|
||||
(when (ff/enabled? ::ff/wallet.transaction-params)
|
||||
(rf/dispatch [:wallet/init-tx-settings]))))
|
||||
[rn/view {:style {:flex 1}}
|
||||
[floating-button-page/view
|
||||
{:footer-container-padding 0
|
||||
@@ -283,27 +263,21 @@
|
||||
:to-network bridge-to-network
|
||||
:theme theme
|
||||
:route route
|
||||
:transaction-type transaction-type}]
|
||||
:transaction-type transaction-type
|
||||
:route-loaded? (and route (seq route))}]
|
||||
(when (and (not loading-suggested-routes?) route (seq route))
|
||||
[standard-auth/slide-button
|
||||
{:size :size-48
|
||||
:track-text (if (= transaction-type :tx/bridge)
|
||||
(i18n/label :t/slide-to-bridge)
|
||||
(i18n/label :t/slide-to-send))
|
||||
:container-style {:z-index 2}
|
||||
:disabled? (not transaction-for-signing)
|
||||
[quo/slide-button
|
||||
{:size :size-48
|
||||
:track-text (if (= transaction-type :tx/bridge)
|
||||
(i18n/label :t/slide-to-bridge)
|
||||
(i18n/label :t/slide-to-send))
|
||||
:container-style {:z-index 2}
|
||||
:customization-color account-color
|
||||
:auth-button-label (i18n/label :t/confirm)
|
||||
:on-complete (when sign-on-keycard?
|
||||
#(rf/dispatch
|
||||
[:wallet/prepare-signatures-for-transactions
|
||||
:send
|
||||
""]))
|
||||
:on-auth-success
|
||||
(fn [psw]
|
||||
(rf/dispatch
|
||||
[:wallet/prepare-signatures-for-transactions :send
|
||||
psw]))}])]
|
||||
:track-icon (if biometric-auth?
|
||||
(biometric/get-icon-by-type biometric-type)
|
||||
:password)
|
||||
:on-complete #(rf/dispatch
|
||||
[:wallet.send/auth-slider-completed])}])]
|
||||
:gradient-cover? true
|
||||
:customization-color (:color account)}
|
||||
[rn/view
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
(fn []
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
(rf/dispatch [:infra/get-saved-addresses])))
|
||||
(rf/dispatch [:wallet/get-saved-addresses])))
|
||||
(let [transaction-details (rf/sub [:wallet/send-transaction-progress])]
|
||||
[floating-button-page/view
|
||||
{:footer-container-padding 0
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
(ns status-im.contexts.wallet.send.transaction-settings.core
|
||||
(:require
|
||||
[status-im.constants :as constants]))
|
||||
|
||||
(def default-transaction-setting :transaction-setting/fast)
|
||||
|
||||
(defn transaction-setting->gas-rate
|
||||
[transaction-setting]
|
||||
(case transaction-setting
|
||||
:transaction-setting/normal constants/gas-rate-low
|
||||
:transaction-setting/fast constants/gas-rate-medium
|
||||
:transaction-setting/urgent constants/gas-rate-high
|
||||
:transaction-setting/custom constants/gas-rate-custom
|
||||
constants/gas-rate-medium))
|
||||
@@ -6,25 +6,36 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn gas-amount-hint-text
|
||||
[{:keys [current]} lower-limit-exceeded? _upper-limit-exceeded?]
|
||||
[current {:keys [low high]} _entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(cond
|
||||
lower-limit-exceeded? (i18n/label :t/gas-amount-lower {:current current})
|
||||
lower-limit-exceeded? (i18n/label :t/gas-amount-lower {:low low})
|
||||
upper-limit-exceeded? (i18n/label :t/gas-amount-higher {:high high})
|
||||
:else (i18n/label :t/current-units {:current current})))
|
||||
|
||||
(defn gas-amount-hint-status
|
||||
[_entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(if (or lower-limit-exceeded? upper-limit-exceeded?)
|
||||
:error
|
||||
:default))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [suggested-values (rf/sub [:wallet/tx-settings-max-gas-amount])
|
||||
hint-text (partial gas-amount-hint-text suggested-values)]
|
||||
(let [spectrum {:low 21000
|
||||
:high 7920027}
|
||||
current (rf/sub [:wallet/tx-settings-gas-amount])
|
||||
hint-text (partial gas-amount-hint-text current spectrum)]
|
||||
[transaction-settings/custom-setting-screen
|
||||
{:screen-title (i18n/label :t/max-gas-amount)
|
||||
:token-symbol :units
|
||||
:hint-text-fn hint-text
|
||||
:suggested-values suggested-values
|
||||
:info-title (i18n/label :t/gas-amount)
|
||||
:info-content (i18n/label :t/about-gas-amount)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-max-gas-amount new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))
|
||||
:with-decimals? false}]))
|
||||
{:screen-title (i18n/label :t/max-gas-amount)
|
||||
:token-symbol :units
|
||||
:hint-text-fn hint-text
|
||||
:status-fn gas-amount-hint-status
|
||||
:current current
|
||||
:spectrum spectrum
|
||||
:info-title (i18n/label :t/gas-amount)
|
||||
:info-content (i18n/label :t/about-gas-amount)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-max-gas-amount new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))
|
||||
:with-decimals? false}]))
|
||||
|
||||
@@ -6,25 +6,36 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn max-base-fee-hint-text
|
||||
[current lower-limit-exceeded? upper-limit-exceeded?]
|
||||
[max-base-fee priority-fee _entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(cond
|
||||
upper-limit-exceeded? (i18n/label :t/max-base-fee-higher {:current current})
|
||||
lower-limit-exceeded? (i18n/label :t/max-base-fee-lower {:current current})
|
||||
:else (i18n/label :t/fee-current-gwei {:current current})))
|
||||
upper-limit-exceeded? (i18n/label :t/max-base-fee-higher {:current max-base-fee})
|
||||
lower-limit-exceeded? (i18n/label :t/max-base-fee-lower {:priority-fee priority-fee})
|
||||
:else (i18n/label :t/max-base-fee-current {:current max-base-fee})))
|
||||
|
||||
(defn input-status
|
||||
[_entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(cond
|
||||
upper-limit-exceeded? :warning
|
||||
lower-limit-exceeded? :error
|
||||
:else :default))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [suggested-values (rf/sub [:wallet/tx-settings-max-base-fee])
|
||||
hint-text (partial max-base-fee-hint-text (:current suggested-values))]
|
||||
(let [max-base-fee (rf/sub [:wallet/tx-settings-max-base-fee])
|
||||
priority-fee (rf/sub [:wallet/tx-settings-priority-fee])
|
||||
hint-text (partial max-base-fee-hint-text max-base-fee priority-fee)]
|
||||
[transaction-settings/custom-setting-screen
|
||||
{:screen-title (i18n/label :t/max-base-fee)
|
||||
:token-sybmol :gwei
|
||||
:hint-text-fn hint-text
|
||||
:suggested-values suggested-values
|
||||
:info-title (i18n/label :t/max-base-fee)
|
||||
:info-content (i18n/label :t/about-max-base-fee)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-max-base-fee new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))}]))
|
||||
{:screen-title (i18n/label :t/max-base-fee)
|
||||
:token-sybmol :gwei
|
||||
:hint-text-fn hint-text
|
||||
:status-fn input-status
|
||||
:current max-base-fee
|
||||
:spectrum {:high max-base-fee
|
||||
:low priority-fee}
|
||||
:info-title (i18n/label :t/max-base-fee)
|
||||
:info-content (i18n/label :t/about-max-base-fee)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-max-base-fee new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))}]))
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [{:keys [last-transaction current]} (rf/sub [:wallet/tx-settings-nonce])
|
||||
suggested-nonce (inc last-transaction)
|
||||
[input-state set-input-state] (rn/use-state (controlled-input/set-value-numeric
|
||||
controlled-input/init-state
|
||||
current))
|
||||
input-value (controlled-input/input-value input-state)
|
||||
warning? (> (controlled-input/value-numeric input-state)
|
||||
suggested-nonce)]
|
||||
(let [current (rf/sub [:wallet/tx-settings-nonce])
|
||||
suggested-nonce (rf/sub [:wallet/tx-settings-suggested-nonce])
|
||||
last-tx-nonce (dec suggested-nonce)
|
||||
[input-state set-input-state] (rn/use-state (controlled-input/set-value-numeric
|
||||
controlled-input/init-state
|
||||
current))
|
||||
input-value (controlled-input/input-value input-state)
|
||||
warning? (> (controlled-input/value-numeric input-state)
|
||||
current)]
|
||||
[rn/view
|
||||
{:style {:flex 1}}
|
||||
[quo/page-nav
|
||||
@@ -41,7 +42,10 @@
|
||||
[quo/input
|
||||
{:type :text
|
||||
:label (i18n/label :t/type-nonce)
|
||||
:label-right (i18n/label :t/last-transaction-is {:number last-transaction})
|
||||
:label-right (i18n/label :t/last-transaction-is
|
||||
{:number (if (< last-tx-nonce 0)
|
||||
"-"
|
||||
last-tx-nonce)})
|
||||
:editable false
|
||||
:default-value input-value
|
||||
:clearable? true
|
||||
|
||||
@@ -6,25 +6,62 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn priority-fee-hint-text
|
||||
[{:keys [current low high]} lower-limit-exceeded? upper-limit-exceeded?]
|
||||
[priority-fee spectrum max-base-fee entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(cond
|
||||
upper-limit-exceeded? (i18n/label :t/priority-fee-higher {:low low :high high})
|
||||
lower-limit-exceeded? (i18n/label :t/priority-fee-lower {:low low :high high})
|
||||
:else (i18n/label :t/fee-current-gwei {:current current})))
|
||||
(and upper-limit-exceeded? (> entered-value max-base-fee))
|
||||
(i18n/label :t/priority-fee-higher-max-base {:max-base-fee max-base-fee})
|
||||
|
||||
upper-limit-exceeded?
|
||||
(i18n/label :t/priority-fee-higher spectrum)
|
||||
|
||||
lower-limit-exceeded?
|
||||
(i18n/label :t/priority-fee-lower spectrum)
|
||||
|
||||
:else
|
||||
(i18n/label :t/priority-fee-current {:current priority-fee})))
|
||||
|
||||
(defn priority-fee-hint-status
|
||||
[max-base-fee entered-value lower-limit-exceeded? upper-limit-exceeded?]
|
||||
(cond
|
||||
(and upper-limit-exceeded? (> entered-value max-base-fee))
|
||||
:error
|
||||
|
||||
upper-limit-exceeded?
|
||||
:warning
|
||||
|
||||
lower-limit-exceeded?
|
||||
:warning
|
||||
|
||||
:else
|
||||
:default))
|
||||
|
||||
(comment
|
||||
(rf/sub [:wallet/tx-settings-gas-fees])
|
||||
(rf/sub [:wallet/tx-settings-priority-fee])
|
||||
(rf/sub [:wallet/send-route])
|
||||
(:gas-fees (first (rf/sub [:wallet/send-route])))
|
||||
(rf/dispatch [:navigate-back])
|
||||
)
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [suggested-values (rf/sub [:wallet/tx-settings-priority-fee])
|
||||
hint-text (partial priority-fee-hint-text suggested-values)]
|
||||
(let [priority-fee (rf/sub [:wallet/tx-settings-priority-fee])
|
||||
max-base-fee (rf/sub [:wallet/tx-settings-max-base-fee])
|
||||
spectrum {:low (rf/sub [:wallet/tx-settings-suggested-min-priority-fee])
|
||||
:high (rf/sub [:wallet/tx-settings-suggested-max-priority-fee])}
|
||||
hint-text (partial priority-fee-hint-text priority-fee spectrum max-base-fee)
|
||||
hint-status (partial priority-fee-hint-status max-base-fee)]
|
||||
[transaction-settings/custom-setting-screen
|
||||
{:screen-title (i18n/label :t/priority-fee)
|
||||
:token-sybmol :gwei
|
||||
:hint-text-fn hint-text
|
||||
:suggested-values suggested-values
|
||||
:info-title (i18n/label :t/priority-fee)
|
||||
:info-content (i18n/label :t/about-priority-fee)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-priority-fee new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))}]))
|
||||
{:screen-title (i18n/label :t/priority-fee)
|
||||
:token-sybmol :gwei
|
||||
:hint-text-fn hint-text
|
||||
:status-fn hint-status
|
||||
:current priority-fee
|
||||
:spectrum spectrum
|
||||
:info-title (i18n/label :t/priority-fee)
|
||||
:info-content (i18n/label :t/about-priority-fee)
|
||||
:on-save (fn [new-val]
|
||||
(rf/dispatch [:wallet/set-priority-fee new-val])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content transaction-settings/custom-settings-sheet}]))}]))
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
|
||||
(defn custom-settings-sheet
|
||||
[_]
|
||||
(let [max-base-fee (:current (rf/sub [:wallet/tx-settings-max-base-fee]))
|
||||
priority-fee (:current (rf/sub [:wallet/tx-settings-priority-fee]))
|
||||
max-gas-amount (:current (rf/sub [:wallet/tx-settings-max-gas-amount]))
|
||||
nonce (:current (rf/sub [:wallet/tx-settings-nonce]))]
|
||||
(let [max-base-fee (rf/sub [:wallet/tx-settings-max-base-fee])
|
||||
priority-fee (rf/sub [:wallet/tx-settings-priority-fee])
|
||||
max-gas-amount (rf/sub [:wallet/tx-settings-gas-amount])
|
||||
nonce (rf/sub [:wallet/tx-settings-nonce])]
|
||||
[rn/view
|
||||
[quo/drawer-top
|
||||
{:title (i18n/label :t/custom)}]
|
||||
@@ -62,71 +62,80 @@
|
||||
:preview-size :size-32}]}]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-props {:on-press #(rf/dispatch [:hide-bottom-sheet])}
|
||||
:button-one-props {:on-press (fn []
|
||||
(rf/dispatch [:wallet/custom-transaction-settings-confirmed])
|
||||
(rf/dispatch [:hide-bottom-sheet]))}
|
||||
:button-one-label (i18n/label :t/confirm)}]]))
|
||||
|
||||
(defn settings-sheet
|
||||
[_]
|
||||
(let [[selected-id set-selected-id] (rn/use-state :normal)]
|
||||
[]
|
||||
(let [current-transaction-setting (rf/sub [:wallet/confirmed-quick-tx-setting])
|
||||
[transaction-setting set-transaction-setting] (rn/use-state current-transaction-setting)]
|
||||
[rn/view
|
||||
[quo/drawer-top
|
||||
{:title (i18n/label :t/transaction-settings)}]
|
||||
[quo/category
|
||||
{:list-type :settings
|
||||
:data [{:title (str (i18n/label :t/normal) "~60s")
|
||||
:image-props "🍿"
|
||||
:description-props {:text "€1.45"}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :normal selected-id)}
|
||||
:on-press #(set-selected-id :normal)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (str (i18n/label :t/fast) "~40s")
|
||||
:image-props "🚗"
|
||||
:description-props {:text "€1.65"}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :fast selected-id)}
|
||||
:on-press #(set-selected-id :fast)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (str (i18n/label :t/urgent) "~15s")
|
||||
:image-props "🚀"
|
||||
:description-props {:text "€1.85"}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :urgent selected-id)}
|
||||
:on-press #(set-selected-id :urgent)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (i18n/label :t/custom)
|
||||
:image-props :i/edit
|
||||
:description-props {:text "Set your own fees and nonce"}
|
||||
:image :icon
|
||||
:description :text
|
||||
:action :arrow
|
||||
:on-press #(rf/dispatch
|
||||
[:show-bottom-sheet
|
||||
{:content custom-settings-sheet}])
|
||||
:label :text
|
||||
:preview-size :size-32}]}]
|
||||
:data [{:title (str (i18n/label :t/normal) "~60s")
|
||||
:image-props "🍿"
|
||||
:description-props {:text (rf/sub [:wallet/wallet-send-transaction-setting-fiat-formatted
|
||||
:transaction-setting/normal])}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :transaction-setting/normal transaction-setting)}
|
||||
:on-press #(set-transaction-setting :transaction-setting/normal)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (str (i18n/label :t/fast) "~40s")
|
||||
:image-props "🚗"
|
||||
:description-props {:text (rf/sub [:wallet/wallet-send-transaction-setting-fiat-formatted
|
||||
:transaction-setting/fast])}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :transaction-setting/fast transaction-setting)}
|
||||
:on-press #(set-transaction-setting :transaction-setting/fast)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (str (i18n/label :t/urgent) "~15s")
|
||||
:image-props "🚀"
|
||||
:description-props {:text (rf/sub [:wallet/wallet-send-transaction-setting-fiat-formatted
|
||||
:transaction-setting/urgent])}
|
||||
:image :emoji
|
||||
:description :text
|
||||
:action :selector
|
||||
:action-props {:type :radio
|
||||
:checked? (= :transaction-setting/urgent transaction-setting)}
|
||||
:on-press #(set-transaction-setting :transaction-setting/urgent)
|
||||
:label :text
|
||||
:preview-size :size-32}
|
||||
{:title (i18n/label :t/custom)
|
||||
:image-props :i/edit
|
||||
:description-props {:text "Set your own fees and nonce"}
|
||||
:image :icon
|
||||
:description :text
|
||||
:action :arrow
|
||||
:on-press #(rf/dispatch
|
||||
[:show-bottom-sheet
|
||||
{:content custom-settings-sheet}])
|
||||
:label :text
|
||||
:preview-size :size-32}]}]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-props {:on-press #(rf/dispatch [:hide-bottom-sheet])}
|
||||
:button-one-props {:on-press (fn []
|
||||
(rf/dispatch [:wallet/quick-transaction-settings-confirmed
|
||||
transaction-setting])
|
||||
(rf/dispatch [:hide-bottom-sheet]))}
|
||||
:button-one-label (i18n/label :t/confirm)}]]))
|
||||
|
||||
(defn- hint
|
||||
[{:keys [error? text]}]
|
||||
[{:keys [status text]}]
|
||||
[quo/network-tags
|
||||
{:title text
|
||||
:status (when error? :error)}])
|
||||
:status status}])
|
||||
|
||||
(defn info-sheet
|
||||
[info-title info-content]
|
||||
@@ -147,23 +156,33 @@
|
||||
(i18n/label :t/read-more)]]])
|
||||
|
||||
(defn custom-setting-screen
|
||||
[{:keys [screen-title token-symbol hint-text-fn suggested-values info-title info-content on-save
|
||||
[{:keys [screen-title token-symbol hint-text-fn status-fn current spectrum info-title info-content
|
||||
on-save
|
||||
with-decimals?]
|
||||
:or {with-decimals? true}}]
|
||||
(let [[input-state set-input-state] (rn/use-state (controlled-input/set-value-numeric
|
||||
controlled-input/init-state
|
||||
(:current suggested-values)))
|
||||
current))
|
||||
input-value (controlled-input/input-value input-state)
|
||||
out-of-limits? (controlled-input/input-error input-state)
|
||||
valid-input? (not (or (controlled-input/empty-value? input-state)
|
||||
out-of-limits?))]
|
||||
(rn/use-mount
|
||||
status (when status-fn
|
||||
(status-fn
|
||||
input-value
|
||||
(controlled-input/lower-limit-exceeded? input-state)
|
||||
(controlled-input/upper-limit-exceeded? input-state)))
|
||||
hint-text (when hint-text-fn
|
||||
(hint-text-fn
|
||||
input-value
|
||||
(controlled-input/lower-limit-exceeded? input-state)
|
||||
(controlled-input/upper-limit-exceeded? input-state)))]
|
||||
(tap> {:in :custom-setting-screen
|
||||
:spectrum spectrum})
|
||||
(rn/use-effect
|
||||
(fn []
|
||||
|
||||
(set-input-state (fn [state]
|
||||
(-> state
|
||||
(controlled-input/set-upper-limit (:high suggested-values))
|
||||
(controlled-input/set-lower-limit (:low suggested-values)))))))
|
||||
(controlled-input/set-upper-limit (:high spectrum))
|
||||
(controlled-input/set-lower-limit (:low spectrum))))))
|
||||
[spectrum])
|
||||
[rn/view
|
||||
{:style {:flex 1}}
|
||||
[quo/page-nav
|
||||
@@ -184,18 +203,16 @@
|
||||
:swappable? false
|
||||
:show-token-icon? false
|
||||
:value input-value
|
||||
:error? out-of-limits?
|
||||
:error? (= status :error)
|
||||
:currency-symbol token-symbol
|
||||
:hint-component [hint
|
||||
{:error? out-of-limits?
|
||||
:text (hint-text-fn
|
||||
(controlled-input/lower-limit-exceeded? input-state)
|
||||
(controlled-input/upper-limit-exceeded? input-state))}]}]
|
||||
{:status status
|
||||
:text hint-text}]}]
|
||||
[rn/view {:style {:flex 1}}]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/save-changes)
|
||||
:button-one-props {:disabled? (not valid-input?)
|
||||
:button-one-props {:disabled? (= status :error)
|
||||
:on-press #(on-save (controlled-input/value-numeric input-state))}}]
|
||||
[quo/numbered-keyboard
|
||||
{:container-style {:padding-bottom (safe-area/get-bottom)}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
(ns status-im.contexts.wallet.send.utils
|
||||
(:require
|
||||
[native-module.core :as native-module]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.common.utils.networks :as network-utils]
|
||||
[utils.money :as money]))
|
||||
@@ -25,21 +26,42 @@
|
||||
transaction-hashes))
|
||||
|
||||
(defn calculate-gas-fee
|
||||
[data]
|
||||
(let [gas-amount (money/bignumber (get data :gas-amount))
|
||||
gas-fees (get data :gas-fees)
|
||||
eip1559-enabled? (get gas-fees :eip-1559-enabled)
|
||||
optimal-price-gwei (money/bignumber (if eip1559-enabled?
|
||||
(get gas-fees :max-fee-per-gas-medium)
|
||||
(get gas-fees :gas-price)))
|
||||
total-gas-fee-wei (money/mul (money/->wei :gwei optimal-price-gwei) gas-amount)
|
||||
l1-fee-wei (money/->wei :gwei (get gas-fees :l-1-gas-fee))]
|
||||
[{:keys [gas-amount gas-price l1-gas-fee]}]
|
||||
(let [total-gas-fee-wei (money/mul (money/->wei :gwei gas-price) gas-amount)
|
||||
l1-fee-wei (money/->wei :gwei l1-gas-fee)]
|
||||
(money/add total-gas-fee-wei l1-fee-wei)))
|
||||
|
||||
(defn calculate-full-route-gas-fee
|
||||
(defn path-gas-fee
|
||||
[path]
|
||||
(let [gas-amount (money/bignumber (get path :gas-amount))
|
||||
gas-fees (get path :gas-fees)
|
||||
eip1559-enabled? (get gas-fees :eip-1559-enabled)
|
||||
gas-price (money/bignumber (if eip1559-enabled?
|
||||
(get gas-fees :tx-max-fees-per-gas)
|
||||
(get gas-fees :gas-price)))
|
||||
l1-gas-fee (get gas-fees :l-1-gas-fee)]
|
||||
(calculate-gas-fee {:gas-amount gas-amount
|
||||
:gas-price gas-price
|
||||
:l1-gas-fee l1-gas-fee})))
|
||||
|
||||
(defn path-gas-fee-for-custom-gas-price
|
||||
[route gas-price]
|
||||
(let [gas-amount (money/bignumber (get route :gas-amount))
|
||||
gas-fees (get route :gas-fees)
|
||||
l1-gas-fee (get gas-fees :l-1-gas-fee)]
|
||||
(calculate-gas-fee {:gas-amount gas-amount
|
||||
:gas-price (money/bignumber gas-price)
|
||||
:l1-gas-fee l1-gas-fee})))
|
||||
|
||||
(defn full-route-gas-fee
|
||||
"Sums all the routes fees in wei and then convert the total value to ether"
|
||||
[route]
|
||||
(money/wei->ether (reduce money/add (map calculate-gas-fee route))))
|
||||
(money/wei->ether (reduce money/add (map path-gas-fee route))))
|
||||
|
||||
(defn full-route-gas-fee-for-custom-gas-price
|
||||
"Sums all the routes fees in wei and then convert the total value to ether"
|
||||
[route gas-price]
|
||||
(money/wei->ether (reduce money/add (map #(path-gas-fee-for-custom-gas-price % gas-price) route))))
|
||||
|
||||
(defn- path-amount-in
|
||||
[path]
|
||||
@@ -224,3 +246,23 @@
|
||||
{:r (subs signature 0 64)
|
||||
:s (subs signature 64 128)
|
||||
:v (subs signature 128 130)})
|
||||
|
||||
(defn path-identity
|
||||
[path]
|
||||
{:routerInputParamsUuid (:router-input-params-uuid path)
|
||||
:pathName (:bridge-name path)
|
||||
:chainID (get-in path [:to :chain-id])
|
||||
:isApprovalTx (:approval-required path)})
|
||||
|
||||
(defn path-tx-custom-params
|
||||
[user-tx-settings route]
|
||||
(let [nonce (or (:nonce user-tx-settings) (:nonce route))
|
||||
gas-amount (or (:gas-amount user-tx-settings) (:gas-amount route))
|
||||
priority-fee (or (:priority-fee user-tx-settings) (get-in route [:gas-fees :tx-priority-fee]))
|
||||
max-base-fee (or (:max-base-fee user-tx-settings) (get-in route [:gas-fees :current-base-fee]))]
|
||||
{:gasFeeMode constants/gas-rate-custom
|
||||
:nonce nonce
|
||||
:gasAmount gas-amount
|
||||
:maxFeesPerGas (money/to-hex (money/->wei :gwei (money/add max-base-fee priority-fee)))
|
||||
:priorityFee (money/to-hex (money/->wei :gwei priority-fee))}))
|
||||
|
||||
|
||||
@@ -178,21 +178,21 @@
|
||||
(deftest calculate-gas-fee-test
|
||||
(testing "EIP-1559 transaction without L1 fee"
|
||||
(let [data {:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
expected-result (money/bignumber "53063589834657")] ; This is in Wei
|
||||
(is (money/equal-to (utils/calculate-gas-fee data)
|
||||
(is (money/equal-to (utils/path-gas-fee data)
|
||||
expected-result))))
|
||||
|
||||
(testing "EIP-1559 transaction with L1 fee of 60,000 Gwei"
|
||||
(let [data {:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "60000"}}
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "60000"}}
|
||||
expected-result (money/bignumber "113063589834657")] ; Added 60,000 Gwei in Wei to the
|
||||
; previous result
|
||||
(is (money/equal-to (utils/calculate-gas-fee data)
|
||||
(is (money/equal-to (utils/path-gas-fee data)
|
||||
expected-result))))
|
||||
|
||||
(testing "Non-EIP-1559 transaction with specified gas price"
|
||||
@@ -202,48 +202,48 @@
|
||||
:l-1-gas-fee "0"}}
|
||||
expected-result (money/bignumber "67471600217343")] ; This is in Wei, for the specified
|
||||
; gas amount and price
|
||||
(is (money/equal-to (utils/calculate-gas-fee data)
|
||||
(is (money/equal-to (utils/path-gas-fee data)
|
||||
expected-result)))))
|
||||
|
||||
(deftest calculate-full-route-gas-fee-test
|
||||
(testing "Route with a single EIP-1559 transaction, no L1 fees"
|
||||
(let [route [{:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}]
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}]
|
||||
expected-result (money/bignumber "0.000053063589834657")] ; The Wei amount for the
|
||||
; transaction, converted to
|
||||
; Ether
|
||||
(is (money/equal-to (utils/calculate-full-route-gas-fee route)
|
||||
(is (money/equal-to (utils/full-route-gas-fee route)
|
||||
expected-result))))
|
||||
|
||||
(testing "Route with two EIP-1559 transactions, no L1 fees"
|
||||
(let [route [{:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
{:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}]
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}]
|
||||
expected-result (money/bignumber "0.000106127179669314")] ; Sum of both transactions' Wei
|
||||
; amounts, converted to Ether
|
||||
(is (money/equal-to (utils/calculate-full-route-gas-fee route)
|
||||
(is (money/equal-to (utils/full-route-gas-fee route)
|
||||
expected-result))))
|
||||
|
||||
(testing "Route with two EIP-1559 transactions, one with L1 fee of 60,000 Gwei"
|
||||
(let [route [{:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
{:gas-amount "23487"
|
||||
:gas-fees {:max-fee-per-gas-medium "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "60000"}}]
|
||||
:gas-fees {:tx-max-fees-per-gas "2.259274911"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "60000"}}]
|
||||
expected-result (money/bignumber "0.000166127179669314")] ; Added 60,000 Gwei in Wei to
|
||||
; the previous total and
|
||||
; converted to Ether
|
||||
(is (money/equal-to (utils/calculate-full-route-gas-fee route)
|
||||
(is (money/equal-to (utils/full-route-gas-fee route)
|
||||
expected-result)))))
|
||||
|
||||
(deftest token-available-networks-for-suggested-routes-test
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
[quo.foundations.resources :as resources]
|
||||
[quo.theme :as quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.biometric.utils :as biometric]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.floating-button-page.view :as floating-button-page]
|
||||
[status-im.common.standard-authentication.core :as standard-auth]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.common.utils.external-links :as external-links]
|
||||
[status-im.contexts.wallet.swap.set-spending-cap.style :as style]
|
||||
@@ -216,25 +217,21 @@
|
||||
|
||||
(defn- slide-button
|
||||
[]
|
||||
(let [loading-swap-proposal? (rf/sub [:wallet/swap-loading-swap-proposal?])
|
||||
swap-proposal (rf/sub [:wallet/swap-proposal-without-fees])
|
||||
account (rf/sub [:wallet/current-viewing-account])
|
||||
transaction-for-signing (rf/sub [:wallet/swap-transaction-for-signing])
|
||||
sign-on-keycard? (get-in transaction-for-signing
|
||||
[:signingDetails :signOnKeycard])
|
||||
on-auth-success (rn/use-callback
|
||||
#(rf/dispatch [:wallet/prepare-signatures-for-transactions :swap %]))
|
||||
on-complete (rn/use-callback
|
||||
#(rf/dispatch [:wallet/prepare-signatures-for-transactions :swap ""]))]
|
||||
[standard-auth/slide-button
|
||||
(let [loading-swap-proposal? (rf/sub [:wallet/swap-loading-swap-proposal?])
|
||||
swap-proposal (rf/sub [:wallet/swap-proposal-without-fees])
|
||||
account (rf/sub [:wallet/current-viewing-account])
|
||||
biometric-auth? (= (rf/sub [:auth-method]) constants/auth-method-biometric)
|
||||
biometric-type (rf/sub [:biometrics/supported-type])]
|
||||
[quo/slide-button
|
||||
{:size :size-48
|
||||
:track-text (i18n/label :t/slide-to-sign)
|
||||
:container-style {:z-index 2}
|
||||
:customization-color (:color account)
|
||||
:track-icon (if biometric-auth?
|
||||
(biometric/get-icon-by-type biometric-type)
|
||||
:password)
|
||||
:disabled? (or loading-swap-proposal? (not swap-proposal))
|
||||
:on-complete (when sign-on-keycard? on-complete)
|
||||
:on-auth-success on-auth-success
|
||||
:auth-button-label (i18n/label :t/confirm)}]))
|
||||
:on-complete #(rf/dispatch [:wallet/prepare-signatures-for-transactions :swap])}]))
|
||||
|
||||
(defn- footer
|
||||
[]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
(ns status-im.contexts.wallet.swap.setup-swap.style
|
||||
(:require [quo.foundations.colors :as colors]))
|
||||
(ns status-im.contexts.wallet.swap.setup-swap.style)
|
||||
|
||||
(def container
|
||||
{:flex 1})
|
||||
@@ -41,22 +40,3 @@
|
||||
{:height :auto
|
||||
:min-height 40
|
||||
:max-height 62})
|
||||
|
||||
(defn exchange-rate-loader
|
||||
[theme]
|
||||
{:margin-top 16
|
||||
:width 72
|
||||
:height 14
|
||||
:border-radius 6
|
||||
:background-color (colors/theme-colors colors/neutral-5 colors/neutral-90 theme)})
|
||||
|
||||
(def exchange-rate-container
|
||||
{:margin-top 16
|
||||
:flex-direction :row})
|
||||
|
||||
(def exchange-rate-crypto-label
|
||||
{:color colors/neutral-50})
|
||||
|
||||
(defn exchange-rate-fiat-label
|
||||
[theme]
|
||||
{:color (colors/theme-colors colors/neutral-40 colors/neutral-60 theme)})
|
||||
|
||||
@@ -343,33 +343,6 @@
|
||||
(= (:symbol token)
|
||||
(:symbol asset-to-pay)))}]))
|
||||
|
||||
(defn- swap-exchange-rate-view
|
||||
[]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
asset-to-pay (rf/sub [:wallet/swap-asset-to-pay])
|
||||
asset-to-receive (rf/sub [:wallet/swap-asset-to-receive])
|
||||
swap-exchange-rate-crypto (rf/sub [:wallet/swap-exchange-rate-crypto])
|
||||
swap-exchange-rate-fiat (rf/sub [:wallet/swap-exchange-rate-fiat])
|
||||
loading-swap-proposal? (rf/sub [:wallet/swap-loading-swap-proposal?])]
|
||||
(cond
|
||||
loading-swap-proposal?
|
||||
[rn/view {:style (style/exchange-rate-loader theme)}]
|
||||
swap-exchange-rate-crypto
|
||||
[rn/view {:style style/exchange-rate-container}
|
||||
[quo/text
|
||||
{:weight :medium
|
||||
:size :paragraph-2
|
||||
:style style/exchange-rate-crypto-label}
|
||||
(i18n/label :t/swap-exchange-rate-in-crypto
|
||||
{:receive-token-symbol (:symbol asset-to-receive)
|
||||
:exchange-rate swap-exchange-rate-crypto
|
||||
:pay-token-symbol (:symbol asset-to-pay)})]
|
||||
[quo/text
|
||||
{:weight :medium
|
||||
:size :paragraph-2
|
||||
:style (style/exchange-rate-fiat-label theme)}
|
||||
(str " (" swap-exchange-rate-fiat ")")]])))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [[pay-input-state set-pay-input-state] (rn/use-state controlled-input/init-state)
|
||||
@@ -522,7 +495,7 @@
|
||||
:params {:show-account-balances? true
|
||||
:asset-symbol (:symbol asset-to-pay)
|
||||
:network network}}]
|
||||
[rn/scroll-view {:style style/inputs-container}
|
||||
[rn/view {:style style/inputs-container}
|
||||
[pay-token-input
|
||||
{:input-state pay-input-state
|
||||
:on-max-press on-max-press
|
||||
@@ -541,8 +514,7 @@
|
||||
[receive-token-input
|
||||
{:input-focused? (not pay-input-focused?)
|
||||
:on-token-press #(rf/dispatch [:show-bottom-sheet {:content receive-token-bottom-sheet}])
|
||||
:on-input-focus #(set-pay-input-focused? false)}]
|
||||
[swap-exchange-rate-view]]
|
||||
:on-input-focus #(set-pay-input-focused? false)}]]
|
||||
[rn/view {:style style/footer-container}
|
||||
(when-not loading-swap-proposal? [alert-banner {:pay-input-error? pay-input-error?}])
|
||||
(when (or loading-swap-proposal? swap-proposal)
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
[quo.theme :as quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[react-native.safe-area :as safe-area]
|
||||
[status-im.common.biometric.utils :as biometric]
|
||||
[status-im.common.floating-button-page.view :as floating-button-page]
|
||||
[status-im.common.standard-authentication.core :as standard-auth]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.send.utils :as send-utils]
|
||||
@@ -167,26 +167,21 @@
|
||||
transaction-for-signing (rf/sub [:wallet/swap-transaction-for-signing])
|
||||
swap-proposal (rf/sub [:wallet/swap-proposal-without-fees])
|
||||
account (rf/sub [:wallet/current-viewing-account])
|
||||
account-color (:color account)
|
||||
sign-on-keycard? (get-in transaction-for-signing
|
||||
[:signingDetails :signOnKeycard])]
|
||||
[standard-auth/slide-button
|
||||
biometric-auth? (= (rf/sub [:auth-method]) constants/auth-method-biometric)
|
||||
biometric-type (rf/sub [:biometrics/supported-type])
|
||||
account-color (:color account)]
|
||||
[quo/slide-button
|
||||
{:size :size-48
|
||||
:track-text (i18n/label :t/slide-to-swap)
|
||||
:container-style {:z-index 2}
|
||||
:customization-color account-color
|
||||
:track-icon (if biometric-auth?
|
||||
(biometric/get-icon-by-type biometric-type)
|
||||
:password)
|
||||
:disabled? (or loading-swap-proposal?
|
||||
(not swap-proposal)
|
||||
(not transaction-for-signing))
|
||||
:auth-button-label (i18n/label :t/confirm)
|
||||
:on-complete (when sign-on-keycard?
|
||||
#(rf/dispatch
|
||||
[:wallet/prepare-signatures-for-transactions
|
||||
:swap
|
||||
""]))
|
||||
:on-auth-success (fn [data]
|
||||
(rf/dispatch [:wallet/stop-get-swap-proposal])
|
||||
(rf/dispatch [:wallet/prepare-signatures-for-transactions :swap data]))}]))
|
||||
:on-complete #(rf/dispatch [:wallet/prepare-signatures-for-transactions :swap])}]))
|
||||
|
||||
(defn footer
|
||||
[]
|
||||
|
||||
@@ -41,6 +41,4 @@
|
||||
:stickers/packs-pending #{}
|
||||
:settings/change-password {}
|
||||
:keycard {}
|
||||
:theme :dark
|
||||
:app {:use-cases-stack '()
|
||||
:last-user-notification {}}})
|
||||
:theme :dark})
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
(ns status-im.domain.events
|
||||
(:require
|
||||
[taoensso.timbre :as log]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn- update-saved-addresses
|
||||
[saved-addresses-db new-saved-addresses]
|
||||
(reduce
|
||||
(fn [acc {:keys [address removed? test?] :as saved-address}]
|
||||
(let [db-key (if test? :test :prod)]
|
||||
(if removed?
|
||||
(update acc db-key dissoc address)
|
||||
(assoc-in acc [db-key address] saved-address))))
|
||||
(or saved-addresses-db
|
||||
{:test {}
|
||||
:prod {}})
|
||||
new-saved-addresses))
|
||||
|
||||
(rf/reg-event-fx :domain/reconcile-saved-addresses
|
||||
(fn [{:keys [db]} [saved-addresses]]
|
||||
{:db (update-in db [:wallet :saved-addresses] update-saved-addresses saved-addresses)}))
|
||||
@@ -1,6 +1,5 @@
|
||||
(ns status-im.events
|
||||
(:require
|
||||
status-im.app.events
|
||||
status-im.common.alert-banner.events
|
||||
status-im.common.alert.effects
|
||||
status-im.common.async-storage.effects
|
||||
@@ -56,8 +55,6 @@
|
||||
status-im.contexts.wallet.swap.events
|
||||
status-im.contexts.wallet.wallet-connect.events.core
|
||||
[status-im.db :as db]
|
||||
status-im.domain.events
|
||||
status-im.infra.events
|
||||
status-im.navigation.effects
|
||||
status-im.navigation.events
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
(ns status-im.infra.events
|
||||
(:require
|
||||
[status-im.infra.transform :as transform]
|
||||
[taoensso.timbre :as log]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(rf/reg-event-fx :infra/convert-saved-addresses
|
||||
(fn [_ [raw-saved-addresses]]
|
||||
(let [saved-addresses (transform/rpc->saved-addresses raw-saved-addresses)]
|
||||
{:fx [[:dispatch [:domain/reconcile-saved-addresses saved-addresses]]]})))
|
||||
|
||||
|
||||
(rf/reg-event-fx :infra/get-saved-addresses
|
||||
(fn [_]
|
||||
{:fx [[:json-rpc/call
|
||||
[{:method "wakuext_getSavedAddresses"
|
||||
:on-success [:infra/convert-saved-addresses]
|
||||
:on-error [:infra/saved-addresses-rpc-error :get-saved-addresses]}]]]}))
|
||||
|
||||
(rf/reg-event-fx :infra/saved-addresses-rpc-error
|
||||
(fn [_ [action error]]
|
||||
(log/warn (str "[wallet] [saved-addresses] Failed to " action)
|
||||
{:error error})))
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
(ns status-im.infra.transform
|
||||
(:require
|
||||
[camel-snake-kebab.extras :as cske]
|
||||
[clojure.set :as set]
|
||||
[clojure.string :as string]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.collectible.utils :as collectible-utils]
|
||||
[status-im.contexts.wallet.send.utils :as send-utils]
|
||||
[utils.collection :as utils.collection]
|
||||
[utils.money :as money]
|
||||
[utils.number :as utils.number]
|
||||
[utils.transforms :as transforms]))
|
||||
|
||||
(defn- add-keys-to-saved-address
|
||||
[saved-address]
|
||||
(assoc saved-address :ens? (not (string/blank? (:ens saved-address)))))
|
||||
|
||||
(defn rpc->saved-address
|
||||
[saved-address]
|
||||
(-> saved-address
|
||||
(set/rename-keys {:chainShortNames :chain-short-names
|
||||
:isTest :test?
|
||||
:createdAt :created-at
|
||||
:colorId :customization-color
|
||||
:mixedcaseAddress :mixedcase-address
|
||||
:removed :removed?})
|
||||
(update :customization-color (comp keyword string/lower-case))
|
||||
add-keys-to-saved-address))
|
||||
|
||||
(defn rpc->saved-addresses
|
||||
[saved-addresses]
|
||||
(map rpc->saved-address saved-addresses))
|
||||
@@ -1,26 +0,0 @@
|
||||
(ns status-im.subs.app
|
||||
(:require
|
||||
[re-frame.core :as rf]))
|
||||
|
||||
(rf/reg-sub
|
||||
:app/last-user-notification
|
||||
:<- [:app]
|
||||
:-> :last-user-notification)
|
||||
|
||||
|
||||
(rf/reg-sub
|
||||
:app/use-cases
|
||||
:<- [:app]
|
||||
:-> :use-cases-stack)
|
||||
|
||||
(rf/reg-sub
|
||||
:app/current-use-case
|
||||
:<- [:app/use-cases]
|
||||
(fn [use-cases]
|
||||
(first use-cases)))
|
||||
|
||||
(rf/reg-sub
|
||||
:app/use-case-active?
|
||||
:<- [:app/use-cases]
|
||||
(fn [use-cases [_sub-name use-case]]
|
||||
(some #(= use-case %) use-cases)))
|
||||
@@ -3,7 +3,6 @@
|
||||
[re-frame.core :as re-frame]
|
||||
status-im.subs.activity-center
|
||||
status-im.subs.alert-banner
|
||||
status-im.subs.app
|
||||
status-im.subs.biometrics
|
||||
status-im.subs.bottom-sheet
|
||||
status-im.subs.chats
|
||||
@@ -192,8 +191,3 @@
|
||||
|
||||
;;keycard
|
||||
(reg-root-key-sub :keycard :keycard)
|
||||
|
||||
(reg-root-key-sub :ui :ui)
|
||||
(reg-root-key-sub :infra :infra)
|
||||
(reg-root-key-sub :app :app)
|
||||
(reg-root-key-sub :domain :domain)
|
||||
|
||||
@@ -167,6 +167,7 @@
|
||||
(when
|
||||
(= (:chain-id network) bridge-to-chain-id)
|
||||
network))
|
||||
|
||||
networks))))
|
||||
|
||||
(rf/reg-sub
|
||||
@@ -205,27 +206,89 @@
|
||||
{:crypto (str crypto-formatted " " (:symbol token))
|
||||
:fiat fiat-formatted})))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings
|
||||
:<- [:wallet/wallet-send]
|
||||
:-> :tx-settings)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-max-base-fee
|
||||
:<- [:wallet/tx-settings]
|
||||
:wallet/confirmed-quick-tx-setting
|
||||
:<- [:wallet/wallet-send]
|
||||
(fn [send-data]
|
||||
(or (:confirmed-quick-tx-setting send-data) :transaction-setting/fast)))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/user-tx-settings
|
||||
:<- [:wallet/wallet-send]
|
||||
:-> :user-tx-settings)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-max-base-fee-user
|
||||
:<- [:wallet/user-tx-settings]
|
||||
:-> :max-base-fee)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-priority-fee
|
||||
:<- [:wallet/tx-settings]
|
||||
:wallet/tx-settings-priority-fee-user
|
||||
:<- [:wallet/user-tx-settings]
|
||||
:-> :priority-fee)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-max-gas-amount
|
||||
:<- [:wallet/tx-settings]
|
||||
:-> :max-gas-amount)
|
||||
:wallet/tx-settings-nonce-user
|
||||
:<- [:wallet/user-tx-settings]
|
||||
:-> :nonce)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-gas-amount-user
|
||||
:<- [:wallet/user-tx-settings]
|
||||
:-> :gas-amount)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-gas-amount
|
||||
:<- [:wallet/send-route]
|
||||
:<- [:wallet/tx-settings-gas-amount-user]
|
||||
(fn [[route value-set-by-user]]
|
||||
(or value-set-by-user (:gas-amount (first route)))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-nonce
|
||||
:<- [:wallet/tx-settings]
|
||||
:-> :nonce)
|
||||
:<- [:wallet/send-route]
|
||||
:<- [:wallet/tx-settings-nonce-user]
|
||||
(fn [[route value-set-by-user]]
|
||||
(or value-set-by-user (:nonce (first route)))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-gas-fees
|
||||
:<- [:wallet/send-route]
|
||||
(fn [route]
|
||||
(:gas-fees (first route))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-suggested-nonce
|
||||
:<- [:wallet/send-route]
|
||||
(fn [route]
|
||||
(:suggested-tx-nonce (first route))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-priority-fee
|
||||
:<- [:wallet/tx-settings-gas-fees]
|
||||
:<- [:wallet/tx-settings-priority-fee-user]
|
||||
(fn [[gas-fees value-set-by-user]]
|
||||
(or value-set-by-user (:tx-priority-fee gas-fees))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-max-base-fee
|
||||
:<- [:wallet/tx-settings-gas-fees]
|
||||
:<- [:wallet/tx-settings-max-base-fee-user]
|
||||
(fn [[gas-fees value-set-by-user]]
|
||||
(or value-set-by-user (:current-base-fee gas-fees))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-suggested-max-priority-fee
|
||||
:<- [:wallet/tx-settings-gas-fees]
|
||||
:<- [:wallet/tx-settings-max-base-fee-user]
|
||||
(fn [[gas-fees value-set-by-user]]
|
||||
(or value-set-by-user (:suggested-max-priority-fee gas-fees))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/tx-settings-suggested-min-priority-fee
|
||||
:<- [:wallet/tx-settings-gas-fees]
|
||||
:<- [:wallet/tx-settings-max-base-fee-user]
|
||||
(fn [[gas-fees value-set-by-user]]
|
||||
(or value-set-by-user (:suggested-min-priority-fee gas-fees))))
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
token-for-fees (first (filter #(= (string/lower-case (:symbol %))
|
||||
(string/lower-case token-symbol-for-fees))
|
||||
tokens))
|
||||
fee-in-native-token (send-utils/calculate-full-route-gas-fee [swap-proposal])
|
||||
fee-in-native-token (send-utils/full-route-gas-fee [swap-proposal])
|
||||
fee-in-fiat (utils/calculate-token-fiat-value
|
||||
{:currency currency
|
||||
:balance fee-in-native-token
|
||||
@@ -333,43 +333,3 @@
|
||||
:token token-for-fees
|
||||
:prices-per-token prices-per-token})]
|
||||
fee-in-fiat)))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/swap-exchange-rate-crypto
|
||||
:<- [:wallet/swap-proposal-amount-in]
|
||||
:<- [:wallet/swap-asset-to-pay]
|
||||
:<- [:wallet/swap-proposal-amount-out]
|
||||
:<- [:wallet/swap-asset-to-receive]
|
||||
(fn [[amount-in asset-to-pay amount-out asset-to-receive]]
|
||||
(let [pay-token-decimals (:decimals asset-to-pay)
|
||||
receive-token-decimals (:decimals asset-to-receive)
|
||||
amount-in-num (some-> amount-in
|
||||
(number/hex->whole pay-token-decimals)
|
||||
(number/to-fixed pay-token-decimals)
|
||||
(money/->bignumber))
|
||||
amount-out-num (some-> amount-out
|
||||
(number/hex->whole receive-token-decimals)
|
||||
(number/to-fixed receive-token-decimals)
|
||||
(money/->bignumber))
|
||||
exchange-rate (when (and amount-in-num amount-out-num)
|
||||
(money/div amount-in-num amount-out-num))
|
||||
display-decimals (min pay-token-decimals
|
||||
constants/min-token-decimals-to-display)]
|
||||
(when exchange-rate
|
||||
(number/to-fixed exchange-rate display-decimals)))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/swap-exchange-rate-fiat
|
||||
:<- [:wallet/swap-exchange-rate-crypto]
|
||||
:<- [:wallet/swap-asset-to-pay]
|
||||
:<- [:profile/currency]
|
||||
:<- [:profile/currency-symbol]
|
||||
:<- [:wallet/prices-per-token]
|
||||
(fn [[swap-exchange-rate asset-to-pay currency currency-symbol prices-per-token]]
|
||||
(when swap-exchange-rate
|
||||
(let [fiat-value (utils/calculate-token-fiat-value
|
||||
{:currency currency
|
||||
:balance swap-exchange-rate
|
||||
:token asset-to-pay
|
||||
:prices-per-token prices-per-token})]
|
||||
(utils/fiat-formatted-for-ui currency-symbol fiat-value)))))
|
||||
|
||||
@@ -120,9 +120,9 @@
|
||||
:approval-required true
|
||||
:approval-amount-required "0x10000"
|
||||
:gas-amount "25000"
|
||||
:gas-fees {:max-fee-per-gas-medium "4"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
:gas-fees {:tx-max-fees-per-gas "4"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}
|
||||
:error-response "Error"
|
||||
:loading-swap-proposal? false
|
||||
:max-slippage 0.5})
|
||||
|
||||
@@ -162,6 +162,17 @@
|
||||
:<- [:wallet/wallet-send]
|
||||
:-> :route)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/gas-fees
|
||||
:<- [:wallet/wallet-send-route]
|
||||
(fn [route]
|
||||
(:gas-fees (first route))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/suggested-gas-fees-for-setting
|
||||
:<- [:wallet/gas-fees]
|
||||
:-> :suggested-gas-fees-for-setting)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/wallet-send-enough-assets?
|
||||
:<- [:wallet/wallet-send]
|
||||
@@ -844,22 +855,59 @@
|
||||
:<- [:profile/currency]
|
||||
:<- [:profile/currency-symbol]
|
||||
:<- [:wallet/prices-per-token]
|
||||
(fn [[account route currency currency-symbol prices-per-token] [_ token-symbol-for-fees]]
|
||||
(when token-symbol-for-fees
|
||||
(let [tokens (:tokens account)
|
||||
token-for-fees (first (filter #(= (string/lower-case (:symbol %))
|
||||
(string/lower-case token-symbol-for-fees))
|
||||
tokens))
|
||||
fee-in-native-token (send-utils/calculate-full-route-gas-fee route)
|
||||
fee-in-fiat (utils/calculate-token-fiat-value
|
||||
{:currency currency
|
||||
:balance fee-in-native-token
|
||||
:token token-for-fees
|
||||
:prices-per-token prices-per-token})
|
||||
fee-formatted (utils/fiat-formatted-for-ui
|
||||
currency-symbol
|
||||
fee-in-fiat)]
|
||||
fee-formatted))))
|
||||
(fn [[account route currency currency-symbol prices-per-token]]
|
||||
(let [token-symbol-for-fees (get-in (first route) [:from :native-currency-symbol])]
|
||||
(when token-symbol-for-fees
|
||||
(let [tokens (:tokens account)
|
||||
token-for-fees (first (filter #(= (string/lower-case (:symbol %))
|
||||
(string/lower-case token-symbol-for-fees))
|
||||
tokens))
|
||||
fee-in-native-token (send-utils/full-route-gas-fee route)
|
||||
fee-in-fiat (utils/calculate-token-fiat-value
|
||||
{:currency currency
|
||||
:balance fee-in-native-token
|
||||
:token token-for-fees
|
||||
:prices-per-token prices-per-token})
|
||||
fee-formatted (utils/fiat-formatted-for-ui
|
||||
currency-symbol
|
||||
fee-in-fiat)]
|
||||
fee-formatted)))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/wallet-send-transaction-setting-fiat-formatted
|
||||
:<- [:wallet/current-viewing-account]
|
||||
:<- [:wallet/wallet-send-route]
|
||||
:<- [:profile/currency]
|
||||
:<- [:profile/currency-symbol]
|
||||
:<- [:wallet/prices-per-token]
|
||||
:<- [:wallet/suggested-gas-fees-for-setting]
|
||||
(fn [[account route currency currency-symbol prices-per-token fees-for-settings]
|
||||
[_ transaction-setting]]
|
||||
(let [token-symbol-for-fees (get-in (first route) [:from :native-currency-symbol])]
|
||||
(when token-symbol-for-fees
|
||||
(let [tokens (:tokens account)
|
||||
token-for-fees (first (filter #(= (string/lower-case (:symbol %))
|
||||
(string/lower-case token-symbol-for-fees))
|
||||
tokens))
|
||||
gas-price (transaction-setting fees-for-settings)
|
||||
fee-in-native-token (send-utils/full-route-gas-fee-for-custom-gas-price route gas-price)
|
||||
fee-in-fiat (utils/calculate-token-fiat-value
|
||||
{:currency currency
|
||||
:balance fee-in-native-token
|
||||
:token token-for-fees
|
||||
:prices-per-token prices-per-token})
|
||||
fee-formatted (utils/fiat-formatted-for-ui
|
||||
currency-symbol
|
||||
fee-in-fiat)]
|
||||
fee-formatted)))))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/has-partially-operable-accounts?
|
||||
:<- [:wallet/accounts]
|
||||
(fn [accounts]
|
||||
(->> accounts
|
||||
(some #(= :partially (:operable %)))
|
||||
boolean)))
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/accounts-names
|
||||
|
||||
@@ -205,9 +205,10 @@
|
||||
|
||||
(def route-data
|
||||
[{:gas-amount "25000"
|
||||
:gas-fees {:max-fee-per-gas-medium "4"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}}])
|
||||
:gas-fees {:tx-max-fees-per-gas "4"
|
||||
:eip-1559-enabled true
|
||||
:l-1-gas-fee "0"}
|
||||
:from {:native-currency-symbol "ETH"}}])
|
||||
|
||||
(h/deftest-sub :wallet/balances-in-selected-networks
|
||||
[sub-name]
|
||||
@@ -938,9 +939,21 @@
|
||||
(assoc-in [:profile/profile :currency] :usd)
|
||||
(assoc-in [:profile/profile :currency-symbol] "$")))
|
||||
|
||||
(let [token-symbol-for-fees "ETH"
|
||||
result (rf/sub [sub-name token-symbol-for-fees])]
|
||||
(is (match? result "$0.20")))))
|
||||
(is (match? (rf/sub [sub-name]) "$0.20"))))
|
||||
|
||||
(h/deftest-sub :wallet/has-partially-operable-accounts?
|
||||
[sub-name]
|
||||
(testing "returns false if there are no partially operable accounts"
|
||||
(swap! rf-db/app-db
|
||||
#(assoc-in % [:wallet :accounts] accounts))
|
||||
(is (false? (rf/sub [sub-name]))))
|
||||
|
||||
(testing "returns true if there are partially operable accounts"
|
||||
(swap! rf-db/app-db
|
||||
#(assoc-in %
|
||||
[:wallet :accounts]
|
||||
(update accounts "0x2" assoc :operable :partially)))
|
||||
(is (true? (rf/sub [sub-name])))))
|
||||
|
||||
(h/deftest-sub :wallet/zero-balance-in-all-non-watched-accounts?
|
||||
[sub-name]
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
(ns status-im.ui.core
|
||||
(:require [re-frame.db :as rf.db]
|
||||
[reagent.core :as reagent]
|
||||
#_[utils.re-frame :as rf]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
(defn auth-success-fixtures
|
||||
[]
|
||||
(rf/reg-fx :effects.standard-auth/on-auth-success
|
||||
(fn [on-auth-success] (on-auth-success)))
|
||||
(rf/reg-fx :effects.biometric/check-if-available
|
||||
(fn [{:keys [on-success]}] (on-success)))
|
||||
(rf/reg-event-fx :biometric/authenticate
|
||||
@@ -34,7 +32,7 @@
|
||||
(let [on-success-called? (atom false)
|
||||
args (assoc default-args :on-auth-success #(reset! on-success-called? true))]
|
||||
(rf/dispatch [:standard-auth/authorize args])
|
||||
(rf-test/wait-for [:standard-auth/migrate-partially-operable-accounts]
|
||||
(rf-test/wait-for [:standard-auth/on-biometric-success]
|
||||
(is @on-success-called?))))))
|
||||
|
||||
(defn auth-cancel-fixtures
|
||||
|
||||
@@ -143,7 +143,8 @@
|
||||
|
||||
(defn to-hex
|
||||
[^js bn]
|
||||
(str "0x" (to-string bn 16)))
|
||||
(when bn
|
||||
(str "0x" (to-string bn 16))))
|
||||
|
||||
(defn from-hex
|
||||
[hex-str]
|
||||
@@ -195,8 +196,9 @@
|
||||
(greater-than-or-equals balance amount)))
|
||||
|
||||
(defn- add*
|
||||
[bn1 n2]
|
||||
(.add ^js bn1 n2))
|
||||
[n1 n2]
|
||||
(when-let [[^js bn1 ^js bn2] (->bignumbers n1 n2)]
|
||||
(.add ^js bn1 bn2)))
|
||||
|
||||
(def add
|
||||
"Add with defaults, this version is able to receive `nil` and takes them as 0."
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
||||
"owner": "status-im",
|
||||
"repo": "status-go",
|
||||
"version": "v10.4.0",
|
||||
"commit-sha1": "1bfb0cef022afc1484a410cb3e0097e7523bb705",
|
||||
"src-sha256": "13cg07ld319g1fyaqpkjnpdw6iap389dwzwnh9g870ci8scpdy5m"
|
||||
"version": "feat/tx-path-new-props",
|
||||
"commit-sha1": "d2c220fe60bb7817753167184ba70e9b47cfa5be",
|
||||
"src-sha256": "10n4kf7lb0rm57b3llyalpgv70dp3k560nxxfpb7f0gcc5kpl97q"
|
||||
}
|
||||
|
||||
+13
-10
@@ -4,11 +4,11 @@
|
||||
"about-gas-amount": "AKA gas limit. Refers to the maximum number of computational steps (or units of gas) that a transaction can consume. It represents the complexity or amount of work required to execute a transaction or smart contract.\n\nThe gas limit is a cap on how much work the transaction can do on the blockchain. If the gas limit is set too low, the transaction may fail due to insufficient gas.",
|
||||
"about-key-storage-content": "Status will never access your private key. Be sure to backup your seed phrase. If you lose your phone it is the only way to access your keys.",
|
||||
"about-key-storage-title": "About key storage",
|
||||
"about-max-base-fee": "When your transaction gets included in the block, any difference between your max base fee and the actual base fee will be refunded.",
|
||||
"about-max-base-fee": "When your transaction gets included in the block, any difference between your max base fee and the actual base fee will be refunded.\n\nNote: the ETH amount shown for this value is calculated: max base fee (in GWEI) * max gas amount.",
|
||||
"about-names-content": "No one can pretend to be you! You’re anonymous by default and never have to reveal your real name. You can register a custom name for a small fee.",
|
||||
"about-names-title": "Names can’t be changed",
|
||||
"about-nonce": "Transaction counter ensuring transactions from your account are processed in the correct order and can’t be replayed. Each new transaction increments the nonce by 1, ensuring uniqueness and preventing double-spending.\n\nIf a transaction with a lower nonce is pending, higher nonce transactions will remain in the queue until the earlier one is confirmed.",
|
||||
"about-priority-fee": "AKA miner tip. A voluntary fee you can add to incentivise miners or validators to prioritise your transaction.\n\nThe higher the tip, the faster your transaction is likely to be processed, especially curing periods of higher network congestion.",
|
||||
"about-priority-fee": "AKA miner tip. A voluntary fee you can add to incentivise miners or validators to prioritise your transaction.\n\nThe higher the tip, the faster your transaction is likely to be processed, especially during periods of higher network congestion.\n\nNote: the ETH amount shown for this value is calculated: Priority fee (in GWEI) * Max gas amount",
|
||||
"about-sharing-data": "About sharing data",
|
||||
"accent-colour": "Accent colour",
|
||||
"accent-colour-updated": "Accent colour updated",
|
||||
@@ -1111,7 +1111,9 @@
|
||||
"from-label": "From",
|
||||
"gas-amount": "Gas amount",
|
||||
"gas-amount-limit": "Gas amount limit",
|
||||
"gas-amount-lower": "Too low. Recommended: {{current}} UNITS",
|
||||
"gas-amount-lower": "Too low. Minimum: {{low}}",
|
||||
"gas-amount-higher": "Too high. Maximum: {{high}}",
|
||||
"gas-amount-current": "Current: {{current}}",
|
||||
"gas-limit": "Gas limit",
|
||||
"gas-price": "Gas price",
|
||||
"gas-used": "Gas used",
|
||||
@@ -1591,9 +1593,10 @@
|
||||
"master-account": "Master account",
|
||||
"max": "Max: {{number}}",
|
||||
"max-2-decimals": "Max. 2 decimals",
|
||||
"max-base-fee": "Max base fee",
|
||||
"max-base-fee-higher": "Higher than necessary. Current: {{current}} GWEI",
|
||||
"max-base-fee-lower": "Too low. Current: {{current}} GWEI ",
|
||||
"max-base-fee": "Max base fee",
|
||||
"max-base-fee-current": "Current: {{current}}",
|
||||
"max-base-fee-higher": "Higher than necessary (current: {{current}})",
|
||||
"max-base-fee-lower": "Lower than priority fee: {{priority-fee}}",
|
||||
"max-fee": "Max fee",
|
||||
"max-fees": "Max fees",
|
||||
"max-gas-amount": "Max gas amount",
|
||||
@@ -2068,8 +2071,10 @@
|
||||
"principles": "Principles",
|
||||
"priority": "Priority",
|
||||
"priority-fee": "Priority fee",
|
||||
"priority-fee-higher": "More than necessary. Current: {{low}} - {{high}} GWEI",
|
||||
"priority-fee-lower": "Too low. Current: {{low}} - {{high}} GWEI",
|
||||
"priority-fee-higher": "Higher than necessary: {{low}} - {{high}}",
|
||||
"priority-fee-higher-max-base": "Higher than max base fee: {{max-base-fee}}",
|
||||
"priority-fee-lower": "Lower than suggested: {{low}} - {{high}}",
|
||||
"priority-fee-current": "Current: {{current}}",
|
||||
"privacy": "Privacy",
|
||||
"privacy-and-security": "Privacy and security",
|
||||
"privacy-photos": "Profile Photo Privacy",
|
||||
@@ -2279,7 +2284,6 @@
|
||||
"saved-address-network-preference-selection-description": "Only change if you know which networks the address owner is happy to to receive funds on",
|
||||
"saved-address-removed": "Saved address removed",
|
||||
"saved-addresses": "Saved addresses",
|
||||
"saved-addresses-limit-reached-toast": "Limit of 20 saved addresses reached. Remove a saved address to add a new one.",
|
||||
"saving-keys-to-device": "Saving keys to device...",
|
||||
"say-hi": "Say hi",
|
||||
"scan-an-account-qr-code": "Scan an account QR code",
|
||||
@@ -2567,7 +2571,6 @@
|
||||
"sun": "Sun",
|
||||
"swap": "Swap",
|
||||
"swap-details": "Swap details",
|
||||
"swap-exchange-rate-in-crypto": "1 {{receive-token-symbol}} ≈ {{exchange-rate}} {{pay-token-symbol}}",
|
||||
"swap-failed": "Swap failed",
|
||||
"swapped-to": "Swapped {{pay-amount}} {{pay-token-symbol}} to {{receive-amount}} {{receive-token-symbol}}",
|
||||
"swapping-to": "Swapping {{pay-amount}} {{pay-token-symbol}} to {{receive-amount}} {{receive-token-symbol}}",
|
||||
|
||||
Reference in New Issue
Block a user