Compare commits
58
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52d7d60751 | ||
|
|
37c25b9351 | ||
|
|
c917454b7d | ||
|
|
25d51aa929 | ||
|
|
5bb3cdc19e | ||
|
|
756e892acb | ||
|
|
0dcf4e7b14 | ||
|
|
b3fbed1a1b | ||
|
|
4826bedba4 | ||
|
|
b81ac07636 | ||
|
|
2da2dfdad7 | ||
|
|
1036bff41b | ||
|
|
e15b9a224c | ||
|
|
82ab32c028 | ||
|
|
3541485338 | ||
|
|
8c82a84aee | ||
|
|
447945f46e | ||
|
|
16b2c90040 | ||
|
|
a210d59c4f | ||
|
|
fe0c5c2da7 | ||
|
|
8c91fbdd49 | ||
|
|
93e0c1fc5e | ||
|
|
9c7d215217 | ||
|
|
4668d6a285 | ||
|
|
6c9c92efc7 | ||
|
|
eff252c7c0 | ||
|
|
ab12c8a17d | ||
|
|
8b21d6ab53 | ||
|
|
36fa4bdb62 | ||
|
|
ed10ed70f7 | ||
|
|
8c089bb334 | ||
|
|
45b09603d2 | ||
|
|
857cb47ceb | ||
|
|
4782b3eb2a | ||
|
|
1a5008bcda | ||
|
|
c5c7f2eb27 | ||
|
|
25072cff9f | ||
|
|
e38cb0dee6 | ||
|
|
ba4a8b7d81 | ||
|
|
882e40d99f | ||
|
|
c304b1b623 | ||
|
|
1da39e064d | ||
|
|
3899368aa0 | ||
|
|
5ff1c8f1e4 | ||
|
|
7289940653 | ||
|
|
a253f8cedb | ||
|
|
daf52102ce | ||
|
|
fa20d4d9c3 | ||
|
|
dd26fcf42c | ||
|
|
8ac9cc08e1 | ||
|
|
c1230319e1 | ||
|
|
1e48442d67 | ||
|
|
94fbbbcb3c | ||
|
|
4dfd616583 | ||
|
|
85d00e47af | ||
|
|
438fd7a512 | ||
|
|
ee5f73f5ee | ||
|
|
b49c0ae58a |
@@ -143,6 +143,10 @@ android {
|
||||
kotlinOptions {
|
||||
jvmTarget = JavaVersion.VERSION_17
|
||||
}
|
||||
// Disable default lint checks to remove redundant lintVitalReportRelease task
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
}
|
||||
|
||||
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
|
||||
externalNativeBuild {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.13'
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
|
||||
/* 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.13'
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
|
||||
import groovy.json.JsonBuilder
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.13'
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env groovy
|
||||
library 'status-jenkins-lib@v1.9.13'
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
|
||||
/* 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.13'
|
||||
library 'status-jenkins-lib@v1.9.18'
|
||||
|
||||
/* 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.11.2):
|
||||
- react-native-compat (2.17.3):
|
||||
- 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: 3af9add14d349701306d3d052638435f6795ac2c
|
||||
react-native-compat: fd639220cca206df6c74b95df56a1809d78ba5a3
|
||||
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
|
||||
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
|
||||
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
|
||||
|
||||
+229
-270
@@ -8838,8 +8838,8 @@
|
||||
"repo": "https://jitpack.io",
|
||||
"files": {
|
||||
"reflow-animator-1.0.6.pom": {
|
||||
"sha1": "4fe3d33c764beebdc477d93a590f63dfa38a5f6b",
|
||||
"sha256": "sha256-MEINlM+8v6LDFGREWswamEl17l26xa4eQHeKPcxbSI8="
|
||||
"sha1": "d2c5089ae74a366676d9432c401e373b4895858e",
|
||||
"sha256": "sha256-uanUNC0CwC2YnlQ4rpZBMdp+Is6UF36Y/Iwn6YLLHno="
|
||||
},
|
||||
"reflow-animator-1.0.6.aar": {
|
||||
"sha1": "36074a3fcb77c2ba12bd2de7dde81441e0c7504f",
|
||||
@@ -8898,20 +8898,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/gradle/github-dependency-graph-gradle-plugin/1.3.1",
|
||||
"path": "org/gradle/github-dependency-graph-gradle-plugin/1.3.2",
|
||||
"repo": "https://plugins.gradle.org/m2",
|
||||
"files": {
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.pom": {
|
||||
"sha1": "5d95862731c88c1e9190fa27a7bd2ffe3ab549d7",
|
||||
"sha256": "sha256-Zk7PNeEBetpWAp4e2rN5A+zn0NDsG3G5kU62uPssiJo="
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.pom": {
|
||||
"sha1": "0740a44f4c99d3e2d9fbc2c89afcb195ec66dbdf",
|
||||
"sha256": "sha256-xaVDODswVgtoaoIAtgCELvnd8IAx8AYdJA+FE3a0Jxs="
|
||||
},
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.jar": {
|
||||
"sha1": "c905642b753938ef0fa1cda1fc330fae1c4016aa",
|
||||
"sha256": "sha256-0uYWjgzaasT18c62W6IElG2jW1Oe+X0O/4dflT5E61k="
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.jar": {
|
||||
"sha1": "ba3d0995475c6aa79048e865d7923bbed20f36a0",
|
||||
"sha256": "sha256-VdNKG2xBu75P6hSlZaERE3ZxOSSwAaPMjD2EnGSejQA="
|
||||
},
|
||||
"github-dependency-graph-gradle-plugin-1.3.1.module": {
|
||||
"sha1": "818778b46a93f8d60f11cfa83c7ecbb2481706d8",
|
||||
"sha256": "sha256-agfZPNoTEZDEU5USp5slvtvCfm5OxZucX7XuZ9xugzU="
|
||||
"github-dependency-graph-gradle-plugin-1.3.2.module": {
|
||||
"sha1": "879866cccedf304d8c484d3bb70eb6d699e9e118",
|
||||
"sha256": "sha256-nBqz4Xbqelt3YhEAEG9aPzYC0+2MBcM1M+1Ys5PumhQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -9052,16 +9052,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "commons-codec/commons-codec/1.17.1",
|
||||
"path": "commons-codec/commons-codec/1.18.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-codec-1.17.1.pom": {
|
||||
"sha1": "d187e2d50ab520895df0dcb9d88980ffea50bfa3",
|
||||
"sha256": "sha256-f6DbTYFQ2vkylYuK6onuJKu00Y4jFqXeU1J4/BMVEqA="
|
||||
"commons-codec-1.18.0.pom": {
|
||||
"sha1": "2aa7395e4e4d63be2fd4439da7a01527235f76bf",
|
||||
"sha256": "sha256-dLkW2ksDhMYZ5t1MGN7+iqQ4f3lSBSU8+0u7L0WM3c4="
|
||||
},
|
||||
"commons-codec-1.17.1.jar": {
|
||||
"sha1": "973638b7149d333563584137ebf13a691bb60579",
|
||||
"sha256": "sha256-+fbLED8t3DyZqdgK2irnvwaFER/Wv/zLcgM9HaTm/yM="
|
||||
"commons-codec-1.18.0.jar": {
|
||||
"sha1": "ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f",
|
||||
"sha256": "sha256-ugBfMEzvkqPe3iSjitWsm4r8zw2PdYOdbBM4Y0z39uQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -9135,20 +9135,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "commons-logging/commons-logging/1.3.4",
|
||||
"path": "commons-logging/commons-logging/1.3.5",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"commons-logging-1.3.4.pom": {
|
||||
"sha1": "e919eab34a66d31a9bbe15ddc563d7d2e6770826",
|
||||
"sha256": "sha256-1L2jSJKqzL9PrTP8MjqKqQfvnXmYRlnaJJRMCoa/CGU="
|
||||
"commons-logging-1.3.5.pom": {
|
||||
"sha1": "378e7ead6461eabd50a97f6503d061cad0dcae9d",
|
||||
"sha256": "sha256-zPSjA0b1AnuUlqvVYpCsJtFZq/K+ZN8SZWEdyUALnWg="
|
||||
},
|
||||
"commons-logging-1.3.4-api.jar": {
|
||||
"sha1": "de4050262dfa7522365a9e3c76ed8cf4683fcffa",
|
||||
"sha256": "sha256-X1zVkiUzQHDbaxctBaaFuEei+tY+WxjtAjqqpeErgh8="
|
||||
"commons-logging-1.3.5-api.jar": {
|
||||
"sha1": "2e234baf9b0fd82e4e2f0db3b9083900fbfe2f36",
|
||||
"sha256": "sha256-6WjRzl2r6cQzxHbTd+ZSJzD2FttdtdKO2sfEWMtVMdw="
|
||||
},
|
||||
"commons-logging-1.3.4.jar": {
|
||||
"sha1": "b9fc14968d63a8b8a8a2c1885fe3e90564239708",
|
||||
"sha256": "sha256-vC3+MvHvBlCeagZRRMGt97Qg6r8RqH8wvRJ/j6ozIBY="
|
||||
"commons-logging-1.3.5.jar": {
|
||||
"sha1": "a3fcc5d3c29b2b03433aa2d2f2d2c1b1638924a1",
|
||||
"sha256": "sha256-bXp0TkAnZJ+7UIld+Ul9EJ+Yx2amNwYv6NLqu7MUC6Q="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -11836,12 +11836,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/code/gson/gson-parent/2.11.0",
|
||||
"path": "com/google/code/gson/gson-parent/2.12.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"gson-parent-2.11.0.pom": {
|
||||
"sha1": "b32d3bc5c89c852efe4c176df6c3fdeccbe150ef",
|
||||
"sha256": "sha256-issfO3Km8CaRasBzW62aqwKT1Sftt7NlMn3vE6k2e3o="
|
||||
"gson-parent-2.12.1.pom": {
|
||||
"sha1": "660107b2e76095ef86bbd15c503afe11e5260bfb",
|
||||
"sha256": "sha256-yeewt+Mb574iaEl5wGgAHGUssRPE5u2JTjm2Q97gf8E="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -11967,24 +11967,24 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/code/gson/gson/2.11.0",
|
||||
"path": "com/google/code/gson/gson/2.12.1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"gson-2.11.0.pom": {
|
||||
"sha1": "55796dd7cc329027df79e96c4e6631e3c02c93c5",
|
||||
"sha256": "sha256-wOVHvqmYiI5uJcWIapDnYicryItSdTQ90sBd7Wyi42A="
|
||||
"gson-2.12.1.pom": {
|
||||
"sha1": "d2c3993ff96e5da39a57e5e0b695eda560949b57",
|
||||
"sha256": "sha256-C1c17IX0UoLx4sdpd5gAQnsVCoFj9AUJOpKAtxyrGXg="
|
||||
},
|
||||
"gson-2.11.0.buildinfo": {
|
||||
"sha1": "4d1c42ee3c07943d8e07fab98bf0491877b4c0c6",
|
||||
"sha256": "sha256-d6O/J0uIwA+ieS0kkb+yLkeL3OUzOMUcMBHW7nDr0pI="
|
||||
"gson-2.12.1.buildinfo": {
|
||||
"sha1": "c2e219d4a63eebf78ce409ee8303eb930248f486",
|
||||
"sha256": "sha256-fNm4d7ep72MLsQq/BeBRdEuam/9hzGJafTURb48yeuY="
|
||||
},
|
||||
"gson-2.11.0.buildinfo.asc": {
|
||||
"sha1": "ba50162dd390a51e11a706d62ef9a5d120138337",
|
||||
"sha256": "sha256-blLhhVcT0w8htC6V6rrqU+CZ3egMLBv5AgE76D+zGIY="
|
||||
"gson-2.12.1.buildinfo.asc": {
|
||||
"sha1": "01ba63402708ab4efbd2fa2f4dc5ee7f136b9479",
|
||||
"sha256": "sha256-M+At44sk0y+mblm7UnhRzYzeO36NPGTpP3rTID/wJjU="
|
||||
},
|
||||
"gson-2.11.0.jar": {
|
||||
"sha1": "527175ca6d81050b53bdd4c457a6d6e017626b0e",
|
||||
"sha256": "sha256-V5KNblpu3rKr03cKj5W6RNzkXzsjt6ncKzCcWBVSp4s="
|
||||
"gson-2.12.1.jar": {
|
||||
"sha1": "4e773a317740b83b43cfc3d652962856041697cb",
|
||||
"sha256": "sha256-6+4T1ft0d81/HMAQ4MNW34yoBwlxUkjal/eeNcy0++w="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12199,21 +12199,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -12350,17 +12335,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -12561,27 +12535,27 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava-parent/33.3.1-jre",
|
||||
"path": "com/google/guava/guava-parent/33.4.0-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-parent-33.3.1-jre.pom": {
|
||||
"sha1": "94729a0ed1dc35f623edd13afa6c1c2fe9a15d7c",
|
||||
"sha256": "sha256-VUQdsn6Iad/v4FMFm99Hi9x+lVhWQr85HwAjNF/VYoc="
|
||||
"guava-parent-33.4.0-jre.pom": {
|
||||
"sha1": "ee79b87abc4ef9b3591db13c59de368c7b03dc79",
|
||||
"sha256": "sha256-Okme00oNnuDxvMOSMAIaHNTi990EJqtoRPWFRl1B3Nc="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava-testlib/33.3.1-jre",
|
||||
"path": "com/google/guava/guava-testlib/33.4.0-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-testlib-33.3.1-jre.pom": {
|
||||
"sha1": "12fbde61e46674436b0ec48f9b54fbd5f78f8256",
|
||||
"sha256": "sha256-4n6bu2lrvSCUeAF1YUO9EazSCFBFSnEILoceA+27PSw="
|
||||
"guava-testlib-33.4.0-jre.pom": {
|
||||
"sha1": "f92730965d606702deb41eca3afb47396b7a5c6a",
|
||||
"sha256": "sha256-p+EQNjDV99XYCN3NnbnVhLvVldRW2UxpHOwJDQ7qZ/A="
|
||||
},
|
||||
"guava-testlib-33.3.1-jre.jar": {
|
||||
"sha1": "a2eeefe29ae8a5b2b6d3a318295fa9a1925bdc61",
|
||||
"sha256": "sha256-j943uKx8GbgmwhbfKvPXEd9JRb/baLPx5qHD9KUng1w="
|
||||
"guava-testlib-33.4.0-jre.jar": {
|
||||
"sha1": "e849ea71846b5ca96387d543c7ac862f18fe2513",
|
||||
"sha256": "sha256-JF+agJa8uth2DSga3QKf4klh/pOZ3f6as3srsLCe7WI="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12767,20 +12741,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/guava/guava/33.3.1-jre",
|
||||
"path": "com/google/guava/guava/33.4.0-jre",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"guava-33.3.1-jre.pom": {
|
||||
"sha1": "5a5628b34628748abcb73144a909ddbea2265ed9",
|
||||
"sha256": "sha256-MTtn/BPrOwY07acVoSKZcfXem4GIvCgHYoFbg6J18ZM="
|
||||
"guava-33.4.0-jre.pom": {
|
||||
"sha1": "5c671f0be7aa66b15ed0ec2e1afb4ee99c8c78e8",
|
||||
"sha256": "sha256-+pTbQAIt38d1r57PsTDM5RW5b3QNr4LyCvhG2VBUE0s="
|
||||
},
|
||||
"guava-33.3.1-jre.jar": {
|
||||
"sha1": "852f8b363da0111e819460021ca693cacca3e8db",
|
||||
"sha256": "sha256-S/Dixa+ORSXJbo/eF6T3MH+X+EePEcTI41oOMpiuTpA="
|
||||
"guava-33.4.0-jre.jar": {
|
||||
"sha1": "03fcc0a259f724c7de54a6a55ea7e26d3d5c0cac",
|
||||
"sha256": "sha256-uRjJin5E2+lOvZ/j5Azdqttak+anjrYAi0LfI3JB5Tg="
|
||||
},
|
||||
"guava-33.3.1-jre.module": {
|
||||
"sha1": "c99293bbf166d01849489fc6f94a101f79072aa7",
|
||||
"sha256": "sha256-QYWMhHU/2WprfFESL8zvOVWMkcwIJk4IUGvPIODmNzM="
|
||||
"guava-33.4.0-jre.module": {
|
||||
"sha1": "edaf59b47aef1afba209dfafe1481ed86ff07f04",
|
||||
"sha256": "sha256-gg6BfobEk6p6/9bLuZHuYJJbbIt0VB90LLIgcPbyBFk="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12953,12 +12927,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-bom/4.29.0",
|
||||
"path": "com/google/protobuf/protobuf-bom/4.30.0-RC1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-bom-4.29.0.pom": {
|
||||
"sha1": "5542df7ac3708da8bf30756f4ee6d804d04b8c9b",
|
||||
"sha256": "sha256-3L/Apl6DmDAE0HFOmL8NIGBwEUVbYhk5cowAkmvIyZk="
|
||||
"protobuf-bom-4.30.0-RC1.pom": {
|
||||
"sha1": "da26e5286a508eb4c29c3294f34d2fb932916cce",
|
||||
"sha256": "sha256-Gs5LZwG6EhofKfwcjoPgc9pKFKCgex2GkjeMwK+GDYM="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13204,16 +13178,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-java/4.29.0",
|
||||
"path": "com/google/protobuf/protobuf-java/4.30.0-RC1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-java-4.29.0.pom": {
|
||||
"sha1": "27c4abe9c47f4aed31cf7acff86853a05f7e85f0",
|
||||
"sha256": "sha256-7cHftEVG5yel+sU/CQUGv6aN2DB65vEHbv+tVy+S16Q="
|
||||
"protobuf-java-4.30.0-RC1.pom": {
|
||||
"sha1": "9b1a4031569c7b624e2e7e0d7bb12fd752f37e39",
|
||||
"sha256": "sha256-3A0yPW415z4X6ICF0obJblY2xk8N8WcLCULsC8MYass="
|
||||
},
|
||||
"protobuf-java-4.29.0.jar": {
|
||||
"sha1": "ffea90ab158435d68de76951857ef5f8b0f98365",
|
||||
"sha256": "sha256-FpAYUevl6J/oiqrTwmhmNzaVvC4wYnu4kyhH4vX8LnY="
|
||||
"protobuf-java-4.30.0-RC1.jar": {
|
||||
"sha1": "fe024780d64bf9edeb16d33974fd06799758a9e5",
|
||||
"sha256": "sha256-ywRRWEELxFcCkN+AagbwIbYvLB4m7X4dtlczp8PzXoU="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13333,12 +13307,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/google/protobuf/protobuf-parent/4.29.0",
|
||||
"path": "com/google/protobuf/protobuf-parent/4.30.0-RC1",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"protobuf-parent-4.29.0.pom": {
|
||||
"sha1": "c35e0844930aea715cc8f4335fee49223b1fe35c",
|
||||
"sha256": "sha256-jU6O2nh45revZuPCtvWHE839P7bNsHGS3My2HN0uSTA="
|
||||
"protobuf-parent-4.30.0-RC1.pom": {
|
||||
"sha1": "bfd3c39ebcb48274c73c80b82a2925b26a2aea80",
|
||||
"sha256": "sha256-vBZlQhUkJXKX06FCuoKNYc5/hD86HDSonJ4agltkvxQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13652,20 +13626,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okio/okio-jvm/3.9.1",
|
||||
"path": "com/squareup/okio/okio-jvm/3.10.2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"okio-jvm-3.9.1.pom": {
|
||||
"sha1": "32a1fc013a444bd5d7c45346973c102d02dbeb1e",
|
||||
"sha256": "sha256-VXZInO8kBTNoAPxt6VhUU18zVxpO/lpa0OybmwkNIdU="
|
||||
"okio-jvm-3.10.2.pom": {
|
||||
"sha1": "bf3c29f09bf646535ba5a72206280bd5d9631d90",
|
||||
"sha256": "sha256-AP000Iv0YxNiofVSLKpXyuKMosfpOS76My72Vs/anUM="
|
||||
},
|
||||
"okio-jvm-3.9.1.jar": {
|
||||
"sha1": "79696e3f4ff05d41ba2b3dc68adb5808a2e5dc53",
|
||||
"sha256": "sha256-/m/pE3j5v6ewjDhkgozkGABc8orMoS6IR+tlxWXDdQA="
|
||||
"okio-jvm-3.10.2.jar": {
|
||||
"sha1": "6a2cc3acd5a83e66075a2f6c5b0608b6043fa34c",
|
||||
"sha256": "sha256-/Qp+dsZzHwDpILe8EcBdgjqTIEVDGt1Ujgld4CCmnt4="
|
||||
},
|
||||
"okio-jvm-3.9.1.module": {
|
||||
"sha1": "470544322c29b112668d2018c05fd94107b05e26",
|
||||
"sha256": "sha256-sK+pGSxC18Rj3jjWMlk2xpAdnjtxSXNf/RihHfMQNKs="
|
||||
"okio-jvm-3.10.2.module": {
|
||||
"sha1": "e1125ef565c7f5fd6fbf0f925188c81febe1d0ee",
|
||||
"sha256": "sha256-p4CkJMVx4odVASiuADMjVibf/iFsuNs7ICRkmWrZaPA="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -13758,20 +13732,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "com/squareup/okio/okio/3.9.1",
|
||||
"path": "com/squareup/okio/okio/3.10.2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"okio-3.9.1.pom": {
|
||||
"sha1": "1cd169f2bbe6215607a62447b9e4b64a125b5e56",
|
||||
"sha256": "sha256-06DDd+epr8zbsCqrXgUNwhL/2pQNvUcOo5cSpDQt8I4="
|
||||
"okio-3.10.2.pom": {
|
||||
"sha1": "3d4a51279ef5bc796682828afd74ef3ab54ad543",
|
||||
"sha256": "sha256-7lbAIUoPqfER2nExxVDo3ICvDL9WCVbBzNosZtdQa0E="
|
||||
},
|
||||
"okio-3.9.1.jar": {
|
||||
"sha1": "3f1067fc8f61b89e013ea121198c49c991d74cbb",
|
||||
"sha256": "sha256-mcjrvEmV8p3ViwXXVYP8yLlX2yHu64xdiXM/DTSVWJc="
|
||||
"okio-3.10.2.jar": {
|
||||
"sha1": "5117e7c820a89b5722cc37fc9152d54131d4cd36",
|
||||
"sha256": "sha256-3iJdy5APSY2cdVGHpEx043V2vYk62pa4bbYRDiellRM="
|
||||
},
|
||||
"okio-3.9.1.module": {
|
||||
"sha1": "eaa18fe21ddaef8640880e11315ef39757fbc75f",
|
||||
"sha256": "sha256-m5C0J0pa1gLdV01tS0iQNmOy3ppgufw0AiSCk9hD4SE="
|
||||
"okio-3.10.2.module": {
|
||||
"sha1": "0e038c29ef477f04b63b0f29847815c52decf3be",
|
||||
"sha256": "sha256-P94fn79yxsMm1eiktTL0/Z/aLdDLFEK8pODHl9FBI4c="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15259,16 +15233,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "io/netty/netty-tcnative-classes/2.0.69.Final",
|
||||
"path": "io/netty/netty-tcnative-classes/2.0.70.Final",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"netty-tcnative-classes-2.0.69.Final.pom": {
|
||||
"sha1": "ee65d639d3c5312a4b6369f0d59504ad0c8dfe0b",
|
||||
"sha256": "sha256-WdoPlJ4r7on1cR6z4Mb9jPeRTmtwwAfza56waIJDAVw="
|
||||
"netty-tcnative-classes-2.0.70.Final.pom": {
|
||||
"sha1": "c1e1a8fdfb72675d90886ad28a6949529f798b1a",
|
||||
"sha256": "sha256-QRtGiEv20l66H2RTU5HsWxCH6Rjg5T0iTkIgoE+zJnU="
|
||||
},
|
||||
"netty-tcnative-classes-2.0.69.Final.jar": {
|
||||
"sha1": "0f018f36b688bafabe4573af230a8b59cf3c0713",
|
||||
"sha256": "sha256-C7woSMsJnrP29Ow2UBs2AOGChFfNpB1TMGh/YB7gS+8="
|
||||
"netty-tcnative-classes-2.0.70.Final.jar": {
|
||||
"sha1": "5f75accc769e69f2e6c1e56ba3a08b6c4bcc25f8",
|
||||
"sha256": "sha256-p5wVeTE9StSKPswdAaJdoG0i1kScO8w2nCMYdJvPVbw="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15285,12 +15259,12 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "io/netty/netty-tcnative-parent/2.0.69.Final",
|
||||
"path": "io/netty/netty-tcnative-parent/2.0.70.Final",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"netty-tcnative-parent-2.0.69.Final.pom": {
|
||||
"sha1": "ba3c1cc69d48f0196ee84ecd3c5157c52a987931",
|
||||
"sha256": "sha256-KVMCcZZjdhDIlPMr2nBQk82HaDFcnxpXOVGnXxeGmvw="
|
||||
"netty-tcnative-parent-2.0.70.Final.pom": {
|
||||
"sha1": "b5573ffca02a2c092bdb0f7e5efb7da495523ea4",
|
||||
"sha256": "sha256-gHWl5UlncBGgcXXZuNqWOli4hLMujhAbdeeBUhc/3DU="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15768,16 +15742,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "net/bytebuddy/byte-buddy-agent/1.15.4",
|
||||
"path": "net/bytebuddy/byte-buddy-agent/1.15.11",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"byte-buddy-agent-1.15.4.pom": {
|
||||
"sha1": "9440b88e2dfa9fb64979d9150453e5535c45e7d3",
|
||||
"sha256": "sha256-UJEHS07O1v8WbjlDlHRk/0Lac5Y4BC34aDuj6MIJ51U="
|
||||
"byte-buddy-agent-1.15.11.pom": {
|
||||
"sha1": "4015ca3530951c4336155d578de83f0e6b900f8c",
|
||||
"sha256": "sha256-tfoTlvFHl7jYCIJ+d0O6il8gO0iJvjLklj1EvV7XWag="
|
||||
},
|
||||
"byte-buddy-agent-1.15.4.jar": {
|
||||
"sha1": "58e850dde88f3cf20f41f659440bef33f6c4fe02",
|
||||
"sha256": "sha256-HXbe/RWaVkuct6lo0N6ic2e4tw6951qWjn7xkhvHXuQ="
|
||||
"byte-buddy-agent-1.15.11.jar": {
|
||||
"sha1": "a38b16385e867f59a641330f0362ebe742788ed8",
|
||||
"sha256": "sha256-MW0sB5XCpNTEdW8ub5NJg3x0MKw04Ed+rYdNBfXMGeU="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15804,17 +15778,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -15826,6 +15789,17 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -15856,21 +15830,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -15886,6 +15845,21 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -16459,17 +16433,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -16703,28 +16666,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -16736,6 +16677,28 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -17471,20 +17434,20 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/checkerframework/checker-qual/3.48.2",
|
||||
"path": "org/checkerframework/checker-qual/3.49.0",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"checker-qual-3.48.2.pom": {
|
||||
"sha1": "95acb8356a028eeb22171b7330f7bb78cf0f9506",
|
||||
"sha256": "sha256-Sk+LlzEYgyx4SrUIpzAJ2tAt5Nq/0dFJLWa45MC6HRE="
|
||||
"checker-qual-3.49.0.pom": {
|
||||
"sha1": "d13e380978f7ccc023bfef031f9d664d52c3877e",
|
||||
"sha256": "sha256-yEUftI7+1jgbMpFG1PrvtvTYq/E79XLCaosawoCW54A="
|
||||
},
|
||||
"checker-qual-3.48.2.jar": {
|
||||
"sha1": "2a4797df796b23026b8215545b0d2936bacc52af",
|
||||
"sha256": "sha256-ryPyDJlbL+3jWx66gRd6mmaUTsZ7jk3uGapMwLcQxrU="
|
||||
"checker-qual-3.49.0.jar": {
|
||||
"sha1": "54be36cb42c9b991c109e467e2bfa82af4cda44e",
|
||||
"sha256": "sha256-i52aNuqvfA/CZQPIPNl9jJwPnikTzCpukqwmxzXU3L4="
|
||||
},
|
||||
"checker-qual-3.48.2.module": {
|
||||
"sha1": "cdf30d8d4b97e12fc85e65e1bd55210a1a084b10",
|
||||
"sha256": "sha256-D2RjlMmz5KL1aitsZ6C0NAkqxrq3pJvC/wGtjKf08NU="
|
||||
"checker-qual-3.49.0.module": {
|
||||
"sha1": "b6e4941f8d6af0d46a496f72d1b8944e0ed8fd5d",
|
||||
"sha256": "sha256-YA0Z+9XjfemEh8OYBF4UCmUc9brRx5xcl88MyYRMQuQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -19901,16 +19864,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0",
|
||||
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.20-Beta2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"kotlin-reflect-2.1.0.pom": {
|
||||
"sha1": "6c72cb76dbf12249eec091d5a7d6ea27a27fcc87",
|
||||
"sha256": "sha256-nNhLPU9xfJYjXkujtydolcz/1V3kEcfOCz97q1Yu/kI="
|
||||
"kotlin-reflect-2.1.20-Beta2.pom": {
|
||||
"sha1": "1f22f7def1b72d86f0122e94963556693dcd9054",
|
||||
"sha256": "sha256-TSmv4VZwoDfXO+C2ohrnzhcbhR5hQPWOERDtz2j/Djo="
|
||||
},
|
||||
"kotlin-reflect-2.1.0.jar": {
|
||||
"sha1": "dc3753b59b67d79b7d2f546d51e22a0ec1f082d8",
|
||||
"sha256": "sha256-tfYI7fqYqM+iNyzBLRitqXS+HFbBCT7/BswGH0/AiLI="
|
||||
"kotlin-reflect-2.1.20-Beta2.jar": {
|
||||
"sha1": "9747e5ae1b3b47d83f7a810fbdd603c90cd5b0ad",
|
||||
"sha256": "sha256-MsWsLXYMzUpOX6IMg2JMSqx4DN7upMURajx3sgHgs4E="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21551,33 +21514,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -21601,6 +21537,29 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"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",
|
||||
@@ -21801,16 +21760,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/json/json/20240303",
|
||||
"path": "org/json/json/20250107",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"json-20240303.pom": {
|
||||
"sha1": "78c0fa2a26888461731e26603ef4b19cc53239ca",
|
||||
"sha256": "sha256-mUuvXYm/TKpc6WjkxOqxNcj5eD7PTSt7Dp0cik3fHk8="
|
||||
"json-20250107.pom": {
|
||||
"sha1": "91b62e77c1b5a92b6dc79f8c0c154311e1477c85",
|
||||
"sha256": "sha256-ph+87jbeXMAb7ZMEYseLwEvBZBCwHZtfEABq8UoRvFY="
|
||||
},
|
||||
"json-20240303.jar": {
|
||||
"sha1": "0ebb88e8fb5122b7506d5cf1d69f1ccdb790d22a",
|
||||
"sha256": "sha256-PPbNaJLjLitMHDng9S9SSKL1s3ZG/fu3mma0a2GEFO0="
|
||||
"json-20250107.jar": {
|
||||
"sha1": "a1b5f0b5a1ce018b93a691c57ffc7d141b3a10f1",
|
||||
"sha256": "sha256-hdTBqxktMRf9Asf/8ewP5jreRc9W3vf+lQ7wYM8G6Z8="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21850,16 +21809,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/junit/junit-bom/5.11.3",
|
||||
"path": "org/junit/junit-bom/5.12.0-RC2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"junit-bom-5.11.3.pom": {
|
||||
"sha1": "ff35120d66bcbdd05c8b94b57b08b9d30f15c343",
|
||||
"sha256": "sha256-8T3y5Mrx/rzlZ2Z+fDeBAaAzHVPRMk1uLf467Psfd3Q="
|
||||
"junit-bom-5.12.0-RC2.pom": {
|
||||
"sha1": "f7f31a9a73bd214137a5e22c45da37aa8fa893a1",
|
||||
"sha256": "sha256-9H9ulor+J1iVBQAkFvwfbn78IHHc1HMNSDTUUp/XY+E="
|
||||
},
|
||||
"junit-bom-5.11.3.module": {
|
||||
"sha1": "cbe8d3c987c55bc57869f232f052c0df0042c32b",
|
||||
"sha256": "sha256-S/D1PO6nx5D9+9JNujyeBM3FGGQnnuv8V6qkc+vKA4A="
|
||||
"junit-bom-5.12.0-RC2.module": {
|
||||
"sha1": "49aa327f7c618b489654a7ac980a5647adf95be4",
|
||||
"sha256": "sha256-5S09WIMqPhrcc3ky5x9gjbj5lefgLRpDmNjdhKDH/2o="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21955,16 +21914,16 @@
|
||||
},
|
||||
|
||||
{
|
||||
"path": "org/mockito/mockito-core/5.14.2",
|
||||
"path": "org/mockito/mockito-core/5.15.2",
|
||||
"repo": "https://repo.maven.apache.org/maven2",
|
||||
"files": {
|
||||
"mockito-core-5.14.2.pom": {
|
||||
"sha1": "2f6476e2e7da6a275ebac685ed983d3f7bee84e3",
|
||||
"sha256": "sha256-Y45Wpo9JaHm8ig9Tz735xMw5pFtuQ4ozOl6oPAnunP0="
|
||||
"mockito-core-5.15.2.pom": {
|
||||
"sha1": "199967c4a9531dd9b29ed2ef72fc4b427192466c",
|
||||
"sha256": "sha256-/tgS0qLznJhHSyoUxjxl+PRxeDtggtyGfAwbYFPGlIA="
|
||||
},
|
||||
"mockito-core-5.14.2.jar": {
|
||||
"sha1": "f7bf936008d7664e2002c3faf0c02071c8d10e7c",
|
||||
"sha256": "sha256-IpYUHB4fLhrjXAjTapq0Vj7NZuA1M/6CYwp2TnqkkYI="
|
||||
"mockito-core-5.15.2.jar": {
|
||||
"sha1": "87be4b1e0cc5febc07ab3197a8ff3ede56b37a79",
|
||||
"sha256": "sha256-v0i3Ny2UkdXsiuu0zdGH0VZjkxWZwPvnQQFmzg4eWP8="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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.1
|
||||
org.gradle:github-dependency-graph-gradle-plugin:1.3.2
|
||||
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
|
||||
+26
-29
@@ -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.1/github-dependency-graph-gradle-plugin-1.3.1.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/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.17.1/commons-codec-1.17.1.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-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.4/commons-logging-1.3.4.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/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.11.0/gson-parent-2.11.0.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/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.11.0/gson-2.11.0.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/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,7 +750,6 @@ 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
|
||||
@@ -763,7 +762,6 @@ 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
|
||||
@@ -781,8 +779,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.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-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/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
|
||||
@@ -795,7 +793,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.3.1-jre/guava-33.3.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/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
|
||||
@@ -809,7 +807,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.29.0/protobuf-bom-4.29.0.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-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
|
||||
@@ -826,7 +824,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.29.0/protobuf-java-4.29.0.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-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
|
||||
@@ -837,7 +835,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.29.0/protobuf-parent-4.29.0.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/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
|
||||
@@ -858,13 +856,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.9.1/okio-jvm-3.9.1.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-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.9.1/okio-3.9.1.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/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
|
||||
@@ -971,9 +969,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.69.Final/netty-tcnative-classes-2.0.69.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-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.69.Final/netty-tcnative-parent-2.0.69.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-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
|
||||
@@ -1006,15 +1004,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.4/byte-buddy-agent-1.15.4.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-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
|
||||
@@ -1058,7 +1056,6 @@ 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
|
||||
@@ -1078,9 +1075,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
|
||||
@@ -1135,7 +1132,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.48.2/checker-qual-3.48.2.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/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
|
||||
@@ -1285,7 +1282,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.0/kotlin-reflect-2.1.0.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-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
|
||||
@@ -1394,8 +1391,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
|
||||
@@ -1409,17 +1406,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/20240303/json-20240303.pom
|
||||
https://repo.maven.apache.org/maven2/org/json/json/20250107/json-20250107.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.11.3/junit-bom-5.11.3.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/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.14.2/mockito-core-5.14.2.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-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
|
||||
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Fallback versions for each dependency
|
||||
readonly FOOJAY_FALLBACK="0.5.0"
|
||||
readonly KOTLIN_FALLBACK="1.8.0"
|
||||
readonly TOOLS_FALLBACK="3.5.4"
|
||||
readonly HERMES_FALLBACK="0.73.5"
|
||||
|
||||
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
|
||||
cd "${GIT_ROOT}"
|
||||
|
||||
get_version() {
|
||||
local file="$1"
|
||||
local pattern="$2"
|
||||
local fallback="$3"
|
||||
local version
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
echo "$fallback"
|
||||
return 0
|
||||
fi
|
||||
|
||||
version=$(grep "$pattern" "$file" 2>/dev/null | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.*[0-9]*" | tail -n1 || echo "$fallback")
|
||||
echo "$version"
|
||||
}
|
||||
|
||||
foojay_version=$(get_version "./node_modules/@react-native/gradle-plugin/settings.gradle.kts" "foojay.*version" "$FOOJAY_FALLBACK")
|
||||
kotlin_version=$(get_version "./node_modules/@react-native/gradle-plugin/gradle/libs.versions.toml" "kotlin =" "$KOTLIN_FALLBACK")
|
||||
tools_version=$(get_version "./patches/BlurView-build.gradle.patch" "gradle:" "$TOOLS_FALLBACK")
|
||||
hermes_version=$(get_version "./node_modules/react-native/ReactAndroid/gradle.properties" "VERSION_NAME" "$HERMES_FALLBACK")
|
||||
|
||||
|
||||
cat << EOF
|
||||
org.gradle.toolchains.foojay-resolver-convention:org.gradle.toolchains.foojay-resolver-convention.gradle.plugin:$foojay_version
|
||||
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
|
||||
@@ -38,16 +38,10 @@ function gen_deps_list() {
|
||||
echo -e "${CLR}Found ${GRN}$(wc -l < "${DEPS_LIST}")${RST} direct dependencies..."
|
||||
}
|
||||
|
||||
# FIXME: Temporary fix for missing packages.
|
||||
# FIXME: Fix for missing packages.
|
||||
# https://github.com/status-im/status-mobile/issues/15447
|
||||
function add_deps_hack() {
|
||||
echo -n \
|
||||
'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.android.tools.lint:lint-gradle:31.1.1
|
||||
com.facebook.react:hermes-android:0.73.5' \
|
||||
>> "${DEPS_LIST}"
|
||||
"${CUR_DIR}/deps_hack.sh" >> "${DEPS_LIST}"
|
||||
}
|
||||
|
||||
# Find download URLs for each dependency.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script generates a list of dependencies for the main project and its
|
||||
# sub-projects defined using Gradle config files. It parses Gradle output of
|
||||
# 'dependencies' and 'buildEnvironment` tasks using AWK.
|
||||
# sub-projects defined using Gradle config files. It uses github-dependency-graph-gradle-plugin:
|
||||
# https://github.com/gradle/github-dependency-graph-gradle-plugin?tab=readme-ov-file#using-the-plugin-to-generate-dependency-reports
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
|
||||
+6
-17
@@ -53,25 +53,14 @@ in {
|
||||
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
|
||||
versions = ["16.0" "16.1" "16.2"];
|
||||
};
|
||||
go = super.go_1_21;
|
||||
go = super.go_1_22;
|
||||
clang = super.clang_15;
|
||||
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";
|
||||
buildGoPackage = super.buildGo122Package;
|
||||
buildGoModule = super.buildGo122Module;
|
||||
gomobile = callPackage ./pkgs/gomobile {
|
||||
#FIXME: No Android SDK packages for aarch64-darwin.
|
||||
androidPkgs = self.androidEnvCustom.compose;
|
||||
withAndroidPkgs = stdenv.system != "aarch64-darwin";
|
||||
};
|
||||
|
||||
# Android environment
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ callPackage, lib, buildGoPackage
|
||||
{ callPackage, lib, buildGoPackage, pkgs
|
||||
, androidPkgs, openjdk, gomobile, xcodeWrapper, removeReferencesTo
|
||||
, go-bindata, mockgen, protobuf3_20, protoc-gen-go
|
||||
, meta
|
||||
@@ -15,6 +15,8 @@ let
|
||||
isIOS = platform == "ios";
|
||||
isAndroid = platform == "android";
|
||||
enforceXCodeAvailable = callPackage ./enforceXCodeAvailable.nix { };
|
||||
# Fixes fatal: not a git repository (or any of the parent directories): .git
|
||||
fakeGit = pkgs.writeScriptBin "git" "echo ${source.version}";
|
||||
|
||||
in buildGoPackage rec {
|
||||
pname = source.repo;
|
||||
@@ -29,7 +31,7 @@ in buildGoPackage rec {
|
||||
|
||||
extraSrcPaths = [ gomobile ];
|
||||
nativeBuildInputs = [
|
||||
gomobile removeReferencesTo go-bindata mockgen protoc-gen-go protobuf3_20
|
||||
gomobile removeReferencesTo go-bindata mockgen protoc-gen-go protobuf3_20 fakeGit
|
||||
] ++ optional isAndroid openjdk
|
||||
++ optional isIOS xcodeWrapper;
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ let
|
||||
repo = "status-go";
|
||||
rev = "unknown";
|
||||
shortRev = rev;
|
||||
rawVersion = "develop";
|
||||
cleanVersion = rawVersion;
|
||||
version = "unknown";
|
||||
cleanVersion = version;
|
||||
goPackagePath = "github.com/${owner}/${repo}";
|
||||
# We use builtins.path so that we can name the resulting derivation,
|
||||
# Normally the name would not be deterministic, taken from the checkout directory.
|
||||
@@ -43,7 +43,6 @@ let
|
||||
inherit (versionJSON) owner repo version;
|
||||
rev = versionJSON.commit-sha1;
|
||||
shortRev = strings.substring 0 7 rev;
|
||||
rawVersion = versionJSON.version;
|
||||
cleanVersion = lib.sanitizeVersion versionJSON.version;
|
||||
# Need to pretend this is from status-im to let Go build it.
|
||||
goPackagePath = "github.com/status-im/${repo}";
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 278 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.1 KiB |
+26
-18
@@ -89,7 +89,11 @@
|
||||
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/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"}
|
||||
:compiler-options {:output-feature-set :es5
|
||||
;; We disable `:fn-deprecated` warnings because we
|
||||
;; are managing deprecation via clj-kondo and we
|
||||
@@ -111,23 +115,27 @@
|
||||
: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/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"}
|
||||
:compiler-options {:output-feature-set :es6
|
||||
;;disable for android build as there
|
||||
;;is an intermittent warning with deftype
|
||||
|
||||
@@ -253,15 +253,19 @@
|
||||
|
||||
(defn hash-typed-data
|
||||
"used for keycard"
|
||||
[data callback]
|
||||
(log/debug "[native-module] hash-typed-data")
|
||||
(.hashTypedData ^js (encryption) data callback))
|
||||
([data]
|
||||
(native-utils/promisify-native-module-call hash-typed-data data))
|
||||
([data callback]
|
||||
(log/debug "[native-module] hash-typed-data")
|
||||
(.hashTypedData ^js (encryption) data callback)))
|
||||
|
||||
(defn hash-typed-data-v4
|
||||
"used for keycard"
|
||||
[data callback]
|
||||
(log/debug "[native-module] hash-typed-data-v4")
|
||||
(.hashTypedDataV4 ^js (encryption) data callback))
|
||||
([data]
|
||||
(native-utils/promisify-native-module-call hash-typed-data-v4 data))
|
||||
([data callback]
|
||||
(log/debug "[native-module] hash-typed-data-v4")
|
||||
(.hashTypedDataV4 ^js (encryption) data callback)))
|
||||
|
||||
(defn send-transaction-with-signature
|
||||
"used for keycard"
|
||||
|
||||
@@ -10,11 +10,10 @@
|
||||
([{:keys [style]} child]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[rn/view
|
||||
{:style (assoc style
|
||||
:pointer-events :box-none
|
||||
:background-color
|
||||
(or (:background-color style)
|
||||
(colors/theme-colors colors/white colors/neutral-80 theme)))}
|
||||
{:style [style
|
||||
{:pointer-events :box-none
|
||||
:background-color (or (:background-color style)
|
||||
(colors/theme-colors colors/white colors/neutral-80 theme))}]}
|
||||
child])))
|
||||
|
||||
(def view (if platform/ios? blur/view view-android))
|
||||
|
||||
@@ -56,62 +56,63 @@
|
||||
24 8
|
||||
12))})
|
||||
|
||||
(defn style-container
|
||||
(defn container-styles
|
||||
[{:keys [size disabled? border-radius background-color border-color icon-only? icon-top
|
||||
icon-left icon-right]}]
|
||||
(merge {:height size
|
||||
:align-items :center
|
||||
:justify-content :center
|
||||
:flex-direction (if icon-top :column :row)
|
||||
:padding-horizontal (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 (if border-color 10 11)
|
||||
40 16
|
||||
32 12
|
||||
24 7
|
||||
16))
|
||||
:padding-left (when-not (or icon-only? icon-left)
|
||||
(case size
|
||||
56 nil
|
||||
40 16
|
||||
32 12
|
||||
24 8
|
||||
16))
|
||||
:padding-right (when-not (or icon-only? icon-right)
|
||||
(case size
|
||||
56 nil
|
||||
40 16
|
||||
32 12
|
||||
24 8
|
||||
16))
|
||||
:padding-top (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 0
|
||||
40 (if border-color 8 9)
|
||||
32 (if border-color 4 5)
|
||||
24 0
|
||||
(if border-color 8 9)))
|
||||
:padding-bottom (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 0
|
||||
40 9
|
||||
32 5
|
||||
24 0
|
||||
9))
|
||||
:overflow :hidden
|
||||
:background-color (if disabled? (colors/alpha background-color 0.3) background-color)
|
||||
:border-radius (if border-radius
|
||||
border-radius
|
||||
(case size
|
||||
56 12
|
||||
40 12
|
||||
32 10
|
||||
24 8
|
||||
12))
|
||||
:border-color border-color
|
||||
:border-width (when border-color 1)}
|
||||
(when icon-only?
|
||||
{:width size})
|
||||
(when border-color
|
||||
{:border-color border-color
|
||||
:border-width 1})))
|
||||
icon-left icon-right inner-style]}]
|
||||
[{:height size
|
||||
:align-items :center
|
||||
:justify-content :center
|
||||
:flex-direction (if icon-top :column :row)
|
||||
:padding-horizontal (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 (if border-color 10 11)
|
||||
40 16
|
||||
32 12
|
||||
24 7
|
||||
16))
|
||||
:padding-left (when-not (or icon-only? icon-left)
|
||||
(case size
|
||||
56 nil
|
||||
40 16
|
||||
32 12
|
||||
24 8
|
||||
16))
|
||||
:padding-right (when-not (or icon-only? icon-right)
|
||||
(case size
|
||||
56 nil
|
||||
40 16
|
||||
32 12
|
||||
24 8
|
||||
16))
|
||||
:padding-top (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 0
|
||||
40 (if border-color 8 9)
|
||||
32 (if border-color 4 5)
|
||||
24 0
|
||||
(if border-color 8 9)))
|
||||
:padding-bottom (when-not (or icon-only? icon-left icon-right)
|
||||
(case size
|
||||
56 0
|
||||
40 9
|
||||
32 5
|
||||
24 0
|
||||
9))
|
||||
:overflow :hidden
|
||||
:background-color (if disabled? (colors/alpha background-color 0.3) background-color)
|
||||
:border-radius (if border-radius
|
||||
border-radius
|
||||
(case size
|
||||
56 12
|
||||
40 12
|
||||
32 10
|
||||
24 8
|
||||
12))
|
||||
:border-color border-color
|
||||
:border-width (when border-color 1)}
|
||||
(when icon-only?
|
||||
{:width size})
|
||||
(when border-color
|
||||
{:border-color border-color
|
||||
:border-width 1})
|
||||
inner-style])
|
||||
|
||||
@@ -62,12 +62,9 @@
|
||||
:on-press on-press
|
||||
:allow-multiple-presses? allow-multiple-presses?
|
||||
:on-long-press on-long-press
|
||||
:style (merge
|
||||
(style/shape-style-container size border-radius)
|
||||
container-style)}
|
||||
:style [(style/shape-style-container size border-radius) container-style]}
|
||||
[rn/view
|
||||
{:style (merge
|
||||
(style/style-container {:size size
|
||||
{:style (style/container-styles {:size size
|
||||
:disabled? disabled?
|
||||
:border-radius border-radius
|
||||
:background-color background-color
|
||||
@@ -75,8 +72,8 @@
|
||||
:icon-only? icon-only?
|
||||
:icon-top icon-top
|
||||
:icon-left icon-left
|
||||
:icon-right icon-right})
|
||||
inner-style)}
|
||||
:icon-right icon-right
|
||||
:inner-style inner-style})}
|
||||
(when overlay-customization-color
|
||||
[customization-colors/overlay
|
||||
{:customization-color overlay-customization-color
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
:error
|
||||
[info-message/view
|
||||
{:icon :i/info
|
||||
{:icon :i/alert
|
||||
:size :default
|
||||
:status :error}
|
||||
text]
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
selected? (assoc :border-top-color (colors/alpha color 0.4)
|
||||
:border-end-color (colors/alpha color 0.4)
|
||||
:border-bottom-color (colors/alpha color 0.2)
|
||||
:border-start-color (colors/alpha color 0.2))
|
||||
:border-start-color (colors/alpha color 0.2)
|
||||
:border-color nil)
|
||||
(zero? idx) (assoc :margin-left -4))))
|
||||
|
||||
(defn color-circle
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
[:scroll? {:optional true} [:maybe :boolean]]
|
||||
[:blur? {:optional true} [:maybe :boolean]]
|
||||
[:container-style {:optional true} [:maybe :map]]
|
||||
[:buttons-container-style {:optional true} [:maybe :map]]]]]
|
||||
[:buttons-container-style {:optional true} [:maybe :map]]
|
||||
[:buttons-style {:optional true} [:maybe :map]]]]]
|
||||
:any])
|
||||
|
||||
(def ^:private role-icon
|
||||
@@ -43,10 +44,9 @@
|
||||
(defn- view-internal
|
||||
[{:keys [actions description description-text description-top-text error-message role button-one-label
|
||||
button-two-label blur? button-one-props button-two-props scroll? container-style
|
||||
buttons-container-style context-tag-props]}]
|
||||
buttons-container-style buttons-style context-tag-props]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[rn/view
|
||||
{:style (merge (style/container scroll? blur? theme) container-style)}
|
||||
[rn/view {:style (merge (style/container scroll? blur? theme) container-style)}
|
||||
(when (= description :top-error)
|
||||
[rn/view {:style style/error-message}
|
||||
[icon/icon
|
||||
@@ -82,7 +82,7 @@
|
||||
[button/button
|
||||
(merge
|
||||
{:size 40
|
||||
:container-style style/button-container
|
||||
:container-style (merge style/button-container buttons-style)
|
||||
:background (when (or blur? scroll?) :blur)
|
||||
:theme theme
|
||||
:accessibility-label :button-two}
|
||||
@@ -91,7 +91,7 @@
|
||||
[button/button
|
||||
(merge
|
||||
{:size 40
|
||||
:container-style style/button-container
|
||||
:container-style (merge style/button-container buttons-style)
|
||||
:background (when (or blur? scroll?) :blur)
|
||||
:theme theme
|
||||
:accessibility-label :button-one}
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
|
||||
(def content
|
||||
{:align-items :flex-start
|
||||
:margin-top 8
|
||||
:margin-bottom (+ (safe-area/get-bottom) 12)})
|
||||
|
||||
(defn title
|
||||
[theme]
|
||||
{:color (colors/theme-colors colors/neutral-100
|
||||
colors/white
|
||||
theme)})
|
||||
{:color (colors/theme-colors colors/neutral-100
|
||||
colors/white
|
||||
theme)
|
||||
:margin-bottom 8})
|
||||
|
||||
@@ -24,12 +24,13 @@
|
||||
:always-bounce-vertical false
|
||||
:content-inset-adjustment-behavior :never}
|
||||
[rn/view {:style style/container}
|
||||
[text/text
|
||||
{:size :heading-2
|
||||
:accessibility-label :documentation-drawer-title
|
||||
:style (style/title theme)
|
||||
:weight :semi-bold}
|
||||
title]
|
||||
(when title
|
||||
[text/text
|
||||
{:size :heading-2
|
||||
:accessibility-label :documentation-drawer-title
|
||||
:style (style/title theme)
|
||||
:weight :semi-bold}
|
||||
title])
|
||||
[rn/view {:style style/content :accessibility-label :documentation-drawer-content}
|
||||
content
|
||||
(when show-button?
|
||||
|
||||
@@ -57,17 +57,10 @@
|
||||
:container-style style/keycard-icon}])])
|
||||
|
||||
(defn- account-subtitle
|
||||
[{:keys [networks theme blur? description]}]
|
||||
(if networks
|
||||
[address-text/view
|
||||
{:networks networks
|
||||
:address description
|
||||
:format :short}]
|
||||
[text/text
|
||||
{:size :paragraph-2
|
||||
:weight :regular
|
||||
:style (style/description theme blur?)}
|
||||
description]))
|
||||
[{:keys [description]}]
|
||||
[address-text/view
|
||||
{:address description
|
||||
:format :short}])
|
||||
|
||||
(defn- default-keypair-subtitle
|
||||
[{:keys [description theme blur?]}]
|
||||
@@ -109,7 +102,7 @@
|
||||
description])
|
||||
|
||||
(defn- subtitle
|
||||
[{:keys [type theme blur? stored networks description community-name community-logo
|
||||
[{:keys [type theme blur? stored description community-name community-logo
|
||||
context-tag-type account-name emoji customization-color full-name profile-picture context
|
||||
icon]}]
|
||||
(cond
|
||||
@@ -121,8 +114,7 @@
|
||||
|
||||
(= :account type)
|
||||
[account-subtitle
|
||||
{:networks networks
|
||||
:theme theme
|
||||
{:theme theme
|
||||
:blur? blur?
|
||||
:description description}]
|
||||
|
||||
@@ -205,11 +197,11 @@
|
||||
(defn view
|
||||
[{:keys [title title-icon type description blur? community-name community-logo button-icon
|
||||
account-name emoji context-tag-type button-type container-style
|
||||
on-button-press on-button-long-press profile-picture stored networks label full-name
|
||||
on-button-press on-button-long-press profile-picture stored label full-name
|
||||
button-disabled? account-avatar-emoji account-avatar-type customization-color icon-avatar
|
||||
context icon]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[rn/view {:style (merge style/container container-style)}
|
||||
[rn/view {:style [style/container container-style]}
|
||||
(when (left-image-supported-types type)
|
||||
[rn/view {:style style/left-container}
|
||||
[left-image
|
||||
@@ -233,7 +225,6 @@
|
||||
:theme theme
|
||||
:blur? blur?
|
||||
:stored stored
|
||||
:networks networks
|
||||
:description description
|
||||
:community-name community-name
|
||||
:community-logo community-logo
|
||||
|
||||
@@ -35,4 +35,4 @@
|
||||
(def image-placeholder
|
||||
{:width 80
|
||||
:height 80
|
||||
:background-color colors/danger})
|
||||
:background-color colors/danger-50})
|
||||
|
||||
@@ -18,5 +18,5 @@
|
||||
:colors [color-top color-bottom]
|
||||
:start {:x 0 :y 0}
|
||||
:end {:x 0 :y 1}
|
||||
:style (merge (style/root-container opacity height)
|
||||
container-style)}])))
|
||||
:style [(style/root-container opacity height)
|
||||
container-style]}])))
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
(colors/theme-colors colors/neutral-30 colors/neutral-60 theme)))
|
||||
|
||||
(defn address-input
|
||||
[{:keys [default-value blur? on-change-text on-blur on-focus on-clear on-scan
|
||||
[{:keys [default-value blur? on-change-text on-blur on-focus on-clear on-scan on-paste
|
||||
on-detect-ens on-detect-address on-detect-unclassified address-regex ens-regex
|
||||
valid-ens-or-address? container-style]}]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
@@ -82,12 +82,13 @@
|
||||
(not ens?)
|
||||
on-detect-unclassified)
|
||||
(on-detect-unclassified text)))))
|
||||
on-paste (rn/use-callback
|
||||
(fn []
|
||||
(clipboard/get-string
|
||||
(fn [clipboard]
|
||||
(when-not (empty? clipboard)
|
||||
(on-change clipboard))))))
|
||||
on-paste (rn/use-callback #(if (fn? on-paste)
|
||||
(on-paste on-change)
|
||||
(clipboard/get-string
|
||||
(fn [clipboard]
|
||||
(when-not (empty? clipboard)
|
||||
(on-change clipboard)))))
|
||||
[on-paste])
|
||||
on-clear (rn/use-callback
|
||||
(fn []
|
||||
(on-change "")
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
:placeholder (colors/theme-colors colors/neutral-80-opa-20 colors/white-opa-20 theme)
|
||||
:text (colors/theme-colors colors/neutral-100 colors/white theme)}
|
||||
:error
|
||||
{:border-color (colors/theme-colors colors/danger-opa-40 colors/danger-opa-40 theme)
|
||||
{:border-color colors/danger-50-opa-40
|
||||
:placeholder (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 theme)
|
||||
:text (colors/theme-colors colors/neutral-100 colors/white theme)}
|
||||
:disabled
|
||||
@@ -48,7 +48,7 @@
|
||||
:placeholder (colors/theme-colors colors/neutral-30 colors/neutral-60 theme)
|
||||
:text (colors/theme-colors colors/neutral-100 colors/white theme)}
|
||||
:error
|
||||
{:border-color (colors/theme-colors colors/danger-opa-40 colors/danger-opa-40 theme)
|
||||
{:border-color colors/danger-50-opa-40
|
||||
:placeholder (colors/theme-colors colors/neutral-40 colors/white-opa-40 theme)
|
||||
:text (colors/theme-colors colors/neutral-100 colors/white theme)}
|
||||
:disabled
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
:char-limit char-limit
|
||||
:theme theme}])
|
||||
[rn/view
|
||||
{:style (merge (style/input-container colors-by-status small? disabled?) input-container-style)}
|
||||
{:style [(style/input-container colors-by-status small? disabled?) input-container-style]}
|
||||
(when-let [{:keys [icon-name]} left-icon]
|
||||
[left-accessory
|
||||
{:variant-colors variant-colors
|
||||
|
||||
@@ -4,11 +4,7 @@
|
||||
[test-helpers.component :as h]))
|
||||
|
||||
(h/describe "keycard component"
|
||||
(h/test "Render of keycard component when: holder-name prop is not set"
|
||||
(h/render [keycard/keycard])
|
||||
(h/is-truthy (h/get-by-translation-text :t/empty-keycard)))
|
||||
|
||||
(h/test "Render of keycard component when: holder-name prop is set"
|
||||
(let [holder-name "Alisha"]
|
||||
(let [holder-name "Alisha"]
|
||||
(h/test "Render of keycard component when: holder-name prop is set"
|
||||
(h/render [keycard/keycard {:holder-name holder-name}])
|
||||
(h/is-truthy (h/get-by-translation-text :t/user-keycard {:name holder-name})))))
|
||||
|
||||
@@ -6,21 +6,21 @@
|
||||
(def keycard-chip-height 28)
|
||||
|
||||
(defn card-container
|
||||
[locked? theme]
|
||||
[locked? theme blur?]
|
||||
{:overflow :hidden
|
||||
:height keycard-height
|
||||
:align-items :flex-start
|
||||
:justify-content :space-between
|
||||
:border-width 1
|
||||
:border-color (if locked?
|
||||
:border-color (if (or locked? blur?)
|
||||
colors/white-opa-5
|
||||
(colors/theme-colors colors/neutral-20 colors/neutral-80 theme))
|
||||
:border-style :solid
|
||||
:border-radius 16
|
||||
:padding 16
|
||||
:background-color (if locked?
|
||||
(colors/theme-colors colors/danger colors/danger-opa-40 theme)
|
||||
(colors/theme-colors colors/neutral-5 colors/neutral-90 theme))})
|
||||
(colors/theme-colors colors/danger-50 colors/danger-50-opa-40 theme)
|
||||
colors/keycard-color)})
|
||||
|
||||
(defn keycard-logo
|
||||
[locked? theme]
|
||||
@@ -28,18 +28,6 @@
|
||||
colors/white
|
||||
(colors/theme-colors colors/neutral-100 colors/white theme))})
|
||||
|
||||
(defn keycard-watermark
|
||||
[locked? theme]
|
||||
{:position :absolute
|
||||
:tint-color (if locked?
|
||||
colors/white-opa-5
|
||||
(colors/theme-colors colors/neutral-100 colors/white theme))
|
||||
:align-self :center
|
||||
:height 280.48
|
||||
:transform [{:rotate "-30deg"} {:translateY -30}]
|
||||
:opacity (when-not locked? 0.02)
|
||||
:z-index 1})
|
||||
|
||||
(def keycard-chip
|
||||
{:height keycard-chip-height
|
||||
:position :absolute
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
(ns quo.components.keycard.view
|
||||
(:require
|
||||
[clojure.string :as string]
|
||||
[quo.components.keycard.style :as style]
|
||||
[quo.components.tags.tag :as tag]
|
||||
[quo.foundations.colors :as colors]
|
||||
@@ -14,12 +15,9 @@
|
||||
- :locked? - Boolean to specify whether the keycard is locked or not
|
||||
- :theme :light/:dark
|
||||
"
|
||||
[{:keys [holder-name locked?]}]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
label (if holder-name
|
||||
(i18n/label :t/user-keycard {:name holder-name})
|
||||
(i18n/label :t/empty-keycard))]
|
||||
[rn/view {:style (style/card-container locked? theme)}
|
||||
[{:keys [holder-name locked? blur?]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[rn/view {:style (style/card-container locked? theme blur?)}
|
||||
[rn/image
|
||||
{:source (resources/get-image :keycard-logo)
|
||||
:style (style/keycard-logo locked? theme)}]
|
||||
@@ -27,16 +25,14 @@
|
||||
{:source (resources/get-image
|
||||
(if (or locked? (= :dark theme)) :keycard-chip-dark :keycard-chip-light))
|
||||
:style style/keycard-chip}]
|
||||
[rn/image
|
||||
{:source (resources/get-image :keycard-watermark)
|
||||
:style (style/keycard-watermark locked? theme)}]
|
||||
[tag/tag
|
||||
{:size 32
|
||||
:type (when locked? :icon)
|
||||
:label label
|
||||
:labelled? true
|
||||
:blurred? true
|
||||
:resource (when locked? :i/locked)
|
||||
:accessibility-label :holder-name
|
||||
:icon-color colors/white-70-blur
|
||||
:override-theme (when locked? :dark)}]]))
|
||||
(when-not (string/blank? holder-name)
|
||||
[tag/tag
|
||||
{:size 32
|
||||
:type (when locked? :icon)
|
||||
:label (i18n/label :t/user-keycard {:name holder-name})
|
||||
:labelled? true
|
||||
:blurred? true
|
||||
:resource (when locked? :i/locked)
|
||||
:accessibility-label :holder-name
|
||||
:icon-color colors/white-70-blur
|
||||
:override-theme (when locked? :dark)}])]))
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
(h/test "Test icon renders for ':action :icon'"
|
||||
(h/render-with-theme-provider [account-list-card/view
|
||||
{:account-props account-props
|
||||
:network :ethereum
|
||||
:action :icon
|
||||
:on-options-press (fn [])}])
|
||||
(h/is-truthy (h/get-by-label-text :icon))))
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
[schema.core :as schema]))
|
||||
|
||||
(defn- internal-view
|
||||
[{:keys [action blur? account-props networks on-press on-options-press]}]
|
||||
[{:keys [action blur? account-props on-press on-options-press]}]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
[state set-state] (rn/use-state :default)
|
||||
on-press-in (rn/use-callback #(set-state :pressed))
|
||||
@@ -31,10 +31,9 @@
|
||||
:size :paragraph-2}
|
||||
(:name account-props)]
|
||||
[address-text/view
|
||||
{:blur? blur?
|
||||
:networks networks
|
||||
:address (:address account-props)
|
||||
:format :short}]]]
|
||||
{:blur? blur?
|
||||
:address (:address account-props)
|
||||
:format :short}]]]
|
||||
(when (= action :icon)
|
||||
[rn/pressable {:on-press on-options-press}
|
||||
[icon/icon :i/options
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
[{:keys [type on-press on-check disabled? checked? child]} customization-color theme]
|
||||
(if (= type :custom)
|
||||
child
|
||||
[rn/touchable-opacity
|
||||
{:on-press on-press}
|
||||
[rn/touchable-opacity {:on-press on-press}
|
||||
(case type
|
||||
:options
|
||||
[icons/icon :i/options
|
||||
{:size 20
|
||||
:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}]
|
||||
|
||||
:checkbox
|
||||
[selectors/view
|
||||
{:type :checkbox
|
||||
@@ -36,6 +36,7 @@
|
||||
:accessibility-label :user-list-toggle-check
|
||||
:disabled? disabled?
|
||||
:on-change (when on-check on-check)}]
|
||||
|
||||
:close
|
||||
[text/text "not implemented"]
|
||||
[rn/view])]))
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
:margin-left -4}
|
||||
(if (= type :top)
|
||||
{:top 0}
|
||||
{:transform [{:rotateZ "180deg"}]
|
||||
{:transform [{:rotate-z "180deg"}]
|
||||
:bottom 0})
|
||||
style)}]))
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
subtitle]]])
|
||||
|
||||
(defn- main-variant
|
||||
[{:keys [title subtitle button-label image max-height accessibility-label on-press button-type]}]
|
||||
[{:keys [title subtitle button-label image max-height accessibility-label on-press button-props]}]
|
||||
[rn/view {:style style/main-variant}
|
||||
[rn/view {:style style/main-variant-text-container}
|
||||
[text/text
|
||||
@@ -56,17 +56,20 @@
|
||||
:resize-mode :contain
|
||||
:source image}]
|
||||
[button/button
|
||||
{:on-press on-press
|
||||
:accessibility-label accessibility-label
|
||||
:type (or button-type :grey)
|
||||
:size 40
|
||||
:container-style style/main-button
|
||||
:theme :dark
|
||||
:background :blur}
|
||||
(merge
|
||||
{:on-press on-press
|
||||
:accessibility-label accessibility-label
|
||||
:type :grey
|
||||
:size 40
|
||||
:container-style style/main-button
|
||||
:theme :dark
|
||||
:background :blur}
|
||||
button-props)
|
||||
button-label]])
|
||||
|
||||
(defn small-option-card
|
||||
[{:keys [variant title subtitle button-label image max-height on-press accessibility-label button-type]
|
||||
[{:keys [variant title subtitle button-label image max-height on-press accessibility-label
|
||||
button-props container-style]
|
||||
:or {variant :main accessibility-label :small-option-card}}]
|
||||
(let [main-variant? (= variant :main)
|
||||
card-component (if main-variant? main-variant icon-variant)
|
||||
@@ -74,7 +77,7 @@
|
||||
(not main-variant?) style/icon-variant-height
|
||||
max-height (min max-height style/main-variant-height)
|
||||
:else style/main-variant-height)]
|
||||
[rn/view {:style (style/card card-height)}
|
||||
[rn/view {:style (merge (style/card card-height) container-style)}
|
||||
[card-component
|
||||
{:title title
|
||||
:subtitle subtitle
|
||||
@@ -83,4 +86,4 @@
|
||||
:accessibility-label accessibility-label
|
||||
:image image
|
||||
:max-height max-height
|
||||
:button-type button-type}]]))
|
||||
:button-props button-props}]]))
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
:border-color (colors/theme-colors colors/neutral-20 dark-border theme)}))
|
||||
|
||||
(def text
|
||||
{:margin-left 8})
|
||||
{:flex 1
|
||||
:margin-left 8})
|
||||
|
||||
(def icon-container
|
||||
{:align-items :flex-end
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
[{:keys [label data container-style blur?]}]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
last-item (rn/use-memo #(last data) [data])]
|
||||
[rn/view {:style (merge (style/container label) container-style)}
|
||||
[rn/view {:style [(style/container label) container-style]}
|
||||
(when label
|
||||
[text/text
|
||||
{:weight :medium
|
||||
@@ -29,4 +29,3 @@
|
||||
[data-item/view data-item-props]
|
||||
(when-not (= item last-item)
|
||||
[rn/view {:style (style/settings-separator blur? theme)}])])]]))
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
separator (rn/use-memo (fn [] [rn/view
|
||||
{:style (style/reorder-separator blur? theme)}])
|
||||
[blur? theme])]
|
||||
[rn/view {:style (merge (style/container label) container-style)}
|
||||
[rn/view {:style [(style/container label) container-style]}
|
||||
[text/text
|
||||
{:weight :medium
|
||||
:size :paragraph-2
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
(let [theme (quo.theme/use-theme)
|
||||
settings-items (remove nil? data)
|
||||
last-index (dec (count settings-items))]
|
||||
[rn/view {:style (merge (style/container label) container-style)}
|
||||
[rn/view {:style [(style/container label) container-style]}
|
||||
(when label
|
||||
[text/text
|
||||
{:weight :medium
|
||||
|
||||
@@ -10,12 +10,7 @@
|
||||
{:flex 1}))
|
||||
|
||||
(def avatar-overlay
|
||||
{:position :absolute
|
||||
:top 0
|
||||
:right 0
|
||||
:left 0
|
||||
:bottom 0
|
||||
:justify-content :center
|
||||
{:justify-content :center
|
||||
:align-items :center})
|
||||
|
||||
(defn qr-image
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
(defn- avatar-image
|
||||
[{avatar-type :avatar
|
||||
:as props}]
|
||||
[rn/view {:style style/avatar-overlay}
|
||||
[rn/view {:style [rn/stylesheet-absolute-fill style/avatar-overlay]}
|
||||
[rn/view
|
||||
{:style (case avatar-type
|
||||
:wallet-account style/avatar-container-rounded
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
{:type :profile
|
||||
:profile-picture 123})
|
||||
|
||||
(def wallet-props {:networks '(:ethereum)})
|
||||
|
||||
(def text-press-event
|
||||
{:test-name "Text pressed"
|
||||
:accessibility-label :share-qr-code-info-text
|
||||
@@ -33,24 +31,6 @@
|
||||
:event-name :press
|
||||
:callback-prop-key :on-share-press})
|
||||
|
||||
(def multichain-press-event
|
||||
{:test-name "Multichain tab pressed"
|
||||
:accessibility-label :share-qr-code-multichain-tab
|
||||
:event-name :press
|
||||
:callback-prop-key :on-multichain-press})
|
||||
|
||||
(def legacy-press-event
|
||||
{:test-name "Legacy tab pressed"
|
||||
:accessibility-label :share-qr-code-legacy-tab
|
||||
:event-name :press
|
||||
:callback-prop-key :on-legacy-press})
|
||||
|
||||
(def settings-press-event
|
||||
{:test-name "Settings pressed"
|
||||
:accessibility-label :share-qr-code-settings
|
||||
:event-name :press
|
||||
:callback-prop-key :on-settings-press})
|
||||
|
||||
(defn render-share-qr-code
|
||||
[props]
|
||||
;; NOTE: rendering the profile type first, so that the re-render is triggered.
|
||||
@@ -74,45 +54,22 @@
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Wallet Legacy"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :wallet
|
||||
:address :legacy}))
|
||||
(render-share-qr-code (assoc default-props
|
||||
:type
|
||||
:wallet))
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Wallet multichain"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :wallet
|
||||
:address :multichain}))
|
||||
(h/test "Saved address"
|
||||
(render-share-qr-code (assoc default-props
|
||||
:type
|
||||
:saved-address))
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Saved address legacy"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :saved-address
|
||||
:address :legacy}))
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Saved address multichain"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :saved-address
|
||||
:address :multichain}))
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Watched address legacy"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :watched-address
|
||||
:address :legacy}))
|
||||
(h/is-truthy (h/get-by-text qr-label)))
|
||||
|
||||
(h/test "Watched address multichain"
|
||||
(render-share-qr-code (merge default-props
|
||||
wallet-props
|
||||
{:type :watched-address
|
||||
:address :multichain}))
|
||||
(h/test "Watched address"
|
||||
(render-share-qr-code (assoc default-props
|
||||
:type
|
||||
:watched-address))
|
||||
(h/is-truthy (h/get-by-text qr-label))))
|
||||
|
||||
(h/describe "Fires all events for all types"
|
||||
@@ -136,78 +93,27 @@
|
||||
|
||||
(h/describe "Wallet Legacy"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :wallet
|
||||
:address :legacy
|
||||
:emoji "👻"})
|
||||
(assoc default-props
|
||||
:type :wallet
|
||||
:emoji "👻")
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
multichain-press-event
|
||||
legacy-press-event]))
|
||||
share-press-event]))
|
||||
|
||||
(h/describe "Wallet Multichain"
|
||||
(h/describe "Saved Address"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :wallet
|
||||
:address :multichain
|
||||
:emoji "👻"})
|
||||
(assoc default-props
|
||||
:type
|
||||
:saved-address)
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
legacy-press-event
|
||||
multichain-press-event
|
||||
settings-press-event]))
|
||||
share-press-event]))
|
||||
|
||||
(h/describe "Saved Address Legacy"
|
||||
(h/describe "Watched Address"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :saved-address
|
||||
:address :legacy})
|
||||
(assoc default-props
|
||||
:type :watched-address
|
||||
:emoji "👽")
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
legacy-press-event
|
||||
multichain-press-event]))
|
||||
|
||||
(h/describe "Saved Address Multichain"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :saved-address :address :multichain})
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
legacy-press-event
|
||||
multichain-press-event
|
||||
settings-press-event]))
|
||||
|
||||
(h/describe "Watched Address Legacy"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :watched-address
|
||||
:address :legacy
|
||||
:emoji "👽"})
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
legacy-press-event
|
||||
multichain-press-event]))
|
||||
|
||||
(h/describe "Watched Address Multichain"
|
||||
(test-fire-events
|
||||
(merge default-props
|
||||
wallet-props
|
||||
{:type :watched-address
|
||||
:address :multichain
|
||||
:emoji "👽"})
|
||||
[text-press-event
|
||||
text-long-press-event
|
||||
share-press-event
|
||||
legacy-press-event
|
||||
multichain-press-event
|
||||
settings-press-event])))))
|
||||
share-press-event])))))
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
(ns quo.components.share.share-qr-code.schema
|
||||
(:require
|
||||
[quo.foundations.resources :as resources]))
|
||||
|
||||
(defn- valid-network?
|
||||
[network]
|
||||
(-> network resources/get-network boolean))
|
||||
(ns quo.components.share.share-qr-code.schema)
|
||||
|
||||
(def ?base
|
||||
[:map
|
||||
@@ -35,25 +29,9 @@
|
||||
[:type [:= :wallet]]
|
||||
[:emoji {:optional true} [:maybe ?emoji]]])
|
||||
|
||||
(def ?address-multichain
|
||||
[:map
|
||||
[:address [:= :multichain]]
|
||||
[:on-settings-press {:optional true} fn?]])
|
||||
|
||||
(def ?address-base
|
||||
[:merge
|
||||
[:map
|
||||
[:networks [:sequential [:fn valid-network?]]]
|
||||
[:on-legacy-press {:optional true} [:maybe fn?]]
|
||||
[:on-multichain-press {:optional true} [:maybe fn?]]
|
||||
[:address [:enum :legacy :multichain]]]
|
||||
[:multi {:dispatch :address}
|
||||
[:multichain ?address-multichain]]])
|
||||
|
||||
(def ?saved-address
|
||||
[:map
|
||||
[:type [:= :saved-address]]
|
||||
[:on-settings-press {:optional true} fn?]])
|
||||
[:type [:= :saved-address]]])
|
||||
|
||||
(def ?watched-address
|
||||
[:map
|
||||
@@ -67,8 +45,8 @@
|
||||
[:multi {:dispatch :type}
|
||||
[:channel [:merge ?base ?channel]]
|
||||
[:profile [:merge ?base ?profile]]
|
||||
[:wallet [:merge ?base ?address-base ?wallet]]
|
||||
[:saved-address [:merge ?base ?address-base ?saved-address]]
|
||||
[:watched-address [:merge ?base ?address-base ?watched-address]]]]]
|
||||
[:wallet [:merge ?base ?wallet]]
|
||||
[:saved-address [:merge ?base ?saved-address]]
|
||||
[:watched-address [:merge ?base ?watched-address]]]]]
|
||||
:any])
|
||||
|
||||
|
||||
@@ -12,37 +12,12 @@
|
||||
[quo.components.share.qr-code.view :as qr-code]
|
||||
[quo.components.share.share-qr-code.schema :as component-schema]
|
||||
[quo.components.share.share-qr-code.style :as style]
|
||||
[quo.components.tabs.tab.view :as tab]
|
||||
[quo.components.wallet.address-text.view :as address-text]
|
||||
[quo.foundations.colors :as colors]
|
||||
[quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[schema.core :as schema]
|
||||
[utils.i18n :as i18n]))
|
||||
|
||||
(defn- header
|
||||
[{:keys [on-legacy-press on-multichain-press address]}]
|
||||
[rn/view {:style style/header-container}
|
||||
[tab/view
|
||||
{:accessibility-label :share-qr-code-multichain-tab
|
||||
:id :wallet-multichain-tab
|
||||
:active-item-container-style style/header-tab-active
|
||||
:item-container-style style/header-tab-inactive
|
||||
:size 24
|
||||
:active (= :multichain address)
|
||||
:on-press on-multichain-press}
|
||||
(i18n/label :t/multichain)]
|
||||
[rn/view {:style style/space-between-tabs}]
|
||||
[tab/view
|
||||
{:accessibility-label :share-qr-code-legacy-tab
|
||||
:id :wallet-legacy-tab
|
||||
:active-item-container-style style/header-tab-active
|
||||
:item-container-style style/header-tab-inactive
|
||||
:size 24
|
||||
:active (= :legacy address)
|
||||
:on-press on-legacy-press}
|
||||
(i18n/label :t/legacy)]])
|
||||
|
||||
(defn- info-label
|
||||
[share-qr-code-type]
|
||||
[text/text {:size :paragraph-2 :weight :medium :style style/title}
|
||||
@@ -86,7 +61,7 @@
|
||||
:on-long-press on-text-long-press}
|
||||
qr-data]])
|
||||
|
||||
(defn- wallet-legacy-bottom
|
||||
(defn- wallet-bottom
|
||||
[{:keys [component-width qr-data on-text-press on-text-long-press]}]
|
||||
[info-text
|
||||
{:width component-width
|
||||
@@ -94,28 +69,6 @@
|
||||
:on-long-press on-text-long-press}
|
||||
qr-data])
|
||||
|
||||
(defn wallet-multichain-bottom
|
||||
[{:keys [component-width qr-data on-text-press on-text-long-press on-settings-press]}]
|
||||
[rn/view
|
||||
{:style style/wallet-multichain-container}
|
||||
[info-text
|
||||
{:width component-width
|
||||
:on-press on-text-press
|
||||
:on-long-press on-text-long-press}
|
||||
[address-text/view
|
||||
{:address qr-data
|
||||
:full-address? true
|
||||
:weight :regular
|
||||
:size :paragraph-1}]]
|
||||
[button/button
|
||||
{:icon-only? true
|
||||
:type :grey
|
||||
:background :blur
|
||||
:size 32
|
||||
:accessibility-label :share-qr-code-settings
|
||||
:on-press on-settings-press}
|
||||
:i/advanced]])
|
||||
|
||||
(defn- header-icon
|
||||
[{:keys [share-qr-type customization-color emoji profile-picture full-name]}]
|
||||
(case share-qr-type
|
||||
@@ -140,17 +93,9 @@
|
||||
:full-name full-name}]
|
||||
nil))
|
||||
|
||||
(defn- has-header?
|
||||
[share-qr-type]
|
||||
(case share-qr-type
|
||||
(:wallet
|
||||
:watched-address
|
||||
:saved-address) true
|
||||
false))
|
||||
|
||||
(defn- share-qr-code
|
||||
[{:keys [share-qr-type qr-image-uri component-width customization-color full-name
|
||||
profile-picture emoji on-share-press address]
|
||||
profile-picture emoji on-share-press]
|
||||
:as props}]
|
||||
[:<>
|
||||
[gradient-cover/view {:customization-color customization-color :height 463}]
|
||||
@@ -168,8 +113,6 @@
|
||||
{:color colors/white-opa-40
|
||||
:container-style style/watched-account-icon}])]
|
||||
[share-button {:on-press on-share-press}]]
|
||||
(when (has-header? share-qr-type)
|
||||
[header props])
|
||||
[quo.theme/provider :light
|
||||
[qr-code/view
|
||||
{:qr-image-uri qr-image-uri
|
||||
@@ -185,12 +128,12 @@
|
||||
:profile-picture profile-picture
|
||||
:emoji emoji}]]
|
||||
[rn/view {:style style/bottom-container}
|
||||
(if (= share-qr-type :profile)
|
||||
(case share-qr-type
|
||||
:profile
|
||||
[profile-bottom props]
|
||||
(case address
|
||||
:legacy [wallet-legacy-bottom props]
|
||||
:multichain [wallet-multichain-bottom props]
|
||||
nil))]]])
|
||||
(:wallet :watched-address :saved-address)
|
||||
[wallet-bottom props]
|
||||
nil)]]])
|
||||
|
||||
(defn- view-internal
|
||||
[{provided-width :width :as props}]
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
theme (quo.theme/use-theme)}
|
||||
:as props}]
|
||||
(let [[image-error? set-image-error] (rn/use-state false)]
|
||||
[rn/view {:style (merge {:align-items :flex-start} container-style)}
|
||||
[rn/view {:style [{:align-items :flex-start} container-style]}
|
||||
[rn/view
|
||||
{:style (style/container {:theme theme
|
||||
:type type
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
(defn network-bridge-add
|
||||
[{:keys [network state theme container-style on-press]}]
|
||||
[rn/pressable
|
||||
{:style (merge (style/container network state theme)
|
||||
(style/add-container theme)
|
||||
container-style)
|
||||
{:style [(style/container network state theme)
|
||||
(style/add-container theme)
|
||||
container-style]
|
||||
:on-press on-press}
|
||||
[icon/icon :i/edit
|
||||
{:size 12
|
||||
@@ -36,7 +36,7 @@
|
||||
(if (= status :edit)
|
||||
[network-bridge-add (assoc args :theme theme)]
|
||||
[rn/pressable
|
||||
{:style (merge (style/container network status theme) container-style)
|
||||
{:style [(style/container network status theme) container-style]
|
||||
:accessible true
|
||||
:accessibility-label :container
|
||||
:on-press on-press
|
||||
|
||||
@@ -195,17 +195,12 @@
|
||||
(def success-60-opa-30 (alpha success-60 0.3))
|
||||
(def success-60-opa-40 (alpha success-60 0.4))
|
||||
|
||||
;;;;Danger
|
||||
(def danger "#E95460")
|
||||
|
||||
;; Danger with transparency
|
||||
(def danger-opa-40 (alpha danger 0.4))
|
||||
|
||||
;;Solid
|
||||
(def danger-50 "#E95460")
|
||||
(def danger-60 "#BA434D")
|
||||
|
||||
(def system-yellow "#FFD60A")
|
||||
(def keycard-color "#FF6400")
|
||||
|
||||
;;50 with transparency
|
||||
(def danger-50-opa-0 (alpha danger-50 0))
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
{:keycard-logo (js/require "../resources/images/ui2/keycard-logo.png")
|
||||
:keycard-chip-light (js/require "../resources/images/ui2/keycard-chip-light.png")
|
||||
:keycard-chip-dark (js/require "../resources/images/ui2/keycard-chip-dark.png")
|
||||
:keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png")
|
||||
:bored-ape (js/require "../resources/images/mock2/bored-ape.png")})
|
||||
|
||||
(def ui-themed
|
||||
|
||||
@@ -211,3 +211,5 @@
|
||||
(def linking (.-Linking react-native))
|
||||
|
||||
(defn open-url [link] (.openURL ^js linking link))
|
||||
|
||||
(def stylesheet-absolute-fill ^js (.. react-native -StyleSheet -absoluteFill))
|
||||
|
||||
@@ -21,9 +21,7 @@
|
||||
["react-native-redash" :refer (withPause)]
|
||||
[react-native.flat-list :as rn-flat-list]
|
||||
[react-native.platform :as platform]
|
||||
[react-native.utils :as rn.utils]
|
||||
[reagent.core :as reagent]
|
||||
[utils.transforms :as transforms]
|
||||
[utils.worklets.core :as worklets.core]))
|
||||
|
||||
(def ^:const default-duration 300)
|
||||
@@ -36,13 +34,7 @@
|
||||
;; Animated Components
|
||||
(def create-animated-component (comp reagent/adapt-react-class (.-createAnimatedComponent reanimated)))
|
||||
|
||||
(def ^:private view* (reagent/adapt-react-class (.-View reanimated)))
|
||||
|
||||
(defn view
|
||||
[& argv]
|
||||
(let [[reagent-props children] (rn.utils/get-props-and-children argv)
|
||||
updated-props (update reagent-props :style transforms/styles-with-vectors)]
|
||||
(into [view* updated-props] children)))
|
||||
(def view (reagent/adapt-react-class (.-View reanimated)))
|
||||
|
||||
(def scroll-view (reagent/adapt-react-class (.-ScrollView reanimated)))
|
||||
(def image (reagent/adapt-react-class (.-Image reanimated)))
|
||||
@@ -186,4 +178,3 @@
|
||||
(with-timing value
|
||||
(clj->js {:duration duration
|
||||
:easing (default-easing)})))))
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
(ns react-native.utils-test
|
||||
(:require
|
||||
[cljs.test :refer [deftest is testing]]
|
||||
[utils.reagent :as sut]))
|
||||
|
||||
(sut/set-convert-props-in-vectors!)
|
||||
|
||||
(deftest convert-prop-value-test
|
||||
;; `test-fn` transforms the result to be easily compared during testing
|
||||
(let [test-fn (comp js->clj sut/convert-prop-value)]
|
||||
(testing "camelCase keys are kept as is"
|
||||
(let [props {:foo nil
|
||||
:bar nil}]
|
||||
(is (= (update-keys props name)
|
||||
(test-fn props)))))
|
||||
|
||||
(testing "kebab-case keys are transformed"
|
||||
(let [props {:foo nil
|
||||
:bar nil}]
|
||||
(is (= {"foo" nil
|
||||
"bar" nil}
|
||||
(test-fn props)))))
|
||||
|
||||
(testing "kebab-case keys are transformed when passed inside a vector"
|
||||
(let [props-in-vector [{:foo nil
|
||||
:bar nil}]]
|
||||
(is (= [{"foo" nil
|
||||
"bar" nil}]
|
||||
(test-fn props-in-vector)))))
|
||||
|
||||
(testing "kebab-case keys are transformed recursively when the structure has vectors"
|
||||
(let [props-with-vectors {:foo [{:foo-bar nil
|
||||
:foo-baz nil}]
|
||||
:bar [{:bar-baz nil}
|
||||
{:bar-qux nil}]}]
|
||||
(is (= {"foo" [{"fooBar" nil
|
||||
"fooBaz" nil}]
|
||||
"bar" [{"barBaz" nil} {"barQux" nil}]}
|
||||
(test-fn props-with-vectors))))
|
||||
(testing "Complex example"
|
||||
(let [complex-props {:foo [{:foo-bar nil :foo-baz nil}]
|
||||
:bar [{:bar-baz nil} {:bar-qux nil}]
|
||||
:qux {:foo-qux :bar-qux}
|
||||
:foo-bar-qux {:foo [{:bar :qux}
|
||||
{:bar-qux nil}]
|
||||
:foo-bar :qux
|
||||
:foo-bar-qux [:foo :bar :qux {:foo-bar :foo-bar}]}}]
|
||||
(is (= {"foo" [{"fooBar" nil "fooBaz" nil}]
|
||||
"bar" [{"barBaz" nil} {"barQux" nil}]
|
||||
"qux" {"fooQux" "bar-qux"}
|
||||
"fooBarQux" {"foo" [{"bar" "qux"} {"barQux" nil}]
|
||||
"fooBar" "qux"
|
||||
"fooBarQux" ["foo" "bar" "qux" {"fooBar" "foo-bar"}]}}
|
||||
(test-fn complex-props))))))))
|
||||
@@ -0,0 +1,129 @@
|
||||
(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"}])
|
||||
)
|
||||
@@ -0,0 +1,97 @@
|
||||
(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"})))
|
||||
|
||||
|
||||
@@ -265,16 +265,11 @@
|
||||
:sub-label nil
|
||||
:chevron? false}))
|
||||
|
||||
;; TODO(OmarBasem): Requires design input.
|
||||
(defn show-qr-entry
|
||||
[public-key]
|
||||
(entry {:icon :i/qr-code
|
||||
:label (i18n/label :t/show-qr)
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:universal-links/generate-profile-url
|
||||
{:public-key public-key
|
||||
:on-success #(rf/dispatch [:open-modal
|
||||
:share-contact])}]))
|
||||
:on-press #(rf/dispatch [:contacts/show-qr-code public-key])
|
||||
:danger? false
|
||||
:accessibility-label :show-qr-code
|
||||
:sub-label nil
|
||||
|
||||
@@ -73,10 +73,10 @@
|
||||
[{:keys [scroll-ref tabs selected-tab on-tab-change scroll-shared-value content customization-color]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[:<>
|
||||
[:f> banner-card-blur-layer scroll-shared-value
|
||||
[:f> banner-card-hiding-layer
|
||||
[banner-card-blur-layer scroll-shared-value
|
||||
[banner-card-hiding-layer
|
||||
(assoc content :scroll-shared-value scroll-shared-value :theme theme)]]
|
||||
[:f> banner-card-tabs-layer
|
||||
[banner-card-tabs-layer
|
||||
{:scroll-shared-value scroll-shared-value
|
||||
:selected-tab selected-tab
|
||||
:tabs tabs
|
||||
|
||||
@@ -9,35 +9,38 @@
|
||||
[{:keys [db]} {:keys [type action data error] :as event}]
|
||||
(log/info "local pairing signal received"
|
||||
{:event event})
|
||||
(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)]
|
||||
(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)]
|
||||
(merge {:db (cond-> db
|
||||
connection-success?
|
||||
(assoc-in [:syncing :pairing-status] :connected)
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
:podcasts (js/require "../resources/images/ui2/podcasts.png")
|
||||
:generate-keys (js/require "../resources/images/ui2/generate-keys.png")
|
||||
:add-key-to-keycard (js/require "../resources/images/ui2/add-key-to-keycard.png")
|
||||
:import-key-to-keycard (js/require "../resources/images/ui2/import-key-to-keycard.png")
|
||||
:ethereum-address (js/require "../resources/images/ui2/ethereum-address.png")
|
||||
:use-keycard (js/require "../resources/images/ui2/keycard.png")
|
||||
:use-recovery-phrase (js/require "../resources/images/ui2/recovery-phrase.png")
|
||||
:check-your-keycard (js/require "../resources/images/ui2/check-your-keycard.png")
|
||||
:qr-code (js/require "../resources/images/ui2/qr-code.png")
|
||||
:keycard-logo (js/require "../resources/images/ui2/keycard-logo.png")
|
||||
:keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png")
|
||||
:keycard-buy (js/require "../resources/images/ui2/keycard-buy.png")
|
||||
:keycard-migration (js/require "../resources/images/ui2/keycard-migration.png")
|
||||
:keycard-migration-failed (js/require "../resources/images/ui2/keycard-migration-failed.png")
|
||||
|
||||
@@ -15,16 +15,7 @@
|
||||
|
||||
(def flex-spacer {:flex 1})
|
||||
|
||||
(def absolute-fill
|
||||
{:position :absolute
|
||||
:top 0
|
||||
:bottom 0
|
||||
:left 0
|
||||
:right 0})
|
||||
|
||||
(def hole
|
||||
(merge absolute-fill
|
||||
{:z-index 2 :opacity 0.95}))
|
||||
(def hole {:z-index 2 :opacity 0.95})
|
||||
|
||||
(defn root-container
|
||||
[padding-top]
|
||||
|
||||
@@ -174,10 +174,10 @@
|
||||
:on-success-scan set-qr-code-succeeded
|
||||
:on-failed-scan set-rescan-timeout}))}]]
|
||||
[hole-view/hole-view
|
||||
{:style style/hole
|
||||
:holes [(assoc qr-view-finder :borderRadius 16)]}
|
||||
{:style [rn/stylesheet-absolute-fill style/hole]
|
||||
:holes [(assoc qr-view-finder :border-radius 16)]}
|
||||
[quo/blur
|
||||
{:style style/absolute-fill
|
||||
{:style rn/stylesheet-absolute-fill
|
||||
:blur-amount 10
|
||||
:blur-type :transparent
|
||||
:overlay-color colors/neutral-80-opa-80-blur
|
||||
|
||||
@@ -10,16 +10,35 @@
|
||||
[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
|
||||
[has-partially-operable-accounts? on-auth-success masked-password]
|
||||
[{:keys [migrate-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 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}])
|
||||
(if migrate-partially-operable-accounts?
|
||||
(rf/dispatch [:standard-auth/migrate-partially-operable-accounts
|
||||
{:masked-password masked-password
|
||||
:on-success on-auth-success}])
|
||||
(on-auth-success-callback))))
|
||||
|
||||
(defn authorize
|
||||
@@ -42,9 +61,10 @@
|
||||
{:pin pin
|
||||
:on-success (fn [{:keys [encryption-public-key]}]
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(handle-password-success false
|
||||
on-auth-success
|
||||
(security/mask-data encryption-public-key)))
|
||||
(handle-password-success {:migrate-partially-operable-accounts? false
|
||||
:on-auth-success on-auth-success
|
||||
:masked-password (security/mask-data
|
||||
encryption-public-key)}))
|
||||
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error
|
||||
%])}]))}]))}]]
|
||||
[:effects.biometric/check-if-available
|
||||
@@ -85,7 +105,12 @@
|
||||
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 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}]))]])
|
||||
[:dispatch [:standard-auth/set-success true]]
|
||||
[:dispatch [:standard-auth/reset-login-password]]]}))
|
||||
|
||||
@@ -108,15 +133,14 @@
|
||||
(defn- bottom-sheet-password-view
|
||||
[{:keys [on-press-biometric on-auth-success auth-button-icon-left auth-button-label]}]
|
||||
(fn []
|
||||
(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}])))
|
||||
[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}]))
|
||||
|
||||
(defn authorize-with-keycard
|
||||
[_ [{:keys [on-complete]}]]
|
||||
@@ -155,6 +179,12 @@
|
||||
(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]]
|
||||
|
||||
@@ -11,28 +11,28 @@
|
||||
[{:keys [track-text customization-color auth-button-label on-auth-success on-auth-fail
|
||||
auth-button-icon-left size blur? container-style disabled? dependencies on-complete]
|
||||
:or {container-style {:flex 1}}}]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
auth-method (rf/sub [:auth-method])
|
||||
biometric-auth? (= auth-method constants/auth-method-biometric)
|
||||
authorization-callback (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:standard-auth/authorize
|
||||
{:auth-button-icon-left auth-button-icon-left
|
||||
:theme theme
|
||||
:blur? blur?
|
||||
:biometric-auth? biometric-auth?
|
||||
:on-auth-success on-auth-success
|
||||
:on-auth-fail on-auth-fail
|
||||
:auth-button-label auth-button-label}]))
|
||||
(vec (conj dependencies on-auth-success on-auth-fail)))
|
||||
on-slider-complete (rn/use-callback
|
||||
(fn [reset-slider-fn]
|
||||
(js/setTimeout #(reset-slider-fn false) 500)
|
||||
(if (fn? on-complete)
|
||||
(on-complete)
|
||||
(authorization-callback)))
|
||||
[on-complete authorization-callback])
|
||||
biometric-type (rf/sub [:biometrics/supported-type])]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
auth-method (rf/sub [:auth-method])
|
||||
biometric-auth? (= auth-method constants/auth-method-biometric)
|
||||
on-complete-callback (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:standard-auth/authorize
|
||||
{:auth-button-icon-left auth-button-icon-left
|
||||
:theme theme
|
||||
:blur? blur?
|
||||
:biometric-auth? biometric-auth?
|
||||
:on-auth-success on-auth-success
|
||||
:on-auth-fail on-auth-fail
|
||||
:auth-button-label auth-button-label}]))
|
||||
(vec (conj dependencies on-auth-success on-auth-fail)))
|
||||
on-slider-complete (rn/use-callback
|
||||
(fn [reset-slider-fn]
|
||||
(js/setTimeout #(reset-slider-fn false) 500)
|
||||
(if (fn? on-complete)
|
||||
(on-complete)
|
||||
(on-complete-callback)))
|
||||
[on-complete on-complete-callback])
|
||||
biometric-type (rf/sub [:biometrics/supported-type])]
|
||||
[quo/slide-button
|
||||
{:container-style container-style
|
||||
:size size
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
|
||||
(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})
|
||||
{: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})
|
||||
|
||||
(def each-toast-container
|
||||
{:width "100%"
|
||||
|
||||
@@ -213,13 +213,15 @@
|
||||
|
||||
(defn save-profile-url
|
||||
[{:keys [db]} [public-key url]]
|
||||
(when url
|
||||
{:db
|
||||
(cond-> db
|
||||
(get-in db [:contacts/contacts public-key])
|
||||
(assoc-in [:contacts/contacts public-key :universal-profile-url] url)
|
||||
(= public-key (get-in db [:profile/profile :public-key]))
|
||||
(assoc-in [:profile/profile :universal-profile-url] url))}))
|
||||
(let [contact-from-key (get-in db [:contacts/contacts public-key])
|
||||
profile-public-key? (= public-key (get-in db [:profile/profile :public-key]))]
|
||||
(when url
|
||||
{:db (cond-> db
|
||||
contact-from-key
|
||||
(assoc-in [:contacts/contacts public-key :universal-profile-url] url)
|
||||
|
||||
profile-public-key?
|
||||
(assoc-in [:profile/profile :universal-profile-url] url))})))
|
||||
|
||||
(schema/=> save-profile-url
|
||||
[:=>
|
||||
|
||||
@@ -28,12 +28,17 @@
|
||||
(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))
|
||||
(def mainnet-chain-explorer-link "https://etherscan.io/address/")
|
||||
(def optimism-mainnet-chain-explorer-link "https://optimistic.etherscan.io/address/")
|
||||
(def arbitrum-mainnet-chain-explorer-link "https://arbiscan.io/address/")
|
||||
(def base-mainnet-chain-explorer-link "https://basescan.org/address/")
|
||||
(def base-sepolia-chain-explorer-link "https://sepolia.basescan.org/address/")
|
||||
(def sepolia-chain-explorer-link "https://sepolia.etherscan.io/address/")
|
||||
(def optimism-sepolia-chain-explorer-link "https://sepolia-optimistic.etherscan.io/address/")
|
||||
(def arbitrum-sepolia-chain-explorer-link "https://sepolia.arbiscan.io/address/")
|
||||
|
||||
@@ -221,10 +221,7 @@
|
||||
(def ^:const wallet-connect-eth-sign-typed-v4-method "eth_signTypedData_v4")
|
||||
(def ^:const wallet-connect-supported-methods
|
||||
#{wallet-connect-personal-sign-method
|
||||
wallet-connect-eth-sign-method
|
||||
wallet-connect-eth-send-transaction-method
|
||||
;; NOTE: disabled, as we have no clear use cases for it and other wallets don't support it
|
||||
;; wallet-connect-eth-sign-transaction-method
|
||||
wallet-connect-eth-sign-typed-method
|
||||
wallet-connect-eth-sign-typed-v4-method})
|
||||
(def ^:const wallet-connect-supported-events #{"accountsChanged" "chainChanged"})
|
||||
@@ -237,11 +234,9 @@
|
||||
(def ^:const wallet-connect-message-signing-methods
|
||||
#{wallet-connect-personal-sign-method
|
||||
wallet-connect-eth-sign-typed-method
|
||||
wallet-connect-eth-sign-method
|
||||
wallet-connect-eth-sign-typed-v4-method})
|
||||
(def ^:const wallet-connect-transaction-methods
|
||||
#{wallet-connect-eth-send-transaction-method
|
||||
wallet-connect-eth-sign-transaction-method})
|
||||
#{wallet-connect-eth-send-transaction-method})
|
||||
|
||||
(def ^:const transaction-pending-type-wallet-connect-transfer "WalletConnectTransfer")
|
||||
|
||||
@@ -448,10 +443,7 @@
|
||||
(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)
|
||||
|
||||
@@ -151,3 +151,12 @@
|
||||
error]]]})
|
||||
|
||||
(rf/reg-event-fx :contacts/update-nickname-error update-nickname-error)
|
||||
|
||||
(rf/reg-event-fx
|
||||
:contacts/show-qr-code
|
||||
(fn [{db :db} [public-key]]
|
||||
{:db (assoc db :contacts/identity public-key)
|
||||
:fx [[:dispatch
|
||||
[:universal-links/generate-profile-url
|
||||
{:public-key public-key
|
||||
:on-success #(rf/dispatch [:open-modal :share-contact])}]]]}))
|
||||
|
||||
@@ -114,13 +114,17 @@
|
||||
{:scroll-input (oops/oget % "nativeEvent.contentOffset.y")
|
||||
:shared-value scroll-shared-value})}])))
|
||||
|
||||
(defn- on-new-message-press
|
||||
[]
|
||||
(let [main-event [:show-bottom-sheet {:content chat.actions.view/new-chat}]]
|
||||
(rf/dispatch [:profile/check-profile-update-prompt main-event])))
|
||||
|
||||
(defn- banner-data
|
||||
[profile-link]
|
||||
{:title-props
|
||||
{:beta? true
|
||||
:label (i18n/label :t/messages)
|
||||
:handler #(rf/dispatch
|
||||
[:show-bottom-sheet {:content chat.actions.view/new-chat}])
|
||||
:handler on-new-message-press
|
||||
:accessibility-label :new-chat-button}
|
||||
:card-props
|
||||
{:on-press #(rf/dispatch [:open-share {:options {:url profile-link}}])
|
||||
|
||||
@@ -159,7 +159,9 @@
|
||||
[content]
|
||||
(reduce (fn [acc e]
|
||||
(conj acc (resolve-group-system-message e)))
|
||||
[quo/text]
|
||||
[rn/view
|
||||
{:style {:flex-direction :row
|
||||
:flex-wrap :wrap}}]
|
||||
(:parsed-text content)))
|
||||
|
||||
(defn group-system-message
|
||||
|
||||
@@ -95,10 +95,10 @@
|
||||
|
||||
(defn get-actions
|
||||
[{:keys [outgoing content pinned-by outgoing-status deleted? deleted-for-me? content-type
|
||||
bridge-message]
|
||||
bridge-message message-id]
|
||||
:as message-data}
|
||||
{:keys [able-to-send-message? community? community-member? can-delete-message-for-everyone?
|
||||
message-pin-enabled group-chat group-admin?]}]
|
||||
message-pin-enabled group-chat group-admin? debug-log-level?]}]
|
||||
(let [edit-message? (and (or community-member? (not community?))
|
||||
outgoing
|
||||
(not (or deleted? deleted-for-me?))
|
||||
@@ -153,6 +153,14 @@
|
||||
:icon :i/copy
|
||||
:id :copy})
|
||||
|
||||
debug-log-level?
|
||||
(conj {:type :main
|
||||
:on-press #(clipboard/set-string message-id)
|
||||
:label (i18n/label :t/copy-message-id)
|
||||
:accessibility-label :copy-message-id
|
||||
:icon :i/copy
|
||||
:id :copy-message-id})
|
||||
|
||||
pin-message?
|
||||
(conj {:type :main
|
||||
:on-press #(pin-message message-data)
|
||||
|
||||
@@ -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.contexts.wallet.data-store :as wallet.data-store]
|
||||
[status-im.infra.transform :as infra.transform]
|
||||
[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 wallet.data-store/rpc->saved-addresses)]
|
||||
(let [saved-addresses (-> saved-addresses-js types/js->clj infra.transform/rpc->saved-addresses)]
|
||||
(js-delete response-js "savedAddresses")
|
||||
(rf/merge cofx
|
||||
{:fx [[:dispatch [:wallet/reconcile-saved-addresses saved-addresses]]]}
|
||||
{:fx [[:dispatch [:domain/reconcile-saved-addresses saved-addresses]]]}
|
||||
(process-next response-js sync-handler)))
|
||||
|
||||
(seq ens-username-details-js)
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
(ns status-im.contexts.keycard.backup.events
|
||||
(:require [utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.generate-and-load-key
|
||||
(fn [{:keys [db]}]
|
||||
(let [{:keys [masked-phrase pin]} (get-in db [:keycard :backup])]
|
||||
{:fx [[:effects.keycard/generate-and-load-key
|
||||
{:mnemonic (security/safe-unmask-data masked-phrase)
|
||||
:pin pin
|
||||
:on-success (fn []
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:open-modal :screen/keycard.backup.success]))
|
||||
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]]})))
|
||||
|
||||
(defn- ready-to-add-not-empty
|
||||
[error]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(if (= error :keycard/error.not-keycard)
|
||||
(rf/dispatch [:keycard/on-application-info-error error])
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.backup.not-empty
|
||||
{:on-press #(rf/dispatch [:keycard/backup.ready-to-add-connect])}]))))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.ready-to-add-connect
|
||||
(fn [_]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(rf/dispatch [:keycard/backup.generate-and-load-key])
|
||||
(ready-to-add-not-empty error)))}]]]}))
|
||||
|
||||
(defn- scan-empty-card-not-empty
|
||||
[error]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(if (= error :keycard/error.not-keycard)
|
||||
(rf/dispatch [:keycard/on-application-info-error error])
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.backup.not-empty
|
||||
{:on-press #(rf/dispatch [:keycard/backup.scan-empty-card])}]))))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.scan-empty-card
|
||||
(fn [_]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:keycard/backup.create-or-enter-pin]))
|
||||
(scan-empty-card-not-empty error)))}]]]}))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.save-pin
|
||||
(fn [{:keys [db]} [pin]]
|
||||
{:db (assoc-in db [:keycard :backup :pin] pin)}))
|
||||
|
||||
(defn- save-pin-and-navigate-to-phrase
|
||||
[pin]
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/backup.save-pin pin])
|
||||
(rf/dispatch
|
||||
[:open-modal :screen/use-recovery-phrase-dark
|
||||
{:on-success #(rf/dispatch [:keycard/backup.phrase-entered %])}]))
|
||||
|
||||
(defn- verify-entered-pin-and-continue
|
||||
[pin]
|
||||
(rf/dispatch
|
||||
[:keycard/connect
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(rf/dispatch
|
||||
[:keycard/verify-pin
|
||||
{:pin pin
|
||||
:on-success #(save-pin-and-navigate-to-phrase pin)
|
||||
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}])
|
||||
(rf/dispatch [:keycard/on-application-info-error error])))}]))
|
||||
|
||||
(declare init-card-not-empty)
|
||||
|
||||
(defn- init-card-with-pin-and-continue
|
||||
[pin]
|
||||
(rf/dispatch
|
||||
[:keycard/connect
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(rf/dispatch
|
||||
[:keycard/init-card
|
||||
{:pin pin
|
||||
:on-success #(rf/dispatch
|
||||
[:keycard/get-application-info
|
||||
{:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(save-pin-and-navigate-to-phrase pin)
|
||||
(init-card-not-empty pin error)))}])}])
|
||||
(init-card-not-empty pin error)))}]))
|
||||
|
||||
(defn- init-card-not-empty
|
||||
[pin error]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(if (= error :keycard/error.not-keycard)
|
||||
(rf/dispatch [:keycard/on-application-info-error error])
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.backup.not-empty
|
||||
{:on-press #(init-card-with-pin-and-continue pin)}]))))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.create-or-enter-pin
|
||||
(fn [{:keys [db]}]
|
||||
(let [{:keys [initialized?]} (get-in db [:keycard :application-info])]
|
||||
{:fx [[:dispatch [:navigate-back]]
|
||||
(if initialized?
|
||||
[:dispatch
|
||||
[:open-modal :screen/keycard.pin.enter
|
||||
{:on-complete verify-entered-pin-and-continue}]]
|
||||
[:dispatch
|
||||
[:open-modal :screen/keycard.pin.create
|
||||
{:on-complete init-card-with-pin-and-continue}]])]})))
|
||||
|
||||
(rf/reg-event-fx :keycard/backup.phrase-entered
|
||||
(fn [{:keys [db]} [{:keys [phrase]}]]
|
||||
{:db (assoc-in db [:keycard :backup :masked-phrase] phrase)
|
||||
:fx [[:dispatch [:navigate-back]]
|
||||
[:dispatch [:open-modal :screen/keycard.backup.ready-to-add]]]}))
|
||||
@@ -0,0 +1,96 @@
|
||||
(ns status-im.contexts.keycard.backup.view
|
||||
(:require [quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.resources :as resources]
|
||||
[status-im.contexts.keycard.common.view :as common.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn ready-to-add
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/ready-add-keypair-keycard)}]
|
||||
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:source (resources/get-image :keycard-migration)}]]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/scan-keycard)
|
||||
:button-one-props {:on-press #(rf/dispatch [:keycard/backup.ready-to-add-connect])}}]])
|
||||
|
||||
(defn success-view
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/backup-keycard-created)}]
|
||||
[rn/view {:style {:flex 1}}]
|
||||
[rn/view {:style {:padding-horizontal 20}}
|
||||
[quo/button {:on-press events-helper/navigate-back}
|
||||
(i18n/label :t/done)]]])
|
||||
|
||||
(defn not-empty-view
|
||||
[]
|
||||
(let [{:keys [on-press]} (rf/sub [:get-screen-params])]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/keycard-not-empty)
|
||||
:description :text
|
||||
:description-text (i18n/label :t/scan-empty-keycard)}]
|
||||
[rn/view {:style {:flex 1}}]
|
||||
[common.view/tips]
|
||||
[rn/view {:style {:padding-horizontal 20}}
|
||||
[quo/button {:on-press on-press}
|
||||
(i18n/label :t/try-again)]]]))
|
||||
|
||||
(defn scan-empty
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/scan-empty-keycard)
|
||||
:description :text
|
||||
:description-text (i18n/label :t/backup-empty-keycard-only)}]
|
||||
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:source (resources/get-image :check-your-keycard)}]]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/ready-to-scan)
|
||||
:button-one-props {:on-press #(rf/dispatch [:keycard/backup.scan-empty-card])}}]])
|
||||
|
||||
(defn sheet
|
||||
[{:keys [on-continue]}]
|
||||
(let [customization-color (rf/sub [:profile/customization-color])]
|
||||
[:<>
|
||||
[quo/drawer-top {:title (i18n/label :t/create-backup-keycard)}]
|
||||
[quo/text
|
||||
{:style {:padding-horizontal 20
|
||||
:padding-vertical 8}}
|
||||
(i18n/label :t/backup-keycard-instructions)]
|
||||
[quo/bottom-actions
|
||||
{:actions :two-actions
|
||||
:button-one-label (i18n/label :t/continue)
|
||||
:button-one-props {:customization-color customization-color
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:hide-bottom-sheet])
|
||||
(on-continue))}
|
||||
:button-two-label (i18n/label :t/cancel)
|
||||
:button-two-props {:type :grey
|
||||
:on-press #(rf/dispatch [:hide-bottom-sheet])}}]]))
|
||||
@@ -0,0 +1,73 @@
|
||||
(ns status-im.contexts.keycard.change-pin.events
|
||||
(:require [status-im.contexts.keycard.utils :as utils]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin.enter-current-pin
|
||||
(fn [{:keys [db]}]
|
||||
{:db (update db :keycard dissoc :change-pin)
|
||||
:fx [[:dispatch [:navigate-back]]
|
||||
[:dispatch
|
||||
[:open-modal :screen/keycard.pin.enter
|
||||
{:title (i18n/label :t/enter-current-keycard-pin)
|
||||
:on-complete (fn [current-pin]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/change-pin.save-current-pin current-pin])
|
||||
(rf/dispatch [:keycard/change-pin.enter-new-pin]))}]]]}))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin.save-current-pin
|
||||
(fn [{:keys [db]} [pin]]
|
||||
{:db (assoc-in db [:keycard :change-pin :current-pin] (security/mask-data pin))}))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin.enter-new-pin
|
||||
(fn [_]
|
||||
{:fx [[:dispatch
|
||||
[:open-modal :screen/keycard.pin.create
|
||||
{:title (i18n/label :t/create-new-keycard-pin)
|
||||
:repeat-stage-title (i18n/label :t/repeat-new-keycard-pin)
|
||||
:on-complete (fn [new-pin]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/change-pin.save-new-pin new-pin])
|
||||
(rf/dispatch [:open-modal :screen/keycard.ready-to-change-pin]))}]]]}))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin.save-new-pin
|
||||
(fn [{:keys [db]} [pin]]
|
||||
{:db (assoc-in db [:keycard :change-pin :new-pin] (security/mask-data pin))}))
|
||||
|
||||
(defn- change-pin-and-continue
|
||||
[current-pin new-pin]
|
||||
(rf/dispatch [:keycard/change-pin
|
||||
{:on-success (fn []
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.pin-change-success]))
|
||||
:on-failure (fn []
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.pin-change-failed]))
|
||||
:current-pin current-pin
|
||||
:new-pin new-pin}]))
|
||||
|
||||
(defn- verify-pin-and-continue
|
||||
[current-pin new-pin]
|
||||
(rf/dispatch
|
||||
[:keycard/verify-pin
|
||||
{:pin current-pin
|
||||
:on-success #(change-pin-and-continue current-pin new-pin)
|
||||
:on-failure (fn [error]
|
||||
(when-not (utils/tag-lost? (:error error))
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:keycard/on-action-with-pin-error error])
|
||||
(rf/dispatch [:keycard/change-pin.enter-current-pin])))}]))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin.verify-current-pin-and-continue
|
||||
(fn [{:keys [db]}]
|
||||
(let [{:keys [current-pin new-pin]} (get-in db [:keycard :change-pin])
|
||||
unmasked-current-pin (security/safe-unmask-data current-pin)
|
||||
unmasked-new-pin (security/safe-unmask-data new-pin)]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:theme :dark
|
||||
:key-uid (get-in db [:profile/profile :key-uid])
|
||||
:on-success #(verify-pin-and-continue unmasked-current-pin unmasked-new-pin)}]]]})))
|
||||
@@ -0,0 +1,82 @@
|
||||
(ns status-im.contexts.keycard.change-pin.view
|
||||
(:require [quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.contexts.keycard.common.view :as common.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn change-pin-confirmation-sheet
|
||||
[]
|
||||
[quo/documentation-drawers
|
||||
{:title (i18n/label :t/change-pin-keycard)
|
||||
:shell? true}
|
||||
[rn/view
|
||||
[quo/text {:size :paragraph-2}
|
||||
(i18n/label :t/change-pin-keycard-message)]
|
||||
[quo/bottom-actions
|
||||
{:actions :two-actions
|
||||
:container-style {:margin-horizontal -20}
|
||||
:blur? true
|
||||
:button-one-label (i18n/label :t/continue)
|
||||
:button-one-props {:on-press #(rf/dispatch [:keycard/change-pin.enter-current-pin])}
|
||||
:button-two-label (i18n/label :t/cancel)
|
||||
:button-two-props {:on-press events-helper/hide-bottom-sheet
|
||||
:type :grey}}]]])
|
||||
|
||||
(defn ready-to-change-pin
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/ready-to-change-pin)}]
|
||||
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
|
||||
[rn/image
|
||||
{:resize-mode :contain}]]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/scan-keycard)
|
||||
:button-one-props {:on-press #(rf/dispatch
|
||||
[:keycard/change-pin.verify-current-pin-and-continue])}}]])
|
||||
|
||||
(defn pin-change-success
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/keycard-pin-changed)
|
||||
:description :text
|
||||
:description-text (i18n/label :t/keycard-pin-changed-description)}]
|
||||
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
|
||||
[rn/image
|
||||
{:resize-mode :contain}]]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/done)
|
||||
:button-one-props {:on-press events-helper/navigate-back}}]])
|
||||
|
||||
(defn pin-change-failed
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/keycard-pin-change-failed)
|
||||
:description :text
|
||||
:description-text (i18n/label :t/keycard-pin-change-failed-description)}]
|
||||
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
|
||||
[rn/image
|
||||
{:resize-mode :contain}]]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/try-again)
|
||||
:button-one-props {:on-press (fn []
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:open-modal :screen/keycard.ready-to-change-pin]))}}]])
|
||||
@@ -0,0 +1,26 @@
|
||||
(ns status-im.contexts.keycard.check.events
|
||||
(:require [utils.re-frame :as rf]))
|
||||
|
||||
(rf/reg-event-fx :keycard/check-empty-card
|
||||
(fn [{:keys [db]}]
|
||||
(let [keycard-profile? (not (nil? (get-in db [:profile/profile :keycard-pairing])))]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:key-uid (get-in db [:profile/profile :key-uid])
|
||||
:theme :dark
|
||||
:on-success
|
||||
(fn []
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:navigate-back])
|
||||
(if keycard-profile?
|
||||
(rf/dispatch [:open-modal :screen/keycard.manage.profile-keys])
|
||||
(rf/dispatch [:open-modal :screen/keycard.migrate.profile-keys])))
|
||||
:on-error
|
||||
(fn [error]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(if (and (= error :keycard/error.keycard-empty)
|
||||
(not keycard-profile?))
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.empty]))
|
||||
(rf/dispatch [:keycard/on-application-info-error error])))}]]]})))
|
||||
@@ -3,16 +3,41 @@
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.resources :as resources]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.keycard.common.view :as common.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn- keycard-documentation
|
||||
[]
|
||||
[quo/documentation-drawers
|
||||
{:title (i18n/label :t/keycard)
|
||||
:shell? true}
|
||||
[rn/view
|
||||
[quo/text {:size :paragraph-2}
|
||||
(i18n/label :t/keycard-documentation)]
|
||||
[quo/button
|
||||
{:size 40
|
||||
:type :primary
|
||||
:container-style {:margin-top 24 :margin-bottom 12}
|
||||
:background :blur
|
||||
:icon-right :i/external
|
||||
:on-press #(rf/dispatch [:browser.ui/open-url constants/get-keycard-url])
|
||||
:accessibility-label :get-keycard}
|
||||
(i18n/label :t/buy-keycard)]]])
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [{:keys [on-press]} (rf/sub [:get-screen-params])]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/arrow-left
|
||||
:on-press events-helper/navigate-back}]
|
||||
{:icon-name :i/arrow-left
|
||||
:on-press events-helper/navigate-back
|
||||
:right-side [{:icon-name :i/info
|
||||
:on-press #(rf/dispatch [:show-bottom-sheet
|
||||
{:content keycard-documentation
|
||||
:theme :dark
|
||||
:shell? true}])}]}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/check-keycard)
|
||||
:description :text
|
||||
@@ -21,9 +46,7 @@
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:source (resources/get-image :check-your-keycard)}]]
|
||||
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
|
||||
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
|
||||
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/ready-to-scan)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
(ns status-im.contexts.keycard.common.view
|
||||
(:require [quo.core :as quo]
|
||||
[utils.i18n :as i18n]))
|
||||
|
||||
(defn tips
|
||||
[]
|
||||
[:<>
|
||||
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
|
||||
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
|
||||
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]])
|
||||
@@ -1,5 +1,7 @@
|
||||
(ns status-im.contexts.keycard.create.events
|
||||
(:require [clojure.string :as string]
|
||||
[status-im.common.resources :as resources]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
@@ -7,9 +9,10 @@
|
||||
(fn [_]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:on-error
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-blank)
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.empty-create]))
|
||||
@@ -18,8 +21,17 @@
|
||||
(defn- backup-recovery-phrase-success
|
||||
[masked-seed-phrase]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:open-modal :screen/confirm-backup
|
||||
(rf/dispatch [:open-modal :screen/confirm-backup-dark
|
||||
{:masked-seed-phrase masked-seed-phrase
|
||||
:theme :dark
|
||||
:shell? true
|
||||
:on-try-again #(rf/dispatch [:open-modal :screen/backup-recovery-phrase-dark
|
||||
{:on-success backup-recovery-phrase-success
|
||||
:masked-seed-phrase (->> masked-seed-phrase
|
||||
security/safe-unmask-data
|
||||
(string/join " ")
|
||||
security/mask-data)
|
||||
:revealed? true}])
|
||||
:on-success #(rf/dispatch [:keycard/create.phrase-backed-up
|
||||
masked-seed-phrase])}]))
|
||||
|
||||
@@ -39,10 +51,13 @@
|
||||
security/safe-unmask-data
|
||||
(string/join " ")
|
||||
security/mask-data))
|
||||
:fx [[:dispatch [:keycard/create.create-or-enter-pin]]]}))
|
||||
:fx [[:dispatch
|
||||
[:keycard/create.create-or-enter-pin
|
||||
{:ready-to-add-screen-title (i18n/label :t/ready-add-keypair-keycard)
|
||||
:ready-to-add-screen-image (resources/get-image :add-key-to-keycard)}]]]}))
|
||||
|
||||
(rf/reg-event-fx :keycard/create.create-or-enter-pin
|
||||
(fn [{:keys [db]}]
|
||||
(fn [{:keys [db]} [{:keys [ready-to-add-screen-title ready-to-add-screen-image]}]]
|
||||
(let [{:keys [initialized?]} (get-in db [:keycard :application-info])]
|
||||
{:fx [[:dispatch [:navigate-back]]
|
||||
(if initialized?
|
||||
@@ -56,7 +71,9 @@
|
||||
{:on-complete (fn [new-pin]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:keycard/create.save-pin new-pin])
|
||||
(rf/dispatch [:open-modal :screen/keycard.create.ready-to-add]))}]])]})))
|
||||
(rf/dispatch [:open-modal :screen/keycard.create.ready-to-add
|
||||
{:title ready-to-add-screen-title
|
||||
:image ready-to-add-screen-image}]))}]])]})))
|
||||
|
||||
(rf/reg-event-fx :keycard/create.save-pin
|
||||
(fn [{:keys [db]} [pin]]
|
||||
@@ -64,7 +81,7 @@
|
||||
|
||||
(rf/reg-event-fx :keycard/create.on-application-info-error
|
||||
(fn [{:keys [db]} [error]]
|
||||
(if (or (= error :keycard/error.keycard-blank)
|
||||
(if (or (= error :keycard/error.keycard-empty)
|
||||
(and (get-in db [:keycard :application-info :initialized?])
|
||||
(= error :keycard/error.keycard-wrong-profile)))
|
||||
(rf/dispatch [:keycard/create.continue])
|
||||
@@ -74,7 +91,8 @@
|
||||
(fn [_]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:on-error #(rf/dispatch [:keycard/create.on-application-info-error %])}]]]}))
|
||||
{:theme :dark
|
||||
:on-error #(rf/dispatch [:keycard/create.on-application-info-error %])}]]]}))
|
||||
|
||||
(defn get-application-info-and-continue
|
||||
[]
|
||||
@@ -90,7 +108,7 @@
|
||||
(cond
|
||||
|
||||
(not initialized?)
|
||||
{:fx [[:keycard/init-card
|
||||
{:fx [[:effects.keycard/init-card
|
||||
{:pin pin
|
||||
:on-success get-application-info-and-continue}]]}
|
||||
|
||||
@@ -106,3 +124,13 @@
|
||||
{:pin pin
|
||||
:on-success #(rf/dispatch [:keycard.login/recover-profile-and-login %])
|
||||
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]]}))))
|
||||
|
||||
(rf/reg-event-fx :keycard/create.seed-phrase-entered
|
||||
(fn [{:keys [db]} [key-uid masked-seed-phrase]]
|
||||
(if (contains? (:profile/profiles-overview db) key-uid)
|
||||
{:fx [[:dispatch [:onboarding/multiaccount-already-exists key-uid]]]}
|
||||
{:db (assoc-in db [:keycard :create :masked-phrase] masked-seed-phrase)
|
||||
:fx [[:dispatch
|
||||
[:keycard/create.create-or-enter-pin
|
||||
{:ready-to-add-screen-title (i18n/label :t/ready-to-import-keypair-keycard)
|
||||
:ready-to-add-screen-image (resources/get-image :import-key-to-keycard)}]]]})))
|
||||
|
||||
@@ -2,10 +2,9 @@
|
||||
(:require [quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.not-implemented :as not-implemented]
|
||||
[status-im.common.resources :as resources]
|
||||
[status-im.config :as config]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.keycard.common.view :as common.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
@@ -25,6 +24,7 @@
|
||||
:title (i18n/label :t/check-keycard)
|
||||
:subtitle (i18n/label :t/see-keycard-ready)
|
||||
:button-label (i18n/label :t/scan-keycard)
|
||||
:button-props {:type :primary :icon-left :i/keycard}
|
||||
:accessibility-label :get-keycard
|
||||
:image (resources/get-image :check-your-keycard)
|
||||
:on-press #(rf/dispatch [:keycard/create.check-empty-card])}]
|
||||
@@ -37,31 +37,35 @@
|
||||
:image (resources/get-image :use-keycard)
|
||||
:on-press #(rf/dispatch [:browser.ui/open-url constants/get-keycard-url])}]]
|
||||
[rn/view {:style {:flex 1}}]
|
||||
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
|
||||
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
|
||||
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]])
|
||||
[common.view/tips]])
|
||||
|
||||
(defn- ready-to-add-documentation
|
||||
[]
|
||||
[quo/documentation-drawers
|
||||
{:shell? true}
|
||||
[quo/text {:size :paragraph-2}
|
||||
(i18n/label :t/ready-add-keypair-keycard-documentation)]])
|
||||
|
||||
(defn ready-to-add
|
||||
[]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back
|
||||
:right-side [(when config/show-not-implemented-features?
|
||||
{:icon-name :i/info
|
||||
:on-press not-implemented/alert})]}]
|
||||
[quo/page-top
|
||||
{:title (i18n/label :t/ready-add-keypair-keycard)
|
||||
:description :text
|
||||
:description-text ""}]
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:style {:flex 1 :align-self :center :margin-vertical 37}
|
||||
:source (resources/get-image :add-key-to-keycard)}]
|
||||
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
|
||||
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
|
||||
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/scan-keycard)
|
||||
:button-one-props {:on-press #(rf/dispatch [:keycard/create.start])}}]])
|
||||
(let [{:keys [title image]} (rf/sub [:get-screen-params])]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back
|
||||
:right-side [{:icon-name :i/info
|
||||
:on-press #(rf/dispatch [:show-bottom-sheet
|
||||
{:content ready-to-add-documentation
|
||||
:theme :dark
|
||||
:shell? true}])}]}]
|
||||
[quo/page-top
|
||||
{:title title}]
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:style {:flex 1 :align-self :center :margin-vertical 37}
|
||||
:source image}]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (i18n/label :t/scan-keycard)
|
||||
:button-one-props {:on-press #(rf/dispatch [:keycard/create.start])}}]]))
|
||||
|
||||
@@ -56,6 +56,14 @@
|
||||
(fn [args]
|
||||
(keycard/factory-reset (keycard.utils/wrap-handlers args))))
|
||||
|
||||
(rf/reg-fx :effects.keycard/verify-pin
|
||||
(fn [args]
|
||||
(keycard/verify-pin (keycard.utils/wrap-handlers args))))
|
||||
|
||||
(rf/reg-fx :effects.keycard/change-pin
|
||||
(fn [args]
|
||||
(keycard/change-pin (keycard.utils/wrap-handlers args))))
|
||||
|
||||
(rf/reg-fx :effects.keycard/sign
|
||||
(fn [args]
|
||||
(-> (keycard/sign args)
|
||||
@@ -75,7 +83,7 @@
|
||||
(promesa/then on-success)
|
||||
(promesa/catch (keycard.utils/get-on-failure args)))))
|
||||
|
||||
(rf/reg-fx :keycard/init-card
|
||||
(rf/reg-fx :effects.keycard/init-card
|
||||
(fn [args]
|
||||
(keycard/init-card (keycard.utils/wrap-handlers args))))
|
||||
|
||||
@@ -86,7 +94,8 @@
|
||||
(rf/reg-fx :effects.keycard/login-with-keycard
|
||||
(fn [{:keys [key-uid password whisper-private-key]}]
|
||||
(native-module/login-account
|
||||
(assoc (profile.config/login)
|
||||
(assoc (merge (profile.config/login)
|
||||
(profile.config/fix-node-config-migration))
|
||||
:keyUid key-uid
|
||||
:password password
|
||||
:keycardWhisperPrivateKey whisper-private-key))))
|
||||
|
||||
@@ -17,20 +17,27 @@
|
||||
{:title (i18n/label :t/keycard-empty)
|
||||
:description :text
|
||||
:description-text (i18n/label :t/what-to-do)}]
|
||||
[rn/view {:style {:padding-horizontal 28 :padding-top 20}}
|
||||
[quo/small-option-card
|
||||
{:variant :main
|
||||
:title (i18n/label :t/create-new-profile)
|
||||
:subtitle (i18n/label :t/new-key-pair-keycard)
|
||||
:button-label (i18n/label :t/lets-go)
|
||||
:accessibility-label :create-new-profile-keycard
|
||||
:image (resources/get-image :keycard-buy)
|
||||
:button-type :primary
|
||||
:on-press #(rf/dispatch [:keycard/create.get-phrase])}]]
|
||||
[quo/information-box
|
||||
{:type :default
|
||||
:style {:margin-top 32 :margin-horizontal 28}}
|
||||
(i18n/label :t/add-key-pair-desktop)]])
|
||||
[quo/small-option-card
|
||||
{:variant :main
|
||||
:title (i18n/label :t/create-new-profile)
|
||||
:subtitle (i18n/label :t/new-key-pair-keycard)
|
||||
:button-label (i18n/label :t/lets-go)
|
||||
:accessibility-label :create-new-profile-keycard
|
||||
:container-style {:margin-horizontal 20 :margin-top 8}
|
||||
:image (resources/get-image :keycard-buy)
|
||||
:button-props {:type :primary}
|
||||
:on-press #(rf/dispatch [:keycard/create.get-phrase])}]
|
||||
[quo/small-option-card
|
||||
{:variant :icon
|
||||
:title (i18n/label :t/import-recovery-phrase-to-keycard)
|
||||
:subtitle (i18n/label :t/store-key-pair-on-keycard)
|
||||
:accessibility-label :import-recovery-phrase-to-keycard
|
||||
:container-style {:margin 20}
|
||||
:image (resources/get-image :use-keycard)
|
||||
:on-press #(rf/dispatch [:open-modal :screen/use-recovery-phrase-dark
|
||||
{:on-success (fn [{:keys [key-uid phrase]}]
|
||||
(rf/dispatch [:keycard/create.seed-phrase-entered
|
||||
key-uid phrase]))}])}]])
|
||||
|
||||
(defn view
|
||||
[]
|
||||
|
||||
@@ -2,20 +2,22 @@
|
||||
(:require [quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.contexts.keycard.backup.view :as backup.view]
|
||||
[status-im.contexts.keycard.factory-reset.view :as factory-reset]
|
||||
[status-im.contexts.keycard.unblock.view :as keycard.unblock]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(def titles
|
||||
{:keycard/error.keycard-blank {:title (i18n/label :t/keycard-empty)
|
||||
{:keycard/error.keycard-empty {:title (i18n/label :t/keycard-empty)
|
||||
:description (i18n/label :t/no-key-pair-keycard)}
|
||||
:keycard/error.keycard-wrong-profile {:title (i18n/label :t/keycard-not-empty)
|
||||
:description (i18n/label :t/cant-store-new-keys)}
|
||||
:keycard/error.keycard-unpaired {:title (i18n/label :t/keycard-full)
|
||||
:description (i18n/label :t/pairing-slots-occupied)}
|
||||
:keycard/error.keycard-frozen {:title (i18n/label :t/keycard-locked)
|
||||
:keycard/error.keycard-frozen {:title (i18n/label :t/keycard-blocked)
|
||||
:description (i18n/label :t/cant-use-right-now)}
|
||||
:keycard/error.keycard-locked {:title (i18n/label :t/keycard-locked)
|
||||
:keycard/error.keycard-locked {:title (i18n/label :t/keycard-blocked)
|
||||
:description (i18n/label :t/cant-use-right-now)}})
|
||||
|
||||
(defn view
|
||||
@@ -31,11 +33,38 @@
|
||||
:description :text
|
||||
:description-text description}]
|
||||
[rn/view {:style {:margin-horizontal 20}}
|
||||
[quo/keycard {:holder-name ""}]
|
||||
(when (not= :keycard/error.keycard-blank error)
|
||||
[quo/keycard {:blur? true}]
|
||||
[quo/section-label
|
||||
{:section (i18n/label :t/what-you-can-do) :container-style {:padding-vertical 8}}]
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/use-backup-keycard)
|
||||
:image :icon
|
||||
:image-props :i/placeholder
|
||||
:action :arrow
|
||||
:description :text
|
||||
:description-props {:text (i18n/label :t/create-backup-profile-keycard)}
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content
|
||||
(fn []
|
||||
[backup.view/sheet
|
||||
{:on-continue
|
||||
(rf/dispatch
|
||||
[:keycard/backup.create-or-enter-pin])}])}]))}]
|
||||
[:<>
|
||||
[quo/section-label
|
||||
{:section (i18n/label :t/what-you-can-do) :container-style {:padding-vertical 8}}]
|
||||
(when (or (= error :keycard/error.keycard-frozen)
|
||||
(= error :keycard/error.keycard-locked))
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/unblock-keycard)
|
||||
:image :icon
|
||||
:image-props :i/placeholder
|
||||
:action :arrow
|
||||
:description :text
|
||||
:description-props {:text (i18n/label :t/with-recovery-phrase)}
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content keycard.unblock/sheet}]))}])
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/factory-reset)
|
||||
:image :icon
|
||||
@@ -45,4 +74,6 @@
|
||||
:description-props {:text (i18n/label :t/remove-keycard-content)}
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content factory-reset/sheet}]))}]])]]))
|
||||
{:theme :dark
|
||||
:shell? true
|
||||
:content factory-reset/sheet}]))}]])]]))
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
(ns status-im.contexts.keycard.events
|
||||
(:require [re-frame.core :as rf]
|
||||
status-im.contexts.keycard.backup.events
|
||||
status-im.contexts.keycard.check.events
|
||||
status-im.contexts.keycard.create.events
|
||||
status-im.contexts.keycard.login.events
|
||||
status-im.contexts.keycard.migrate.events
|
||||
@@ -8,6 +10,7 @@
|
||||
status-im.contexts.keycard.nfc.sheets.events
|
||||
status-im.contexts.keycard.pin.events
|
||||
status-im.contexts.keycard.sign.events
|
||||
status-im.contexts.keycard.unblock.events
|
||||
[status-im.contexts.keycard.utils :as keycard.utils]
|
||||
[utils.address :as address]
|
||||
utils.datetime
|
||||
@@ -56,6 +59,10 @@
|
||||
[:keycard/on-application-info-error
|
||||
:keycard/error.keycard-locked]])]}))))
|
||||
|
||||
(rf/reg-event-fx :keycard/init-card
|
||||
(fn [_ [data]]
|
||||
{:effects.keycard/init-card data}))
|
||||
|
||||
(rf/reg-event-fx :keycard/get-keys
|
||||
(fn [_ [data]]
|
||||
{:effects.keycard/get-keys data}))
|
||||
@@ -72,11 +79,20 @@
|
||||
(fn [_ [data]]
|
||||
{:effects.keycard/factory-reset data}))
|
||||
|
||||
(rf/reg-event-fx :keycard/verify-pin
|
||||
(fn [_ [data]]
|
||||
{:effects.keycard/verify-pin data}))
|
||||
|
||||
(rf/reg-event-fx :keycard/change-pin
|
||||
(fn [_ [data]]
|
||||
{:effects.keycard/change-pin data}))
|
||||
|
||||
(rf/reg-event-fx :keycard/connect-derive-address-and-add-account
|
||||
(fn [_ [{:keys [pin derivation-path key-uid account-preferences]}]]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:key-uid key-uid
|
||||
{:theme :dark
|
||||
:key-uid key-uid
|
||||
:on-success
|
||||
(fn []
|
||||
(rf/dispatch
|
||||
@@ -145,17 +161,26 @@
|
||||
(rf/dispatch [:keycard/on-application-info-error
|
||||
:keycard/error.not-keycard]))))}}))
|
||||
|
||||
(rf/reg-event-fx :keycard/connect.next-stage
|
||||
(fn [{:keys [db]} [{:keys [key-uid on-success on-error]}]]
|
||||
(let [event-vector [:keycard/get-application-info
|
||||
{:key-uid key-uid
|
||||
:on-success on-success
|
||||
:on-error on-error}]]
|
||||
{:db (assoc-in db [:keycard :on-card-connected-event-vector] event-vector)
|
||||
:fx [(when (get-in db [:keycard :card-connected?])
|
||||
[:dispatch event-vector])]})))
|
||||
|
||||
(rf/reg-event-fx :keycard/connect
|
||||
(fn [{:keys [db]} [{:keys [key-uid on-success on-error on-connect-event-vector]}]]
|
||||
(let [event-vector
|
||||
(or on-connect-event-vector
|
||||
[:keycard/get-application-info
|
||||
{:key-uid key-uid
|
||||
:on-success on-success
|
||||
:on-error on-error}])]
|
||||
(fn [{:keys [db]} [{:keys [key-uid on-success on-error theme]}]]
|
||||
(let [event-vector [:keycard/get-application-info
|
||||
{:key-uid key-uid
|
||||
:on-success on-success
|
||||
:on-error on-error}]]
|
||||
{:db (assoc-in db [:keycard :on-card-connected-event-vector] event-vector)
|
||||
:fx [[:dispatch
|
||||
[:keycard/show-connection-sheet
|
||||
{:on-cancel-event-vector [:keycard/cancel-connection]}]]
|
||||
{:on-cancel-event-vector [:keycard/cancel-connection]
|
||||
:theme theme}]]
|
||||
(when (get-in db [:keycard :card-connected?])
|
||||
[:dispatch event-vector])]})))
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
[key-uid]
|
||||
(rf/dispatch
|
||||
[:keycard/connect
|
||||
{:key-uid key-uid
|
||||
{:theme :dark
|
||||
:key-uid key-uid
|
||||
:on-success reset-card
|
||||
:on-error (fn [error]
|
||||
(if (or (= error :keycard/error.keycard-frozen)
|
||||
|
||||
@@ -43,7 +43,8 @@
|
||||
(fn []
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:on-error
|
||||
{:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-wrong-profile)
|
||||
(do
|
||||
@@ -57,7 +58,8 @@
|
||||
(fn [{:keys [db]} [pin]]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:key-uid (get-in db [:keycard :application-info :key-uid])
|
||||
{:theme :dark
|
||||
:key-uid (get-in db [:keycard :application-info :key-uid])
|
||||
:on-success (fn []
|
||||
(rf/dispatch
|
||||
[:keycard/get-more-keys
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
(ns status-im.contexts.keycard.manage.profile-keys.view
|
||||
(:require [quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.contexts.keycard.backup.view :as backup.view]
|
||||
[status-im.contexts.keycard.change-pin.view :as change-pin.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn- backup-sheet
|
||||
[]
|
||||
[backup.view/sheet
|
||||
{:on-continue
|
||||
(fn []
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch
|
||||
[:open-modal :screen/keycard.backup.scan-empty]))}])
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [profile-name (rf/sub [:profile/name])]
|
||||
[:<>
|
||||
[quo/page-nav
|
||||
{:icon-name :i/close
|
||||
:on-press events-helper/navigate-back}]
|
||||
[quo/page-top
|
||||
{:title profile-name}]
|
||||
[rn/view {:style {:margin-horizontal 20}}
|
||||
[rn/view {:style {:padding-top 8 :padding-bottom 20}}
|
||||
[quo/keycard {:blur? true}]]
|
||||
[quo/section-label
|
||||
{:section (i18n/label :t/what-you-can-do) :container-style {:padding-vertical 8}}]
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/change-pin-keycard)
|
||||
:image :icon
|
||||
:blur? true
|
||||
:image-props :i/keycard
|
||||
:action :arrow
|
||||
:description :text
|
||||
:description-props {:text (i18n/label :t/change-pin-keycard-description)}
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:theme :dark
|
||||
:shell? true
|
||||
:content change-pin.view/change-pin-confirmation-sheet}]))}]
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/backup-keycard)
|
||||
:image :icon
|
||||
:blur? true
|
||||
:image-props :i/keycard
|
||||
:action :arrow
|
||||
:description :text
|
||||
:description-props {:text (i18n/label :t/create-backup-profile-keycard)}
|
||||
:on-press (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:theme :dark
|
||||
:shell? true
|
||||
:content backup-sheet}]))}]]]))
|
||||
@@ -3,23 +3,6 @@
|
||||
[utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
||||
(rf/reg-event-fx :keycard/migration.check-empty-card
|
||||
(fn [{:keys [db]}]
|
||||
{:fx [[:dispatch
|
||||
[:keycard/connect
|
||||
{:key-uid (get-in db [:profile/profile :key-uid])
|
||||
:on-success
|
||||
(fn []
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.profile-keys]))
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-blank)
|
||||
(do
|
||||
(rf/dispatch [:keycard/disconnect])
|
||||
(rf/dispatch [:open-modal :screen/keycard.empty]))
|
||||
(rf/dispatch [:keycard/on-application-info-error error])))}]]]}))
|
||||
|
||||
(defn get-application-info-and-continue
|
||||
[key-uid]
|
||||
(rf/dispatch [:keycard/get-application-info
|
||||
@@ -27,7 +10,7 @@
|
||||
:on-success #(rf/dispatch [:keycard/migration.continue])
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-blank)
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(rf/dispatch [:keycard/migration.continue])
|
||||
(rf/dispatch [:keycard/on-application-info-error error])))}]))
|
||||
|
||||
@@ -40,7 +23,7 @@
|
||||
(cond
|
||||
|
||||
(not initialized?)
|
||||
{:fx [[:keycard/init-card
|
||||
{:fx [[:effects.keycard/init-card
|
||||
{:pin pin
|
||||
:on-success #(get-application-info-and-continue key-uid)}]]}
|
||||
|
||||
@@ -63,17 +46,27 @@
|
||||
[:keycard/connect
|
||||
{:key-uid (get-in db [:profile/profile :key-uid])
|
||||
:on-success #(rf/dispatch [:keycard/migration.continue])
|
||||
:theme :dark
|
||||
:on-error
|
||||
(fn [error]
|
||||
(if (= error :keycard/error.keycard-blank)
|
||||
(if (= error :keycard/error.keycard-empty)
|
||||
(rf/dispatch [:keycard/migration.continue])
|
||||
(rf/dispatch [:keycard/on-application-info-error error])))}]]]}))
|
||||
|
||||
(defn- backup-recovery-phrase-success
|
||||
[masked-seed-phrase]
|
||||
(rf/dispatch [:navigate-back])
|
||||
(rf/dispatch [:open-modal :screen/confirm-backup
|
||||
(rf/dispatch [:open-modal :screen/confirm-backup-dark
|
||||
{:masked-seed-phrase masked-seed-phrase
|
||||
:theme :dark
|
||||
:shell? true
|
||||
:on-try-again #(rf/dispatch [:open-modal :screen/backup-recovery-phrase-dark
|
||||
{:on-success backup-recovery-phrase-success
|
||||
:masked-seed-phrase (->> masked-seed-phrase
|
||||
security/safe-unmask-data
|
||||
(string/join " ")
|
||||
security/mask-data)
|
||||
:revealed? true}])
|
||||
:on-success #(rf/dispatch [:keycard/migration.phrase-backed-up])}]))
|
||||
|
||||
(rf/reg-event-fx :keycard/migration.get-phrase
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
:description-text (i18n/label :t/finalise-migration-instructions)}]
|
||||
[rn/view {:style {:margin-horizontal 20}}
|
||||
[rn/view {:style {:padding-top 8 :padding-bottom 20}}
|
||||
[quo/keycard {:holder-name ""}]]
|
||||
[quo/keycard {:blur? true}]]
|
||||
[quo/section-label {:section (i18n/label :t/what-you-can-do) :container-style {:padding-vertical 8}}]
|
||||
[quo/settings-item
|
||||
{:title (i18n/label :t/finalise-migration)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[status-im.common.resources :as resources]
|
||||
[status-im.contexts.keycard.common.view :as common.view]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
@@ -26,9 +27,7 @@
|
||||
[rn/image
|
||||
{:resize-mode :contain
|
||||
:source (resources/get-image :keycard-migration)}]]
|
||||
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
|
||||
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
|
||||
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]
|
||||
[common.view/tips]
|
||||
[quo/bottom-actions
|
||||
{:actions :one-action
|
||||
:button-one-label (if initialized? (i18n/label :t/enter-keycard-pin) (i18n/label :t/scan-keycard))
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
[react-native.platform :as platform]))
|
||||
|
||||
(rf/reg-event-fx :keycard/show-connection-sheet
|
||||
(fn [{:keys [db]} [{:keys [on-cancel-event-vector]} :as args]]
|
||||
(fn [{:keys [db]} [{:keys [on-cancel-event-vector theme]} :as args]]
|
||||
(if platform/android?
|
||||
{:db (assoc-in db
|
||||
[:keycard :connection-sheet-opts]
|
||||
{:on-close #(rf/dispatch on-cancel-event-vector)})
|
||||
{:on-close #(rf/dispatch on-cancel-event-vector)
|
||||
:theme theme})
|
||||
:fx [[:effects.keycard.ios/start-nfc nil]
|
||||
[:dismiss-keyboard true]
|
||||
[:show-nfc-sheet nil]]}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user