Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bed2057d97 | ||
|
|
ce87945736 | ||
|
|
f4e0c69d72 | ||
|
|
09c4e33834 | ||
|
|
5b79f40de1 | ||
|
|
6b29021075 | ||
|
|
236dc37159 | ||
|
|
b43fc6fabf | ||
|
|
3d205c837c | ||
|
|
5c8fc2f700 | ||
|
|
1c9d69416b | ||
|
|
26fb0b20e7 | ||
|
|
b47f53777d | ||
|
|
1d298d0a5d | ||
|
|
b6f59bc5c0 | ||
|
|
38dd9c46c2 | ||
|
|
2b6e782e80 | ||
|
|
c32f31f8cd | ||
|
|
50e41c8ed5 | ||
|
|
93b748a629 | ||
|
|
a324481206 | ||
|
|
254717971e | ||
|
|
05279c111e | ||
|
|
b4a49bfe55 | ||
|
|
e5c3357317 | ||
|
|
da2e5ff1c0 | ||
|
|
f69f075e29 | ||
|
|
81350b978f | ||
|
|
f59dca0589 | ||
|
|
745e5d75fb | ||
|
|
7c6f2bf878 | ||
|
|
29203e57ec | ||
|
|
0f15c0192d | ||
|
|
a1784c5e1f | ||
|
|
c6a63e30b2 | ||
|
|
07005f8ad5 | ||
|
|
3ab345563c | ||
|
|
cef1308b3a | ||
|
|
4b8a612df4 | ||
|
|
e4639c153f | ||
|
|
8597b899bd | ||
|
|
a5c8182461 | ||
|
|
89bb3ea5c3 | ||
|
|
3bb7c308e3 | ||
|
|
1a4987478c | ||
|
|
540094c229 | ||
|
|
08b65cbcb7 | ||
|
|
d623cc8444 | ||
|
|
4b7c906df2 | ||
|
|
3b446963ef | ||
|
|
cec46f985a | ||
|
|
06b2996167 | ||
|
|
02e24208db | ||
|
|
84b8943fd4 | ||
|
|
c52b3e457e | ||
|
|
21cc8a199a | ||
|
|
59374543ef | ||
|
|
9f84a7b912 | ||
|
|
2b0847ef76 | ||
|
|
97b19c5440 | ||
|
|
b3e88508ac | ||
|
|
7b09402fcb | ||
|
|
a912125ba9 | ||
|
|
2d0437dd5e | ||
|
|
43651ef0d0 | ||
|
|
13232dc7b7 | ||
|
|
93b5f7a918 | ||
|
|
4898d32243 | ||
|
|
588692e0eb | ||
|
|
bd9e440839 | ||
|
|
940edc2e53 | ||
|
|
5a93cd755e | ||
|
|
942c130d23 | ||
|
|
bb8aad3be8 | ||
|
|
ba76b9fd51 | ||
|
|
5f085e9cea | ||
|
|
12b8dcf1e7 | ||
|
|
0e6d59b312 | ||
|
|
087fcb1010 | ||
|
|
0de4c8cabb | ||
|
|
6553d5ca44 | ||
|
|
20b256b0d0 | ||
|
|
1c85b292f8 | ||
|
|
d2e975f6d9 | ||
|
|
721aa51d8d | ||
|
|
23c25d7715 | ||
|
|
54e4b597ed | ||
|
|
0b5dac0ad0 | ||
|
|
180065129f | ||
|
|
866b854ee0 | ||
|
|
072370b0d6 | ||
|
|
d74edff9b9 | ||
|
|
0a0591f67a | ||
|
|
7a8db689f4 | ||
|
|
311fde9409 | ||
|
|
f89b66f562 | ||
|
|
d179cbf59b | ||
|
|
7ff7e78691 | ||
|
|
6c352397ab | ||
|
|
3521421098 | ||
|
|
f70a743a8c | ||
|
|
a2178951d7 | ||
|
|
7774c4eac1 | ||
|
|
4c4a8b65d4 | ||
|
|
de6d9a6c3b | ||
|
|
da16d1f69e | ||
|
|
a13975f3f6 | ||
|
|
c473b8c9b1 | ||
|
|
1f333cc937 | ||
|
|
460aaedbca | ||
|
|
66639fc3ed | ||
|
|
2cc689a896 | ||
|
|
b4866ff728 | ||
|
|
45cf31d469 | ||
|
|
f958d95467 | ||
|
|
894f8f26ee | ||
|
|
eaa5016094 | ||
|
|
66f77e1467 | ||
|
|
d16c1a3c85 | ||
|
|
a049fd341e | ||
|
|
140fa3115c | ||
|
|
147676ae8c | ||
|
|
1e40d49369 | ||
|
|
b17f2892c7 | ||
|
|
b28a8e153e | ||
|
|
35a1905396 | ||
|
|
2e8776d0a6 | ||
|
|
99506c810d | ||
|
|
e83f6ff445 | ||
|
|
f51f52ec27 | ||
|
|
e58e2209bb | ||
|
|
8aa1cadc66 | ||
|
|
91c22df498 | ||
|
|
e221e23255 | ||
|
|
e8e05e58e0 | ||
|
|
ac4ffd83db | ||
|
|
b021b1e20a | ||
|
|
b650591e58 | ||
|
|
0581fc2f9d | ||
|
|
ef9cc55501 | ||
|
|
3b3a39e37b | ||
|
|
b255874e95 | ||
|
|
1c83916fc3 | ||
|
|
31acf51b1e | ||
|
|
424d2d4b5c | ||
|
|
0d9bedf11c | ||
|
|
3e268936f6 | ||
|
|
e92da6d24b | ||
|
|
34c95c42d1 | ||
|
|
1ee44259c4 | ||
|
|
112b69c1d6 | ||
|
|
3ce6a86e9b | ||
|
|
b005eb8181 | ||
|
|
4bd7abaace | ||
|
|
e2e8afb7b1 | ||
|
|
256f3f8f24 | ||
|
|
6931fd0052 | ||
|
|
136c3c0032 | ||
|
|
a92b50afea | ||
|
|
fd3a21a320 | ||
|
|
f93e372d18 | ||
|
|
0ed39a42ef | ||
|
|
ead51b7e7c | ||
|
|
9481890624 | ||
|
|
419e84db08 | ||
|
|
66785d01ec | ||
|
|
1cc4807336 | ||
|
|
141252e5a0 | ||
|
|
9d825ee04e | ||
|
|
fb84f105db | ||
|
|
f509d132f3 | ||
|
|
5ee5d70567 | ||
|
|
b5a09a334a | ||
|
|
1e703cdc81 | ||
|
|
fbc9b59a5e | ||
|
|
4e8f4698a6 | ||
|
|
68b3bb3089 | ||
|
|
f192648518 | ||
|
|
e9f98fcf85 | ||
|
|
f133cd3d5d | ||
|
|
f761d87b2a | ||
|
|
24b77811d8 | ||
|
|
d2f67ef46c | ||
|
|
88b97d1151 | ||
|
|
6a3794f380 | ||
|
|
686f6bdf5e | ||
|
|
8b424b0669 | ||
|
|
24068dad5c | ||
|
|
96d98c62ed | ||
|
|
435bf3dbd5 | ||
|
|
26c4a736ad | ||
|
|
aff4eb89cd | ||
|
|
60b3d01ceb | ||
|
|
dc335cc333 | ||
|
|
e0c7ecc6df | ||
|
|
d33648917a | ||
|
|
5f7d7254e7 | ||
|
|
df939bf85f | ||
|
|
874906b11f | ||
|
|
799bd1d4dc | ||
|
|
256c9f7b10 | ||
|
|
60e1783b36 | ||
|
|
3208ec1b28 | ||
|
|
8f75761ae9 | ||
|
|
af07205f20 | ||
|
|
672358fbce | ||
|
|
255ba9a862 | ||
|
|
4942238cae | ||
|
|
6a32006e6a | ||
|
|
b119860b81 | ||
|
|
6a7f04a5a8 | ||
|
|
f226f0db18 | ||
|
|
48f00f17a9 | ||
|
|
9f245ceb30 | ||
|
|
94e728bdf3 | ||
|
|
402e67d199 | ||
|
|
0d2869bfe0 | ||
|
|
3634edab42 | ||
|
|
712e67a62e | ||
|
|
d223151b93 | ||
|
|
9c7cb0fe93 | ||
|
|
a3e713bbf0 | ||
|
|
cedd4900d5 |
@@ -10,6 +10,8 @@
|
|||||||
legacy.status-im.utils.styles/def clojure.core/def
|
legacy.status-im.utils.styles/def clojure.core/def
|
||||||
legacy.status-im.utils.styles/defn clojure.core/defn
|
legacy.status-im.utils.styles/defn clojure.core/defn
|
||||||
test-helpers.unit/deftest-sub clojure.core/defn
|
test-helpers.unit/deftest-sub clojure.core/defn
|
||||||
|
test-helpers.unit/deftest-event clojure.core/defn
|
||||||
|
|
||||||
taoensso.tufte/defnp clojure.core/defn}
|
taoensso.tufte/defnp clojure.core/defn}
|
||||||
:linters {:case-duplicate-test {:level :error}
|
:linters {:case-duplicate-test {:level :error}
|
||||||
:case-quoted-test {:level :error}
|
:case-quoted-test {:level :error}
|
||||||
@@ -72,7 +74,8 @@
|
|||||||
;; https://github.com/borkdude/clj-kondo/issues/867
|
;; https://github.com/borkdude/clj-kondo/issues/867
|
||||||
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
|
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
|
||||||
number
|
number
|
||||||
legacy.status-im.test-helpers/restore-app-db]}
|
legacy.status-im.test-helpers/restore-app-db
|
||||||
|
(cljs.test/is [match-strict?])]}
|
||||||
:unresolved-var {:level :error}
|
:unresolved-var {:level :error}
|
||||||
:unsorted-required-namespaces {:level :error}
|
:unsorted-required-namespaces {:level :error}
|
||||||
:unused-alias {:level :warning}
|
:unused-alias {:level :warning}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ DEFAULT_NETWORK=mainnet_rpc
|
|||||||
DEV_BUILD=1
|
DEV_BUILD=1
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -26,7 +25,6 @@ APN_TOPIC=im.status.ethereum.pr
|
|||||||
COMMUNITIES_ENABLED=1
|
COMMUNITIES_ENABLED=1
|
||||||
DATABASE_MANAGEMENT_ENABLED=1
|
DATABASE_MANAGEMENT_ENABLED=1
|
||||||
DELETE_MESSAGE_ENABLED=1
|
DELETE_MESSAGE_ENABLED=1
|
||||||
COLLECTIBLES_ENABLED=1
|
|
||||||
COMMANDS_ENABLED=1
|
COMMANDS_ENABLED=1
|
||||||
TWO_MINUTES_SYNCING=1
|
TWO_MINUTES_SYNCING=1
|
||||||
SWAP_ENABLED=1
|
SWAP_ENABLED=1
|
||||||
@@ -37,3 +35,4 @@ FAST_CREATE_COMMUNITY_ENABLED=1
|
|||||||
TEST_NETWORKS_ENABLED=1
|
TEST_NETWORKS_ENABLED=1
|
||||||
SHOW_NOT_IMPLEMENTED_FEATURES=0
|
SHOW_NOT_IMPLEMENTED_FEATURES=0
|
||||||
ENABLE_ALERT_BANNER=0
|
ENABLE_ALERT_BANNER=0
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=goerli_rpc
|
DEFAULT_NETWORK=goerli_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
FLEET=status.staging
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=0
|
MAILSERVER_CONFIRMATIONS_ENABLED=0
|
||||||
@@ -38,3 +38,5 @@ SHOW_NOT_IMPLEMENTED_FEATURES=1
|
|||||||
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
|
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
|
||||||
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
|
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
|
||||||
ENABLE_ALERT_BANNER=0
|
ENABLE_ALERT_BANNER=0
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=goerli_rpc
|
DEFAULT_NETWORK=goerli_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -37,3 +36,4 @@ LOCAL_PAIRING_ENABLED=1
|
|||||||
FAST_CREATE_COMMUNITY_ENABLED=1
|
FAST_CREATE_COMMUNITY_ENABLED=1
|
||||||
TEST_NETWORKS_ENABLED=1
|
TEST_NETWORKS_ENABLED=1
|
||||||
ENABLE_ALERT_BANNER=1
|
ENABLE_ALERT_BANNER=1
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=mainnet_rpc
|
DEFAULT_NETWORK=mainnet_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -24,3 +23,4 @@ DELETE_MESSAGE_ENABLED=1
|
|||||||
FAST_CREATE_COMMUNITY_ENABLED=0
|
FAST_CREATE_COMMUNITY_ENABLED=0
|
||||||
TEST_NETWORKS_ENABLED=0
|
TEST_NETWORKS_ENABLED=0
|
||||||
ENABLE_ALERT_BANNER=1
|
ENABLE_ALERT_BANNER=1
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=0
|
|||||||
DEFAULT_NETWORK=mainnet_rpc
|
DEFAULT_NETWORK=mainnet_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=0
|
ETHEREUM_DEV_CLUSTER=0
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=
|
LOG_LEVEL=
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -18,6 +17,7 @@ PARTITIONED_TOPIC=0
|
|||||||
ENABLE_ROOT_ALERT=1
|
ENABLE_ROOT_ALERT=1
|
||||||
MAX_IMAGES_BATCH=1
|
MAX_IMAGES_BATCH=1
|
||||||
DELETE_MESSAGE_ENABLED=1
|
DELETE_MESSAGE_ENABLED=1
|
||||||
COLLECTIBLES_ENABLED=1
|
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=0
|
FAST_CREATE_COMMUNITY_ENABLED=0
|
||||||
TEST_NETWORKS_ENABLED=0
|
TEST_NETWORKS_ENABLED=0
|
||||||
|
STATUS_PROXY_STAGE_NAME=prod
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: MVPBug Report
|
name: MVPBug Report
|
||||||
about: MVPBug Report
|
about: MVPBug Report
|
||||||
title: ''
|
title: ''
|
||||||
labels: 'E:Mobile Bug MVP'
|
labels: ['E:Mobile Bug MVP', ':1234: low prio']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -70,3 +70,19 @@ Documentation change PR (review please): https://github.com/status-im/status.im/
|
|||||||
| Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. |
|
| Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. |
|
||||||
|
|
||||||
status: ready <!-- Can be ready or wip -->
|
status: ready <!-- Can be ready or wip -->
|
||||||
|
|
||||||
|
<!-- Uncomment this section for status-go upgrade/dogfooding pull requests
|
||||||
|
|
||||||
|
- Specify potentially impacted user flows in _Areas that maybe impacted*.
|
||||||
|
- Ensure that _Steps to test_ is filled in.
|
||||||
|
|
||||||
|
### Risk
|
||||||
|
|
||||||
|
Described potential risks and worst case scenarios.
|
||||||
|
|
||||||
|
Tick **one**:
|
||||||
|
- [ ] Low risk: 2 devs MUST perform testing as specified above and attach their results as comments to this PR **before** merging.
|
||||||
|
- [ ] High risk: QA team MUST perform additional testing in the specified affected areas **before** merging.
|
||||||
|
|
||||||
|
|
||||||
|
-->
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
*
|
/*
|
||||||
|
|
||||||
|
# Format top-level js files.
|
||||||
!*.js
|
!*.js
|
||||||
!*/
|
|
||||||
*.clj-kondo
|
# Ignore all except src/js/**/*.js
|
||||||
*.shadow-cljs
|
!/src/
|
||||||
modules
|
/src/*
|
||||||
result
|
!/src/js
|
||||||
target
|
!/src/js/**/*.js
|
||||||
component-spec
|
|
||||||
/app
|
# Ignore all except translations/en.json
|
||||||
|
!/translations/
|
||||||
|
/translations/*
|
||||||
|
!/translations/en.json
|
||||||
|
|||||||
@@ -6,4 +6,8 @@ module.exports = {
|
|||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
trailingComma: 'all',
|
trailingComma: 'all',
|
||||||
useTabs: false,
|
useTabs: false,
|
||||||
|
|
||||||
|
// JSON sorting
|
||||||
|
jsonSortOrder: '{ "/.*/": "caseInsensitiveLexical" } ',
|
||||||
|
plugins: ['prettier-plugin-sort-json'],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
"reg-fx" :arg1-pair
|
"reg-fx" :arg1-pair
|
||||||
"testing" :arg1-body
|
"testing" :arg1-body
|
||||||
"deftest-sub" :arg1-body
|
"deftest-sub" :arg1-body
|
||||||
|
"deftest-event" :arg1-body
|
||||||
"test-async" :arg1-body
|
"test-async" :arg1-body
|
||||||
"wait-for" :arg1-body
|
"wait-for" :arg1-body
|
||||||
"with-deps-check" :arg1-body
|
"with-deps-check" :arg1-body
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ ifndef BUILD_TAG
|
|||||||
export BUILD_TAG := $(shell git rev-parse --short HEAD)
|
export BUILD_TAG := $(shell git rev-parse --short HEAD)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# We don't want to use /run/user/$UID because it runs out of space too easilly.
|
# We don't want to use /run/user/$UID because it runs out of space too easily.
|
||||||
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
|
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
|
||||||
# This has to be specified for both the Node.JS server process and the Qt process.
|
# This has to be specified for both the Node.JS server process and the Qt process.
|
||||||
export REACT_SERVER_PORT ?= 5001
|
export REACT_SERVER_PORT ?= 5001
|
||||||
@@ -215,15 +215,13 @@ build-fdroid: ##@build Build release for F-Droid
|
|||||||
build-android: export BUILD_ENV ?= prod
|
build-android: export BUILD_ENV ?= prod
|
||||||
build-android: export BUILD_TYPE ?= nightly
|
build-android: export BUILD_TYPE ?= nightly
|
||||||
build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER)
|
build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER)
|
||||||
build-android: export ANDROID_ABI_SPLIT ?= false
|
|
||||||
build-android: export ANDROID_ABI_INCLUDE ?= armeabi-v7a;arm64-v8a;x86
|
|
||||||
build-android: ##@build Build unsigned Android APK
|
build-android: ##@build Build unsigned Android APK
|
||||||
@scripts/build-android.sh
|
@scripts/build-android.sh
|
||||||
|
|
||||||
release-android: export TARGET := keytool
|
release-android: export TARGET := keytool
|
||||||
release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
||||||
release-android: keystore build-android ##@build Build signed Android APK
|
release-android: keystore build-android ##@build Build signed Android APK
|
||||||
@scripts/sign-android.sh result/app-release-unsigned.apk
|
@scripts/sign-android.sh result/app-arm64-v8a-release-unsigned.apk
|
||||||
|
|
||||||
release-ios: export TARGET := ios
|
release-ios: export TARGET := ios
|
||||||
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
|
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
|
||||||
@@ -317,7 +315,7 @@ lint: ##@test Run code style checks
|
|||||||
scripts/lint/translations.clj && \
|
scripts/lint/translations.clj && \
|
||||||
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
|
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
|
||||||
sh scripts/lint/trailing-newline.sh && \
|
sh scripts/lint/trailing-newline.sh && \
|
||||||
node_modules/.bin/prettier --write .
|
node_modules/.bin/prettier --check .
|
||||||
|
|
||||||
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
|
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
|
||||||
lint-fix: export TARGET := clojure
|
lint-fix: export TARGET := clojure
|
||||||
@@ -353,13 +351,17 @@ test: export SHADOW_NS_REGEXP := .*-test$$
|
|||||||
test: ##@test Run all Clojure tests
|
test: ##@test Run all Clojure tests
|
||||||
test: _test-clojure
|
test: _test-clojure
|
||||||
|
|
||||||
|
# Note: we need to override the :output-to and :ns-regexp options because
|
||||||
|
# shadow-cljs has a bug where it will not read from the env vars to expand the
|
||||||
|
# configuration when the shadow-cljs mobile target is already running.
|
||||||
test-watch-for-repl: export TARGET := default
|
test-watch-for-repl: export TARGET := default
|
||||||
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
|
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
|
||||||
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
|
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
|
||||||
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
|
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
|
||||||
|
rm -f "$$SHADOW_OUTPUT_TO" && \
|
||||||
yarn install && shadow-cljs compile mocks && \
|
yarn install && shadow-cljs compile mocks && \
|
||||||
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
|
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
|
||||||
'yarn shadow-cljs watch test --verbose' \
|
"yarn shadow-cljs watch test --verbose --config-merge '{:output-to \"$(SHADOW_OUTPUT_TO)\" :ns-regexp \"$(SHADOW_NS_REGEXP)\"}'" \
|
||||||
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
|
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
|
||||||
|
|
||||||
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
|
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
|
||||||
@@ -447,6 +449,22 @@ android-devices: export TARGET := android-sdk
|
|||||||
android-devices: ##@other Invoke adb devices
|
android-devices: ##@other Invoke adb devices
|
||||||
adb devices
|
adb devices
|
||||||
|
|
||||||
|
android-pull-geth: export TARGET := android-sdk
|
||||||
|
android-pull-geth: export VERSION ?= debug
|
||||||
|
android-pull-geth:
|
||||||
|
adb pull "/storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log"
|
||||||
|
|
||||||
|
android-tail-geth: export TARGET := android-sdk
|
||||||
|
android-tail-geth: export VERSION ?= debug
|
||||||
|
android-tail-geth:
|
||||||
|
adb shell 'while true; do cat; sleep 1; done < /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
|
||||||
|
|
||||||
|
android-clean-geth: export TARGET := android-sdk
|
||||||
|
android-clean-geth: export VERSION ?= debug
|
||||||
|
android-clean-geth:
|
||||||
|
adb shell 'rm /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
|
||||||
|
|
||||||
|
|
||||||
android-logcat: export TARGET := android-sdk
|
android-logcat: export TARGET := android-sdk
|
||||||
android-logcat: ##@other Read status-mobile logs from Android phone using adb
|
android-logcat: ##@other Read status-mobile logs from Android phone using adb
|
||||||
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
|
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ android {
|
|||||||
reset()
|
reset()
|
||||||
enable getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()
|
enable getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()
|
||||||
include getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";")
|
include getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";")
|
||||||
universalApk true
|
universalApk false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
@@ -70,8 +70,30 @@
|
|||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<!-- Handles http and https URLs for status.app -->
|
||||||
<data android:scheme="http" android:host="status.app" />
|
<data android:scheme="http" android:host="status.app" />
|
||||||
<data android:scheme="https" android:host="status.app" />
|
<data android:scheme="https" android:host="status.app" />
|
||||||
|
<!-- Community paths -->
|
||||||
|
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Community channel paths -->
|
||||||
|
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- User paths -->
|
||||||
|
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Private chat paths -->
|
||||||
|
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Community request paths -->
|
||||||
|
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Group chat paths -->
|
||||||
|
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Wallet paths -->
|
||||||
|
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="https" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter android:autoVerify="true">
|
<intent-filter android:autoVerify="true">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ KEYSTORE_PASSWORD=password
|
|||||||
KEYSTORE_ALIAS=status
|
KEYSTORE_ALIAS=status
|
||||||
KEYSTORE_KEY_PASSWORD=password
|
KEYSTORE_KEY_PASSWORD=password
|
||||||
|
|
||||||
# By default we build a mostly universal APK
|
# Splitting by CPU Architecture produces smaller APKs.
|
||||||
ANDROID_ABI_SPLIT=false
|
ANDROID_ABI_SPLIT=true
|
||||||
# Some platforms are excluded though
|
# By default its better to only build apk for most recent devices.
|
||||||
ANDROID_ABI_INCLUDE=armeabi-v7a;arm64-v8a;x86;x86_64
|
ANDROID_ABI_INCLUDE=arm64-v8a
|
||||||
|
|
||||||
org.gradle.jvmargs=-Xmx8704M -XX:+UseParallelGC
|
org.gradle.jvmargs=-Xmx8704M -XX:+UseParallelGC
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
@@ -71,12 +71,8 @@ pipeline {
|
|||||||
}
|
}
|
||||||
stage('Upload') {
|
stage('Upload') {
|
||||||
steps { script {
|
steps { script {
|
||||||
def urls = apks.collect { s3.uploadArtifact(it) }
|
def urls = apks.collect { s5cmd.upload(it) }
|
||||||
if (urls.size() > 1) { /* Return only the universal APK. */
|
env.PKG_URL = urls.first()
|
||||||
env.PKG_URL = urls.find { it.contains('universal') }
|
|
||||||
} else { /* If no universal is available pick first. */
|
|
||||||
env.PKG_URL = urls.first()
|
|
||||||
}
|
|
||||||
jenkins.setBuildDesc(APK: env.PKG_URL)
|
jenkins.setBuildDesc(APK: env.PKG_URL)
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
|
import groovy.json.JsonBuilder
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
@@ -72,7 +74,7 @@ pipeline {
|
|||||||
iOS: utils.pkgUrl(ios),
|
iOS: utils.pkgUrl(ios),
|
||||||
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
|
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
|
||||||
/* upload the sha256 checksums file too */
|
/* upload the sha256 checksums file too */
|
||||||
SHA: s3.uploadArtifact(sha),
|
SHA: s5cmd.upload(sha),
|
||||||
]
|
]
|
||||||
/* add URLs to the build description */
|
/* add URLs to the build description */
|
||||||
jenkins.setBuildDesc(urls)
|
jenkins.setBuildDesc(urls)
|
||||||
@@ -83,7 +85,7 @@ pipeline {
|
|||||||
steps { script {
|
steps { script {
|
||||||
switch (utils.getBuildType()) {
|
switch (utils.getBuildType()) {
|
||||||
case 'nightly': /* Create JSON file with newest build URLs */
|
case 'nightly': /* Create JSON file with newest build URLs */
|
||||||
s3.updateBucketJSON(urls, 'latest.json');
|
updateBucketJSON(urls, 'latest.json');
|
||||||
break;
|
break;
|
||||||
case 'release':
|
case 'release':
|
||||||
github.publishReleaseFiles(repo: 'status-mobile');
|
github.publishReleaseFiles(repo: 'status-mobile');
|
||||||
@@ -114,3 +116,22 @@ def Boolean getPublishDefault(Boolean previousValue) {
|
|||||||
if (previousValue != null) { return previousValue }
|
if (previousValue != null) { return previousValue }
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper for updating JSON with newest builds. */
|
||||||
|
def updateBucketJSON(urls, fileName) {
|
||||||
|
/* latest.json has slightly different key names */
|
||||||
|
def content = [
|
||||||
|
DIAWI: urls.Diawi,
|
||||||
|
APK: urls.Apk, IOS: urls.iOS,
|
||||||
|
APP: urls.App, MAC: urls.Mac,
|
||||||
|
WIN: urls.Win, SHA: urls.SHA
|
||||||
|
]
|
||||||
|
def filePath = "${pwd()}/pkg/${fileName}"
|
||||||
|
/* it might not exist */
|
||||||
|
sh "mkdir -p ${pwd()}/pkg"
|
||||||
|
def contentJson = new JsonBuilder(content).toPrettyString()
|
||||||
|
println "${filePath}:\n${contentJson}"
|
||||||
|
writeFile(file: filePath, text: contentJson)
|
||||||
|
return s5cmd.upload(filePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
@@ -75,7 +75,7 @@ pipeline {
|
|||||||
stage('Upload') {
|
stage('Upload') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
env.PKG_URL = s3.uploadArtifact(LOG_FILE)
|
env.PKG_URL = s5cmd.upload(LOG_FILE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ pipeline {
|
|||||||
--rerun_count=2 \
|
--rerun_count=2 \
|
||||||
--testrail_report=True \
|
--testrail_report=True \
|
||||||
-m testrail_id \
|
-m testrail_id \
|
||||||
-m \"new_ui_critical or new_ui_medium\" \
|
-m \"nightly\" \
|
||||||
-k \"${params.KEYWORD_EXPRESSION}\" \
|
-k \"${params.KEYWORD_EXPRESSION}\" \
|
||||||
--apk=${params.APK_URL ?: apk_path}
|
--apk=${params.APK_URL ?: apk_path}
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
@@ -35,13 +35,11 @@ pipeline {
|
|||||||
description: 'OBSOLETE ARGUMENT TO BE REMOVED',
|
description: 'OBSOLETE ARGUMENT TO BE REMOVED',
|
||||||
defaultValue: 'DUMMY',
|
defaultValue: 'DUMMY',
|
||||||
)
|
)
|
||||||
/* Commented to use TEST_MARKERS values from job params
|
|
||||||
string(
|
string(
|
||||||
name: 'TEST_MARKERS',
|
name: 'TEST_MARKERS',
|
||||||
description: 'Marker expression for matching tests to run.',
|
description: 'Marker expression for matching tests to run.',
|
||||||
defaultValue: 'new_ui_critical',
|
defaultValue: 'smoke',
|
||||||
)
|
)
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
options {
|
options {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'macos' }
|
agent { label 'macos' }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label params.AGENT_LABEL }
|
agent { label params.AGENT_LABEL }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.12'
|
library 'status-jenkins-lib@v1.9.4'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent {
|
agent {
|
||||||
|
|||||||
@@ -1,67 +1,43 @@
|
|||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
[Starting Guide](starting-guide.md)
|
- [Starting Guide](starting-guide.md)
|
||||||
|
- [IDE Setup](ide-setup.md)
|
||||||
[IDE Setup](ide-setup.md)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Development Process
|
## Development Process
|
||||||
|
|
||||||
[Coding guidelines](new-guidelines.md)
|
- [Coding guidelines](new-guidelines.md)
|
||||||
|
- [UI components coding guidelines](ui-guidelines.md)
|
||||||
[UI components coding guidelines](ui-guidelines.md)
|
- [Release Checklist](release-checklist.md)
|
||||||
|
- [Release Guide](release-guide.md)
|
||||||
[Release Checklist](release-checklist.md)
|
- [Merging PR process](merging-pr-process.md)
|
||||||
|
- [PR Review Policy](pr-review-policy.md)
|
||||||
[Release Guide](release-guide.md)
|
- [Working on PR together with QA team](pipeline_process.md)
|
||||||
|
- [Debugging](debugging.md)
|
||||||
[Merging PR process](merging-pr-process.md)
|
- [Patching](patching.md)
|
||||||
|
- [Creating a pixel perfect UI](pixel-perfection.md)
|
||||||
[PR Review Policy](pr-review-policy.md)
|
- [Contributing to status-go](status-go-changes.md)
|
||||||
|
- [Malli schemas (recorded demo)](https://www.youtube.com/watch?v=SlRio70aYVI) ([slides](files/forging-code-with-schemas-sep-2023-slides.pdf))
|
||||||
[Working on PR together with QA team](pipeline_process.md)
|
|
||||||
|
|
||||||
[Debugging](debugging.md)
|
|
||||||
|
|
||||||
[Patching](patching.md)
|
|
||||||
|
|
||||||
[Creating a pixel perfect UI](pixel-perfection.md)
|
|
||||||
|
|
||||||
[Contributing to status-go](status-go-changes.md)
|
|
||||||
|
|
||||||
[Malli schemas (recorded demo)](https://www.youtube.com/watch?v=SlRio70aYVI) ([slides](files/forging-code-with-schemas-sep-2023-slides.pdf))
|
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
[How to run local tests](testing.md)
|
- [Overview](tests/tests-overview.md)
|
||||||
|
- [How to run local tests](tests/how-to-run-local-tests.md)
|
||||||
[End-to-end tests (e2e) overview](how-to-launch-e2e.md)
|
- [End-to-end tests (e2e) overview](tests/how-to-launch-e2e.md)
|
||||||
|
- [Component tests (jest) overview](tests/component-tests-overview.md)
|
||||||
[Component tests (jest) overview](component-tests-overview.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Project details
|
## Project details
|
||||||
|
|
||||||
[status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view)
|
- [status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view)
|
||||||
|
- [re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view)
|
||||||
[re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view)
|
- [status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view)
|
||||||
|
|
||||||
[status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view)
|
|
||||||
|
|
||||||
## Misc
|
## Misc
|
||||||
|
|
||||||
[Importing icons from Figma into project](export-icons.md)
|
- [Importing icons from Figma into project](export-icons.md)
|
||||||
|
- [Updating Status APK builds for the F-Droid Android application catalogue](fdroid.md)
|
||||||
[Updating Status APK builds for the F-Droid Android application catalogue](fdroid.md)
|
- [Troubleshooting for known errors](troubleshooting.md)
|
||||||
|
|
||||||
[Troubleshooting for known errors](troubleshooting.md)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Outdated:
|
## Outdated:
|
||||||
|
|
||||||
[Old guidelines](codebase-structure-and-guidelines.md)
|
- [Old guidelines](codebase-structure-and-guidelines.md)
|
||||||
|
- [Post mortem analysis](post-mortem.md)
|
||||||
[Post mortem analysis](post-mortem.md)
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,14 +32,16 @@ status-mobile code that makes it to the `develop` branch, should always point to
|
|||||||
In practice, this means that sometimes they need to be merged in lockstep.
|
In practice, this means that sometimes they need to be merged in lockstep.
|
||||||
1) Create a PR in status-go and status-mobile. Update the status-go version to the PR revision `scripts/update-status-go.sh $git_revision`.
|
1) Create a PR in status-go and status-mobile. Update the status-go version to the PR revision `scripts/update-status-go.sh $git_revision`.
|
||||||
2) Get both PRs reviewed and approved. Once status-mobile PR has been approved, go through manual QA testing if necessary. Don't merge status-mobile PR just yet.
|
2) Get both PRs reviewed and approved. Once status-mobile PR has been approved, go through manual QA testing if necessary. Don't merge status-mobile PR just yet.
|
||||||
3) Now that you know the integration between client & server is working, bump the `VERSION` in status-go and merge it.
|
3) Now that you know the integration between client & server is working, merge the status-go PR first.
|
||||||
4) Once merged, tag the version with the new version and push the tag:
|
4) Once merged, tag the merged commit with the new version and push the tag:
|
||||||
```
|
```
|
||||||
git checkout develop
|
git checkout develop
|
||||||
git pull develop
|
git pull develop
|
||||||
git tag vx.y.z
|
make tag-version
|
||||||
git push origin vx.y.z
|
git push origin vx.y.z
|
||||||
```
|
```
|
||||||
|
:warning: If a specific commit need to tagged in status-go, use `make tag-version TARGET_COMMIT={hash}`. More info about tagging in [status-go](https://github.com/status-im/status-go/blob/develop/RELEASING.md#tagging-versions).
|
||||||
|
|
||||||
5) Update status-mobile with the new status-go version, using the new tag `scripts/update-status-go.sh "vx.y.z"`
|
5) Update status-mobile with the new status-go version, using the new tag `scripts/update-status-go.sh "vx.y.z"`
|
||||||
6) If you had to rebase status-go to include new changes, e2e test MUST be re-run. If there's any issue you will
|
6) If you had to rebase status-go to include new changes, e2e test MUST be re-run. If there's any issue you will
|
||||||
have to fix in status-go with another PR and follow the same process.
|
have to fix in status-go with another PR and follow the same process.
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Ready for testing, a PR should meet the following criteria:
|
|||||||
The PR **MUST** be moved to the E2E column when it is ready for testing (**mandatory for all PRs**).
|
The PR **MUST** be moved to the E2E column when it is ready for testing (**mandatory for all PRs**).
|
||||||
That will also trigger e2e tests run. QAs are monitoring PRs from E2E column and take it into test.
|
That will also trigger e2e tests run. QAs are monitoring PRs from E2E column and take it into test.
|
||||||
This step cannot be skipped. So, at least one comment from the `status-im-auto` bot with results is a prerequisite for moving forward.
|
This step cannot be skipped. So, at least one comment from the `status-im-auto` bot with results is a prerequisite for moving forward.
|
||||||
Information on how to analyze tests can be found [here](https://github.com/status-im/status-mobile/blob/develop/doc/how-to-launch-e2e.md).
|
Information on how to analyze tests can be found [here](https://github.com/status-im/status-mobile/blob/develop/doc/tests/how-to-launch-e2e.md).
|
||||||
Tests might be flaky, as they depend on infrastructure - SauceLabs and Waku.
|
Tests might be flaky, as they depend on infrastructure - SauceLabs and Waku.
|
||||||
|
|
||||||
If there are `Failed tests` and you are not sure about the reason, you can always ping the mobile QAs for help (preferably in PRs by `@status-im/mobile-qa`).
|
If there are `Failed tests` and you are not sure about the reason, you can always ping the mobile QAs for help (preferably in PRs by `@status-im/mobile-qa`).
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ In that case we save results in TestRail as well and push a comment with test re
|
|||||||
|
|
||||||
For example: https://github.com/status-im/status-react/pull/9147#issuecomment-540008770
|
For example: https://github.com/status-im/status-react/pull/9147#issuecomment-540008770
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
The test_send_stt_from_wallet opens link in TestRail https://ethstatus.testrail.net/index.php?/tests/view/890885 where performed steps could be found
|
The test_send_stt_from_wallet opens link in TestRail https://ethstatus.testrail.net/index.php?/tests/view/890885 where performed steps could be found
|
||||||
@@ -34,7 +34,7 @@ List of all runs performed by test jobs could be found here https://ethstatus.te
|
|||||||
**For credentials for TestRail to see results ping Chu in DM**:
|
**For credentials for TestRail to see results ping Chu in DM**:
|
||||||
|
|
||||||
Opening any test run navigates you to list of test cases with results:
|
Opening any test run navigates you to list of test cases with results:
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
## What about launching e2e manually
|
## What about launching e2e manually
|
||||||
@@ -54,7 +54,7 @@ Params to specify:
|
|||||||
- testrail_case_id: here is the list of test cases which you may find in test rail (4-digit value)
|
- testrail_case_id: here is the list of test cases which you may find in test rail (4-digit value)
|
||||||
|
|
||||||
For easier access you can hit `Rerun tests` in GH comment and testrail_case_id/ apk_name/ pr_id will be filled automatically. For making sure that tests are being rerun on most recent e2e build it is recommended to paste link to the last e2e build in apk_name field. The list of PR builds can be found in Jenkins Builds block on PR page.
|
For easier access you can hit `Rerun tests` in GH comment and testrail_case_id/ apk_name/ pr_id will be filled automatically. For making sure that tests are being rerun on most recent e2e build it is recommended to paste link to the last e2e build in apk_name field. The list of PR builds can be found in Jenkins Builds block on PR page.
|
||||||

|

|
||||||
And then hit ‘Build’.
|
And then hit ‘Build’.
|
||||||
Once the job starts it picks up specified tests, runs them against provided apk and sends results to pull request.
|
Once the job starts it picks up specified tests, runs them against provided apk and sends results to pull request.
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Several examples of when test fails to succeed:
|
|||||||
|
|
||||||
Example: here is the test results https://github.com/status-im/status-react/pull/13015#issuecomment-1016495043 where one test failed.
|
Example: here is the test results https://github.com/status-im/status-react/pull/13015#issuecomment-1016495043 where one test failed.
|
||||||
1. Open the test in TestRail and open session recorded for this test in SauceLabs
|
1. Open the test in TestRail and open session recorded for this test in SauceLabs
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
In TestRail you may find all the steps performed by the test.
|
In TestRail you may find all the steps performed by the test.
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
# Tests
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
This document provides a general overview of the types of tests we use and when
|
||||||
|
to use them. It is not meant to be a tutorial or a detailed documentation about
|
||||||
|
testing in software development.
|
||||||
|
|
||||||
|
## Types of tests
|
||||||
|
|
||||||
|
Tests in `status-mobile` are comprised of:
|
||||||
|
|
||||||
|
- Unit tests
|
||||||
|
- Subscription tests
|
||||||
|
- Event tests
|
||||||
|
- Tests for various utilities
|
||||||
|
- [Component tests](./component-tests-overview.md)
|
||||||
|
- Integration/contract tests
|
||||||
|
- [End-to-end tests](./how-to-launch-e2e.md)
|
||||||
|
|
||||||
|
We apply the [test
|
||||||
|
pyramid](https://en.wikipedia.org/wiki/Test_automation#Testing_at_different_levels)
|
||||||
|
strategy, which means we want the majority of tests at the bottom of the
|
||||||
|
pyramid. Those should be fast and deterministic and support REPL-Driven
|
||||||
|
development (RDD). Slightly above them, we have component tests, then
|
||||||
|
integration/contract tests and finally end-to-end tests. The closer to the top
|
||||||
|
of the pyramid, the more valuable a test can be, but also more difficult to
|
||||||
|
pinpoint why it failed and harder to make it dependable.
|
||||||
|
|
||||||
|
*Note*: there are literally dozens of [types of
|
||||||
|
tests](https://en.wikipedia.org/wiki/Software_testing), each with its strengths
|
||||||
|
and weaknesses.
|
||||||
|
|
||||||
|
We tend not to stub or mock implementations in our tests, which means our tests
|
||||||
|
are [sociable](https://martinfowler.com/bliki/UnitTest.html).
|
||||||
|
|
||||||
|
## What to test?
|
||||||
|
|
||||||
|
The UI is driven by global & local state changes caused by events. Global state
|
||||||
|
is managed by re-frame and local state by Reagent atoms or React hooks. Except
|
||||||
|
for component and end-to-end tests, we test only non-UI code in `status-mobile`.
|
||||||
|
Given that the UI is greatly derived from global state, by guaranteeing the
|
||||||
|
state is correct we can prevent bugs and, more importantly, reduce the [cost of
|
||||||
|
change](https://www.pmi.org/disciplined-agile/agile/costofchange).
|
||||||
|
|
||||||
|
We strive to minimize the amount of _business logic_ in views (UI code). We
|
||||||
|
achieve this by moving capabilities to status-go and also by adhering to
|
||||||
|
re-frame's architecture.
|
||||||
|
|
||||||
|
Whenever appropriate (see section `When to test?`), we _may_ test:
|
||||||
|
|
||||||
|
- Re-frame events.
|
||||||
|
- Re-frame subscriptions.
|
||||||
|
- Utility functions.
|
||||||
|
- User journeys through integration/contract tests.
|
||||||
|
|
||||||
|
Interestingly, we don't test re-frame _effects_ in isolation.
|
||||||
|
|
||||||
|
### What are status-mobile integration and contract tests?
|
||||||
|
|
||||||
|
The mobile _integration tests_ can be used to "simulate" user interactions and
|
||||||
|
make actual calls to status-go via the RPC layer and actually receive signals.
|
||||||
|
We can also use these tests to verify the app-db and multiple subscriptions are
|
||||||
|
correct. We use the word _simulate_ because there is no UI. Basically, any flow
|
||||||
|
that can be driven by re-frame events is possible to automatically test. There
|
||||||
|
is no way to change or inspect local state managed by React.
|
||||||
|
|
||||||
|
A _contract test_ has the same capabilities as an integration test, but we want
|
||||||
|
to draw the line that they should focus more on a particupar RPC endpoint or
|
||||||
|
signal, and not on a user journey (e.g. create a wallet account). In the future,
|
||||||
|
we may consider running them automatically in status-go.
|
||||||
|
|
||||||
|
**Note:** integration tests and contract tests are currently overlapping in
|
||||||
|
their responsibilities and still require a clearer distinction.
|
||||||
|
|
||||||
|
## When to test?
|
||||||
|
|
||||||
|
(Automated) tests basically exist to support rapid software changes, but not
|
||||||
|
every piece of code should be tested. The following are general recommendations,
|
||||||
|
not rules.
|
||||||
|
|
||||||
|
- What would be the consequences to the user of a bug in the implementation you
|
||||||
|
are working on?
|
||||||
|
- Can a QA exercise all the branches in the code you changed? Not surprisingly,
|
||||||
|
usually QAs can't test many code paths (it may be nearly impossible), and
|
||||||
|
because PRs are not often tested by reviewers, many PRs can get into `develop`
|
||||||
|
without the necessary quality assurance.
|
||||||
|
- How costly was it for you to verify a function/event/etc was correct? Now
|
||||||
|
consider that this cost will be dispersed to every developer who needs to
|
||||||
|
change the implementation if there are no tests.
|
||||||
|
- Check the number of conditionals, and if they nest as well. Every conditional
|
||||||
|
may require two different assertions, and the number of assertions can grow
|
||||||
|
exponentially.
|
||||||
|
- How complicated are the arguments to the function? If they contain nested maps
|
||||||
|
or data that went through a few transformations, it may be tricky to decipher
|
||||||
|
what they are, unless you are familiar with the code. A test would be able to
|
||||||
|
capture the data, however complex they are.
|
||||||
|
|
||||||
|
### When to unit-test subscriptions?
|
||||||
|
|
||||||
|
Only test [layer-3
|
||||||
|
subscriptions](https://day8.github.io/re-frame/subscriptions/#the-four-layers),
|
||||||
|
i.e. don't bother testing extractor subscriptions (check the related
|
||||||
|
[guideline](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/doc/new-guidelines.md#subscription-tests)).
|
||||||
|
Some layer-3 subscriptions can still be straightforward and may not be worth
|
||||||
|
testing.
|
||||||
|
|
||||||
|
- Check the number of _inputs_ to the sub (from the graph). The higher this
|
||||||
|
number, the greater the chance the subscription can break if any of the
|
||||||
|
input's implementation changes.
|
||||||
|
|
||||||
|
**Note**: if a tested subscription changes inadvertently, even if its own tests
|
||||||
|
still pass, other subscriptions that depend on it and have tests may still fail.
|
||||||
|
This is why we don't directly test the subscription handler, but instead, use
|
||||||
|
the macro `test-helpers.unit/deftest-sub`.
|
||||||
|
|
||||||
|
### When to unit-test events?
|
||||||
|
|
||||||
|
A good hint is to ask if you and other CCs need to rely on re-frisk, UI, REPL,
|
||||||
|
or FlowStorm to understand the event. If the answer is yes or probably, then a
|
||||||
|
test would be prudent.
|
||||||
|
|
||||||
|
- Many events only receive arguments and pass them along without much or any
|
||||||
|
transformation to an RPC call. These are straightforward and usually don't
|
||||||
|
need tests ([example](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/status_im/contexts/contact/blocking/events.cljs#L79-L85)).
|
||||||
|
- Overall, every event basically returns two effects at most, `:fx` and/or
|
||||||
|
`:db`. Usually, the complicated part lies in the computation to return the new
|
||||||
|
app-db. If the event doesn't perform transformations in the app-db or just
|
||||||
|
does a trivial `assoc`, for example, it may not be worth testing.
|
||||||
|
|
||||||
|
For reference, the re-frame author particularly [suggests testing events and
|
||||||
|
subscriptions](https://github.com/day8/re-frame/blob/09e2d7132c479aa43f2a64164e54e42bf8511902/docs/Testing.md#what-to-test).
|
||||||
|
|
||||||
|
### When to unit-test utility functions?
|
||||||
|
|
||||||
|
Most utility functions in `status-mobile` are pure and can be readily and
|
||||||
|
cheaply tested.
|
||||||
|
|
||||||
|
- If the utility is used in an event/subscription and if the event/subscription
|
||||||
|
has tests, you may prefer to test the event/subscription and not the utility,
|
||||||
|
or the other way around sometimes.
|
||||||
|
- If the utility is tricky to verify, such as functions manipulating time, write
|
||||||
|
tests ([example](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/utils/datetime.cljs#L1)).
|
||||||
|
- Utilities can be particularly hard to verify by QAs because they can be lower
|
||||||
|
level and require very particular inputs. In such cases, consider writing
|
||||||
|
tests.
|
||||||
|
|
||||||
|
### When to write integration/contract tests?
|
||||||
|
|
||||||
|
- You want to make real calls to status-go because you think the unit tests are
|
||||||
|
not enough (test pyramid strategy).
|
||||||
|
- You constantly need to retest the same things on the UI, sometimes over
|
||||||
|
multiple screens.
|
||||||
|
- The flow is too important to rely only on manual QA, which can't always be
|
||||||
|
done due to resource limits, so an integration/contract test fills this gap.
|
||||||
|
- You want to rely less on end-to-end tests, which can be more unreliable and
|
||||||
|
slower to change.
|
||||||
|
- You want automatic verifications for some area of the mobile app whenever
|
||||||
|
status-go is upgraded.
|
||||||
|
|
||||||
|
**Note**: the feedback cycle to write integration tests is longer than unit
|
||||||
|
tests because they are slower and harder to debug. Using the REPL with them is
|
||||||
|
difficult due to their stateful nature.
|
||||||
|
|
||||||
|
### When to test Quo components?
|
||||||
|
|
||||||
|
This is covered in [quo/README.md#component-tests](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/quo/README.md#component-tests).
|
||||||
@@ -31,7 +31,7 @@ NOW:
|
|||||||
(defn view
|
(defn view
|
||||||
[{:keys [on-press on-long-press icon]}]
|
[{:keys [on-press on-long-press icon]}]
|
||||||
(let [[pressed? set-pressed] (rn/use-state false)
|
(let [[pressed? set-pressed] (rn/use-state false)
|
||||||
theme (theme/use-theme-value)
|
theme (theme/use-theme)
|
||||||
on-press-in (rn/use-callback #(set-pressed true))
|
on-press-in (rn/use-callback #(set-pressed true))
|
||||||
on-press-out (rn/use-callback #(set-pressed nil))]
|
on-press-out (rn/use-callback #(set-pressed nil))]
|
||||||
[rn/pressable
|
[rn/pressable
|
||||||
@@ -47,7 +47,7 @@ NOW:
|
|||||||
- We no longer need to create an anonymous function for rendering. This removes unnecessary confusion and the need for specific knowledge on how it works and why it was needed.
|
- We no longer need to create an anonymous function for rendering. This removes unnecessary confusion and the need for specific knowledge on how it works and why it was needed.
|
||||||
- `rn/use-state` is used instead of `reagent/atom`
|
- `rn/use-state` is used instead of `reagent/atom`
|
||||||
- State values no longer need to be dereferenced; they are accessible as regular symbols. This eliminates a common bug where the "@" symbol was inadvertently omitted.
|
- State values no longer need to be dereferenced; they are accessible as regular symbols. This eliminates a common bug where the "@" symbol was inadvertently omitted.
|
||||||
- `theme/with-theme` wrapper is not needed anymore, `(theme/use-theme-value)` hook can be used directly in the components
|
- `theme/with-theme` wrapper is not needed anymore, `(theme/use-theme)` hook can be used directly in the components
|
||||||
- `:f>` not needed anymore, all components are functional by default
|
- `:f>` not needed anymore, all components are functional by default
|
||||||
- `rn/use-callback` hook should be used for anon callback functions
|
- `rn/use-callback` hook should be used for anon callback functions
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- boost (1.83.0)
|
- boost (1.83.0)
|
||||||
- BVLinearGradient (2.8.0):
|
|
||||||
- React-Core
|
|
||||||
- CryptoSwift (1.5.1)
|
- CryptoSwift (1.5.1)
|
||||||
- DoubleConversion (1.1.6)
|
- DoubleConversion (1.1.6)
|
||||||
- FBLazyVector (0.73.5)
|
- FBLazyVector (0.73.5)
|
||||||
@@ -917,7 +915,7 @@ PODS:
|
|||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2022.05.16.00)
|
- RCT-Folly (= 2022.05.16.00)
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-compat (2.12.2):
|
- react-native-compat (2.11.2):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2022.05.16.00)
|
- RCT-Folly (= 2022.05.16.00)
|
||||||
- React-Core
|
- React-Core
|
||||||
@@ -1161,6 +1159,10 @@ PODS:
|
|||||||
- TOCropViewController
|
- TOCropViewController
|
||||||
- RNKeychain (8.1.2):
|
- RNKeychain (8.1.2):
|
||||||
- React-Core
|
- React-Core
|
||||||
|
- RNLinearGradient (3.0.0-alpha.1):
|
||||||
|
- glog
|
||||||
|
- RCT-Folly (= 2022.05.16.00)
|
||||||
|
- React-Core
|
||||||
- RNPermissions (4.1.5):
|
- RNPermissions (4.1.5):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNReanimated (3.6.1):
|
- RNReanimated (3.6.1):
|
||||||
@@ -1188,7 +1190,6 @@ PODS:
|
|||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
|
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
|
||||||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
|
||||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||||
@@ -1269,6 +1270,7 @@ DEPENDENCIES:
|
|||||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||||
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
|
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
|
||||||
- RNKeychain (from `../node_modules/react-native-keychain`)
|
- RNKeychain (from `../node_modules/react-native-keychain`)
|
||||||
|
- RNLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||||
- RNPermissions (from `../node_modules/react-native-permissions`)
|
- RNPermissions (from `../node_modules/react-native-permissions`)
|
||||||
- RNReanimated (from `../node_modules/react-native-reanimated`)
|
- RNReanimated (from `../node_modules/react-native-reanimated`)
|
||||||
- RNShare (from `../node_modules/react-native-share`)
|
- RNShare (from `../node_modules/react-native-share`)
|
||||||
@@ -1294,8 +1296,6 @@ SPEC REPOS:
|
|||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
boost:
|
boost:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
|
||||||
BVLinearGradient:
|
|
||||||
:path: "../node_modules/react-native-linear-gradient"
|
|
||||||
DoubleConversion:
|
DoubleConversion:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
||||||
FBLazyVector:
|
FBLazyVector:
|
||||||
@@ -1451,6 +1451,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../node_modules/react-native-image-crop-picker"
|
:path: "../node_modules/react-native-image-crop-picker"
|
||||||
RNKeychain:
|
RNKeychain:
|
||||||
:path: "../node_modules/react-native-keychain"
|
:path: "../node_modules/react-native-keychain"
|
||||||
|
RNLinearGradient:
|
||||||
|
:path: "../node_modules/react-native-linear-gradient"
|
||||||
RNPermissions:
|
RNPermissions:
|
||||||
:path: "../node_modules/react-native-permissions"
|
:path: "../node_modules/react-native-permissions"
|
||||||
RNReanimated:
|
RNReanimated:
|
||||||
@@ -1478,13 +1480,12 @@ CHECKOUT OPTIONS:
|
|||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
|
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
|
||||||
BVLinearGradient: 612a04ff38e8480291f3379ee5b5a2c571f03fe0
|
|
||||||
CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082
|
CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082
|
||||||
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
|
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
|
||||||
FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d
|
FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d
|
||||||
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
|
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
|
||||||
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
||||||
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
|
glog: 530710e7949eb12c82670bd09e946becf50a3c2a
|
||||||
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
|
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
|
||||||
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
||||||
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
|
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
|
||||||
@@ -1516,7 +1517,7 @@ SPEC CHECKSUMS:
|
|||||||
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
|
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
|
||||||
react-native-blur: 799045500f56146afc46245148080e7b7623cb75
|
react-native-blur: 799045500f56146afc46245148080e7b7623cb75
|
||||||
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
|
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
|
||||||
react-native-compat: 84e00e8dcff9251278c0d48f2bce81f4502e3925
|
react-native-compat: 3af9add14d349701306d3d052638435f6795ac2c
|
||||||
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
|
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
|
||||||
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
|
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
|
||||||
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
|
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
|
||||||
@@ -1561,6 +1562,7 @@ SPEC CHECKSUMS:
|
|||||||
RNGestureHandler: 15c6ef51acba34c49ff03003806cf5dd6098f383
|
RNGestureHandler: 15c6ef51acba34c49ff03003806cf5dd6098f383
|
||||||
RNImageCropPicker: 486e2f7e2b0461ce24321f751410dce1b3b49e6d
|
RNImageCropPicker: 486e2f7e2b0461ce24321f751410dce1b3b49e6d
|
||||||
RNKeychain: a65256b6ca6ba6976132cc4124b238a5b13b3d9c
|
RNKeychain: a65256b6ca6ba6976132cc4124b238a5b13b3d9c
|
||||||
|
RNLinearGradient: ccaaebce083b54180da61d992e7fa56abfe000d6
|
||||||
RNPermissions: 08e619529cced22695f4b6d0efcc0a233e278903
|
RNPermissions: 08e619529cced22695f4b6d0efcc0a233e278903
|
||||||
RNReanimated: dee37576492f1a375017515f5c77e66e5eec696b
|
RNReanimated: dee37576492f1a375017515f5c77e66e5eec696b
|
||||||
RNShare: 859ff710211285676b0bcedd156c12437ea1d564
|
RNShare: 859ff710211285676b0bcedd156c12437ea1d564
|
||||||
|
|||||||
@@ -8,10 +8,9 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
|
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
|
||||||
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C29909A975E0654116557F /* libPods-Status-StatusIm.a */; };
|
|
||||||
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */; };
|
|
||||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
|
231CD38186B86957CFCF645E /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DA19658BCC29789EBB3DE79 /* libPods-Status-StatusIm.a */; };
|
||||||
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
|
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
|
||||||
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
|
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
|
||||||
393D26E3080B443A998F4A2F /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */; };
|
393D26E3080B443A998F4A2F /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */; };
|
||||||
@@ -41,11 +40,13 @@
|
|||||||
65F6941925780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
65F6941925780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
||||||
65F6941A25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
65F6941A25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
||||||
65F6941B25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
65F6941B25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
|
||||||
|
67A3DF2242D5B6C35A4C6A33 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7B7F8B9749AB74BB0697B49 /* libPods-Status-StatusIm-StatusImTests.a */; };
|
||||||
70ADBB5ECF934DCF8A0E4919 /* Inter-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1426DF592BA248FC81D955CB /* Inter-Regular.otf */; };
|
70ADBB5ECF934DCF8A0E4919 /* Inter-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1426DF592BA248FC81D955CB /* Inter-Regular.otf */; };
|
||||||
715D8132290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
715D8132290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
||||||
715D8133290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
715D8133290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
|
||||||
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */; };
|
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */; };
|
||||||
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
|
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
|
||||||
|
A1B6E23C86E6A40AFE74E925 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E9723BBA39FC5B087C3D475 /* libPods-Status-StatusImPR.a */; };
|
||||||
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
|
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
|
||||||
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
|
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
|
||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
||||||
@@ -60,7 +61,6 @@
|
|||||||
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
|
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
|
||||||
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
|
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
|
||||||
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
|
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
|
||||||
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@@ -108,23 +108,23 @@
|
|||||||
00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = "<group>"; };
|
00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = "<group>"; };
|
||||||
|
0E9723BBA39FC5B087C3D475 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = "<group>"; };
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = "<group>"; };
|
||||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = StatusIm/AppDelegate.mm; sourceTree = "<group>"; };
|
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = StatusIm/AppDelegate.mm; sourceTree = "<group>"; };
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
|
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
|
||||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
|
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
|
||||||
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
|
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
|
||||||
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
|
2F18074BFB7862090B68D75F /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
|
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
|
||||||
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
|
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
|
||||||
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
|
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||||
|
5D2EA2A248267BA083152C22 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
5DA19658BCC29789EBB3DE79 /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
|
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
|
||||||
65F693BF2578003600A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework; sourceTree = DEVELOPER_DIR; };
|
65F693BF2578003600A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusImTests-Bridging-Header.h"; sourceTree = "<group>"; };
|
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusImTests-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
@@ -132,16 +132,14 @@
|
|||||||
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
|
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
|
||||||
715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "UbuntuMono-Regular.ttf"; path = "../resources/fonts/UbuntuMono-Regular.ttf"; sourceTree = "<group>"; };
|
715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "UbuntuMono-Regular.ttf"; path = "../resources/fonts/UbuntuMono-Regular.ttf"; sourceTree = "<group>"; };
|
||||||
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
|
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
|
||||||
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||||
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
|
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
|
||||||
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
|
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
|
||||||
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
||||||
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
|
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
|
||||||
|
A7B7F8B9749AB74BB0697B49 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
B064AF9CEF590E7140F5193F /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
|
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
|
||||||
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
||||||
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
|
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
|
||||||
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
|
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
|
||||||
@@ -153,7 +151,9 @@
|
|||||||
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
|
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
|
||||||
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
|
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
|
||||||
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
|
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
|
||||||
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
|
D1249D8E109F0F96FFE2CA6C /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
E089B0F56B6F6715D444A841 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
EAAD01A6F886D961CE1A9541 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
|
67A3DF2242D5B6C35A4C6A33 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
|
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
|
||||||
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
|
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
|
||||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
||||||
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */,
|
231CD38186B86957CFCF645E /* libPods-Status-StatusIm.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
|
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
|
||||||
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
|
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
|
||||||
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
|
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
|
||||||
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */,
|
A1B6E23C86E6A40AFE74E925 /* libPods-Status-StatusImPR.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -314,9 +314,9 @@
|
|||||||
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
|
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
|
||||||
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
|
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
|
||||||
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
|
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
|
||||||
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */,
|
5DA19658BCC29789EBB3DE79 /* libPods-Status-StatusIm.a */,
|
||||||
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */,
|
A7B7F8B9749AB74BB0697B49 /* libPods-Status-StatusIm-StatusImTests.a */,
|
||||||
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */,
|
0E9723BBA39FC5B087C3D475 /* libPods-Status-StatusImPR.a */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -324,12 +324,12 @@
|
|||||||
D0D5C8D06825D33BA2D2121E /* Pods */ = {
|
D0D5C8D06825D33BA2D2121E /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */,
|
B064AF9CEF590E7140F5193F /* Pods-Status-StatusIm.debug.xcconfig */,
|
||||||
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */,
|
5D2EA2A248267BA083152C22 /* Pods-Status-StatusIm.release.xcconfig */,
|
||||||
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
|
E089B0F56B6F6715D444A841 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
|
||||||
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
|
EAAD01A6F886D961CE1A9541 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
|
||||||
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */,
|
2F18074BFB7862090B68D75F /* Pods-Status-StatusImPR.debug.xcconfig */,
|
||||||
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */,
|
D1249D8E109F0F96FFE2CA6C /* Pods-Status-StatusImPR.release.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -341,12 +341,12 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
|
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */,
|
9B331412309D5F5632348AEE /* [CP] Check Pods Manifest.lock */,
|
||||||
00E356EA1AD99517003FC87E /* Sources */,
|
00E356EA1AD99517003FC87E /* Sources */,
|
||||||
00E356EB1AD99517003FC87E /* Frameworks */,
|
00E356EB1AD99517003FC87E /* Frameworks */,
|
||||||
00E356EC1AD99517003FC87E /* Resources */,
|
00E356EC1AD99517003FC87E /* Resources */,
|
||||||
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */,
|
7545D1B37CABFA574D6D6C31 /* [CP] Embed Pods Frameworks */,
|
||||||
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */,
|
A3AD03105488DA5BC8E8C199 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -362,15 +362,15 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
|
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */,
|
236F25332B0D1B4DCC0E041E /* [CP] Check Pods Manifest.lock */,
|
||||||
13B07F871A680F5B00A75B9A /* Sources */,
|
13B07F871A680F5B00A75B9A /* Sources */,
|
||||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||||
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
|
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
|
||||||
E3914A731DF919ED00EBB515 /* Run Script */,
|
E3914A731DF919ED00EBB515 /* Run Script */,
|
||||||
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */,
|
37D91248C8178FEAC1661AE0 /* [CP] Embed Pods Frameworks */,
|
||||||
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */,
|
BC5CED24C6D00996607C4942 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -385,15 +385,15 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
|
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */,
|
D0B7F25508F9BD7C6B30AF36 /* [CP] Check Pods Manifest.lock */,
|
||||||
3AAD2ABB24A3A60E0075D594 /* Sources */,
|
3AAD2ABB24A3A60E0075D594 /* Sources */,
|
||||||
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
|
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
|
||||||
3AAD2AC924A3A60E0075D594 /* Resources */,
|
3AAD2AC924A3A60E0075D594 /* Resources */,
|
||||||
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
|
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
|
||||||
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
|
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
|
||||||
3AAD2AD724A3A60E0075D594 /* Run Script */,
|
3AAD2AD724A3A60E0075D594 /* Run Script */,
|
||||||
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */,
|
5C9736BD9798020B8F31802B /* [CP] Embed Pods Frameworks */,
|
||||||
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */,
|
B76C3637DC2DDBB6E8472904 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@@ -547,55 +547,7 @@
|
|||||||
shellPath = "/usr/bin/env sh";
|
shellPath = "/usr/bin/env sh";
|
||||||
shellScript = "set -o errexit\nexport NODE_BINARY=\"${NODE_BINARY:-node}\"\nexport NODE_ARGS=\"${NODE_ARGS:- --max-old-space-size=16384 }\"\n\n\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n";
|
shellScript = "set -o errexit\nexport NODE_BINARY=\"${NODE_BINARY:-node}\"\nexport NODE_ARGS=\"${NODE_ARGS:- --max-old-space-size=16384 }\"\n\n\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n";
|
||||||
};
|
};
|
||||||
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */ = {
|
236F25332B0D1B4DCC0E041E /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -617,6 +569,24 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
37D91248C8178FEAC1661AE0 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */ = {
|
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -645,13 +615,13 @@
|
|||||||
shellPath = "/usr/bin/env sh";
|
shellPath = "/usr/bin/env sh";
|
||||||
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
|
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
|
||||||
};
|
};
|
||||||
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */ = {
|
5C9736BD9798020B8F31802B /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
@@ -660,10 +630,28 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */ = {
|
7545D1B37CABFA574D6D6C31 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh",
|
||||||
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
9B331412309D5F5632348AEE /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -685,7 +673,31 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */ = {
|
A3AD03105488DA5BC8E8C199 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
B76C3637DC2DDBB6E8472904 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -709,39 +721,31 @@
|
|||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */ = {
|
BC5CED24C6D00996607C4942 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
E3914A731DF919ED00EBB515 /* Run Script */ = {
|
D0B7F25508F9BD7C6B30AF36 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 8;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "Run Script";
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 1;
|
|
||||||
shellPath = "/usr/bin/env sh";
|
|
||||||
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
|
|
||||||
};
|
|
||||||
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@@ -763,23 +767,19 @@
|
|||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */ = {
|
E3914A731DF919ED00EBB515 /* Run Script */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 8;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
|
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "Run Script";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 1;
|
||||||
shellPath = /bin/sh;
|
shellPath = "/usr/bin/env sh";
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh\"\n";
|
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
@@ -828,7 +828,7 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
00E356F61AD99517003FC87E /* Debug */ = {
|
00E356F61AD99517003FC87E /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
|
baseConfigurationReference = E089B0F56B6F6715D444A841 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_ID_SUFFIX = .debug;
|
BUNDLE_ID_SUFFIX = .debug;
|
||||||
@@ -865,7 +865,7 @@
|
|||||||
};
|
};
|
||||||
00E356F71AD99517003FC87E /* Release */ = {
|
00E356F71AD99517003FC87E /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
|
baseConfigurationReference = EAAD01A6F886D961CE1A9541 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
BUNDLE_ID_SUFFIX = "";
|
BUNDLE_ID_SUFFIX = "";
|
||||||
@@ -898,7 +898,7 @@
|
|||||||
};
|
};
|
||||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */;
|
baseConfigurationReference = B064AF9CEF590E7140F5193F /* Pods-Status-StatusIm.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||||
BUNDLE_ID_SUFFIX = .debug;
|
BUNDLE_ID_SUFFIX = .debug;
|
||||||
@@ -980,7 +980,7 @@
|
|||||||
};
|
};
|
||||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */;
|
baseConfigurationReference = 5D2EA2A248267BA083152C22 /* Pods-Status-StatusIm.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||||
BUNDLE_ID_SUFFIX = "";
|
BUNDLE_ID_SUFFIX = "";
|
||||||
@@ -1055,7 +1055,7 @@
|
|||||||
};
|
};
|
||||||
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
|
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */;
|
baseConfigurationReference = 2F18074BFB7862090B68D75F /* Pods-Status-StatusImPR.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
|
||||||
BUNDLE_ID_SUFFIX = .debug;
|
BUNDLE_ID_SUFFIX = .debug;
|
||||||
@@ -1135,7 +1135,7 @@
|
|||||||
};
|
};
|
||||||
3AAD2ADB24A3A60E0075D594 /* Release */ = {
|
3AAD2ADB24A3A60E0075D594 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */;
|
baseConfigurationReference = D1249D8E109F0F96FFE2CA6C /* Pods-Status-StatusImPR.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
|
||||||
BUNDLE_ID_SUFFIX = "";
|
BUNDLE_ID_SUFFIX = "";
|
||||||
|
|||||||
@@ -119,8 +119,6 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>armv7</string>
|
<string>armv7</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIStatusBarStyle</key>
|
|
||||||
<string>UIStatusBarStyleLightContent</string>
|
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
@@ -133,7 +131,7 @@
|
|||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<true/>
|
||||||
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
|
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
|
||||||
<array>
|
<array>
|
||||||
<string>A00000080400010101</string>
|
<string>A00000080400010101</string>
|
||||||
|
|||||||
@@ -246,6 +246,14 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
|
|||||||
utils.executeRunnableStatusGoMethod({ Statusgo.openAccounts(rootDir) }, callback)
|
utils.executeRunnableStatusGoMethod({ Statusgo.openAccounts(rootDir) }, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
private fun initializeApplication(request: String, callback: Callback) {
|
||||||
|
Log.d(TAG, "initializeApplication")
|
||||||
|
Log.d(TAG, "[Initializing application $request")
|
||||||
|
utils.executeRunnableStatusGoMethod({ Statusgo.initializeApplication(request) }, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
fun logout() {
|
fun logout() {
|
||||||
Log.d(TAG, "logout")
|
Log.d(TAG, "logout")
|
||||||
@@ -314,6 +322,11 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
fun createAccountFromPrivateKey(json: String, callback: Callback) {
|
||||||
|
utils.executeRunnableStatusGoMethod({ Statusgo.createAccountFromPrivateKey(json) }, callback)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "AccountManager"
|
private const val TAG = "AccountManager"
|
||||||
private const val gethLogFileName = "geth.log"
|
private const val gethLogFileName = "geth.log"
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ public class EncryptionUtils extends ReactContextBaseJavaModule {
|
|||||||
return Statusgo.encodeTransfer(to, value);
|
return Statusgo.encodeTransfer(to, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
||||||
|
public String encodeFunctionCall(final String method, final String paramsJSON) {
|
||||||
|
return Statusgo.encodeFunctionCall(method, paramsJSON);
|
||||||
|
}
|
||||||
|
|
||||||
@ReactMethod(isBlockingSynchronousMethod = true)
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
||||||
public String decodeParameters(final String decodeParamJSON) {
|
public String decodeParameters(final String decodeParamJSON) {
|
||||||
return Statusgo.decodeParameters(decodeParamJSON);
|
return Statusgo.decodeParameters(decodeParamJSON);
|
||||||
@@ -92,6 +97,11 @@ public class EncryptionUtils extends ReactContextBaseJavaModule {
|
|||||||
return Statusgo.hexToUtf8(str);
|
return Statusgo.hexToUtf8(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
||||||
|
public String serializeLegacyKey(final String publicKey) {
|
||||||
|
return Statusgo.serializeLegacyKey(publicKey);
|
||||||
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void setBlankPreviewFlag(final Boolean blankPreview) {
|
public void setBlankPreviewFlag(final Boolean blankPreview) {
|
||||||
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.reactContext);
|
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.reactContext);
|
||||||
|
|||||||
@@ -76,6 +76,16 @@ class StatusModule(private val reactContext: ReactApplicationContext, private va
|
|||||||
utils.executeRunnableStatusGoMethod({ Statusgo.getNodeConfig() }, callback)
|
utils.executeRunnableStatusGoMethod({ Statusgo.getNodeConfig() }, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
fun addCentralizedMetric(request: String, callback: Callback) {
|
||||||
|
utils.executeRunnableStatusGoMethod({ Statusgo.addCentralizedMetric(request) }, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
fun toggleCentralizedMetrics(request: String, callback: Callback) {
|
||||||
|
utils.executeRunnableStatusGoMethod({ Statusgo.toggleCentralizedMetrics(request) }, callback)
|
||||||
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
fun deleteImportedKey(keyUID: String, address: String, password: String, callback: Callback) {
|
fun deleteImportedKey(keyUID: String, address: String, password: String, callback: Callback) {
|
||||||
val keyStoreDir = utils.getKeyStorePath(keyUID)
|
val keyStoreDir = utils.getKeyStorePath(keyUID)
|
||||||
|
|||||||
@@ -153,4 +153,9 @@ class Utils(private val reactContext: ReactApplicationContext) : ReactContextBas
|
|||||||
|
|
||||||
return strArray
|
return strArray
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
||||||
|
fun validateConnectionString(connectionString: String): String {
|
||||||
|
return Statusgo.validateConnectionString(connectionString)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,6 +195,15 @@ RCT_EXPORT_METHOD(verifyDatabasePassword:(NSString *)keyUID
|
|||||||
callback(@[result]);
|
callback(@[result]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_METHOD(initializeApplication:(NSString *)request
|
||||||
|
callback:(RCTResponseSenderBlock)callback) {
|
||||||
|
#if DEBUG
|
||||||
|
NSLog(@"initializeApplication() method called");
|
||||||
|
#endif
|
||||||
|
NSString *result = StatusgoInitializeApplication(request);
|
||||||
|
callback(@[result]);
|
||||||
|
}
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(openAccounts:(RCTResponseSenderBlock)callback) {
|
RCT_EXPORT_METHOD(openAccounts:(RCTResponseSenderBlock)callback) {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
NSLog(@"OpenAccounts() method called");
|
NSLog(@"OpenAccounts() method called");
|
||||||
@@ -233,4 +242,12 @@ RCT_EXPORT_METHOD(createAccountFromMnemonicAndDeriveAccountsForPaths:(NSString *
|
|||||||
callback(@[result]);
|
callback(@[result]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_METHOD(createAccountFromPrivateKey:(NSString *)configJSON callback:(RCTResponseSenderBlock)callback) {
|
||||||
|
#if DEBUG
|
||||||
|
NSLog(@"createAccountFromPrivateKey() method called");
|
||||||
|
#endif
|
||||||
|
NSString *result = StatusgoCreateAccountFromPrivateKey(configJSON);
|
||||||
|
callback(@[result]);
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -94,6 +94,10 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(hexToUtf8:(NSString *)str) {
|
|||||||
return StatusgoHexToUtf8(str);
|
return StatusgoHexToUtf8(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(serializeLegacyKey:(NSString *)str) {
|
||||||
|
return StatusgoSerializeLegacyKey(str);
|
||||||
|
}
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(setBlankPreviewFlag:(BOOL *)newValue)
|
RCT_EXPORT_METHOD(setBlankPreviewFlag:(BOOL *)newValue)
|
||||||
{
|
{
|
||||||
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
|||||||
@@ -176,6 +176,24 @@ RCT_EXPORT_METHOD(appStateChange:(NSString *)type) {
|
|||||||
StatusgoAppStateChange(type);
|
StatusgoAppStateChange(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_METHOD(addCentralizedMetric:(NSString *)request
|
||||||
|
callback:(RCTResponseSenderBlock)callback) {
|
||||||
|
#if DEBUG
|
||||||
|
NSLog(@"addCentralizedMetric() method called");
|
||||||
|
#endif
|
||||||
|
NSString *result = StatusgoAddCentralizedMetric(request);
|
||||||
|
callback(@[result]);
|
||||||
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_METHOD(toggleCentralizedMetrics:(NSString *)request
|
||||||
|
callback:(RCTResponseSenderBlock)callback) {
|
||||||
|
#if DEBUG
|
||||||
|
NSLog(@"toggleCentralizedMetrics() method called");
|
||||||
|
#endif
|
||||||
|
NSString *result = StatusgoToggleCentralizedMetrics(request);
|
||||||
|
callback(@[result]);
|
||||||
|
}
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(startLocalNotifications) {
|
RCT_EXPORT_METHOD(startLocalNotifications) {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
NSLog(@"StartLocalNotifications() method called");
|
NSLog(@"StartLocalNotifications() method called");
|
||||||
|
|||||||
@@ -128,4 +128,8 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(toChecksumAddress:(NSString *)address) {
|
|||||||
return StatusgoToChecksumAddress(address);
|
return StatusgoToChecksumAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(validateConnectionString:(NSString *)cs) {
|
||||||
|
return StatusgoValidateConnectionString(cs);
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -302,6 +302,36 @@ void _MultiAccountStoreAccount(const FunctionCallbackInfo<Value>& args) {
|
|||||||
delete c;
|
delete c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _InitializeApplication(const FunctionCallbackInfo<Value>& args) {
|
||||||
|
Isolate* isolate = args.GetIsolate();
|
||||||
|
Local<Context> context = isolate->GetCurrentContext();
|
||||||
|
|
||||||
|
if (args.Length() != 1) {
|
||||||
|
// Throw an Error that is passed back to JavaScript
|
||||||
|
isolate->ThrowException(Exception::TypeError(
|
||||||
|
String::NewFromUtf8Literal(isolate, "Wrong number of arguments for InitializeApplication")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the argument types
|
||||||
|
|
||||||
|
if (!args[0]->IsString()) {
|
||||||
|
isolate->ThrowException(Exception::TypeError(
|
||||||
|
String::NewFromUtf8Literal(isolate, "Wrong argument type for request")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String::Utf8Value arg0Obj(isolate, args[0]->ToString(context).ToLocalChecked());
|
||||||
|
char *arg0 = *arg0Obj;
|
||||||
|
|
||||||
|
// Call exported Go function, which returns a C string
|
||||||
|
char *c = InitializeApplication(arg0);
|
||||||
|
|
||||||
|
Local<String> ret = String::NewFromUtf8(isolate, c).ToLocalChecked();
|
||||||
|
args.GetReturnValue().Set(ret);
|
||||||
|
delete c;
|
||||||
|
}
|
||||||
|
|
||||||
void _InitKeystore(const FunctionCallbackInfo<Value>& args) {
|
void _InitKeystore(const FunctionCallbackInfo<Value>& args) {
|
||||||
Isolate* isolate = args.GetIsolate();
|
Isolate* isolate = args.GetIsolate();
|
||||||
@@ -642,6 +672,38 @@ void _Sha3(const FunctionCallbackInfo<Value>& args) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _SerializeLegacyKey(const FunctionCallbackInfo<Value>& args) {
|
||||||
|
Isolate* isolate = args.GetIsolate();
|
||||||
|
Local<Context> context = isolate->GetCurrentContext();
|
||||||
|
|
||||||
|
if (args.Length() != 1) {
|
||||||
|
// Throw an Error that is passed back to JavaScript
|
||||||
|
isolate->ThrowException(Exception::TypeError(
|
||||||
|
String::NewFromUtf8Literal(isolate, "Wrong number of arguments for SerializeLegacyKey")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the argument types
|
||||||
|
|
||||||
|
if (!args[0]->IsString()) {
|
||||||
|
isolate->ThrowException(Exception::TypeError(
|
||||||
|
String::NewFromUtf8Literal(isolate, "Wrong argument type for 'str'")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String::Utf8Value arg0Obj(isolate, args[0]->ToString(context).ToLocalChecked());
|
||||||
|
char *arg0 = *arg0Obj;
|
||||||
|
|
||||||
|
// Call exported Go function, which returns a C string
|
||||||
|
char *c = SerializeLegacyKey(arg0);
|
||||||
|
|
||||||
|
Local<String> ret = String::NewFromUtf8(isolate, c).ToLocalChecked();
|
||||||
|
args.GetReturnValue().Set(ret);
|
||||||
|
delete c;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void _ToChecksumAddress(const FunctionCallbackInfo<Value>& args) {
|
void _ToChecksumAddress(const FunctionCallbackInfo<Value>& args) {
|
||||||
Isolate* isolate = args.GetIsolate();
|
Isolate* isolate = args.GetIsolate();
|
||||||
Local<Context> context = isolate->GetCurrentContext();
|
Local<Context> context = isolate->GetCurrentContext();
|
||||||
@@ -1935,6 +1997,7 @@ void init(Local<Object> exports) {
|
|||||||
NODE_SET_METHOD(exports, "multiAccountStoreDerivedAccounts", _MultiAccountStoreDerivedAccounts);
|
NODE_SET_METHOD(exports, "multiAccountStoreDerivedAccounts", _MultiAccountStoreDerivedAccounts);
|
||||||
NODE_SET_METHOD(exports, "multiAccountStoreAccount", _MultiAccountStoreAccount);
|
NODE_SET_METHOD(exports, "multiAccountStoreAccount", _MultiAccountStoreAccount);
|
||||||
NODE_SET_METHOD(exports, "initKeystore", _InitKeystore);
|
NODE_SET_METHOD(exports, "initKeystore", _InitKeystore);
|
||||||
|
NODE_SET_METHOD(exports, "initializeApplication", _InitializeApplication);
|
||||||
NODE_SET_METHOD(exports, "fleets", _Fleets);
|
NODE_SET_METHOD(exports, "fleets", _Fleets);
|
||||||
NODE_SET_METHOD(exports, "stopCPUProfiling", _StopCPUProfiling);
|
NODE_SET_METHOD(exports, "stopCPUProfiling", _StopCPUProfiling);
|
||||||
NODE_SET_METHOD(exports, "encodeTransfer", _EncodeTransfer);
|
NODE_SET_METHOD(exports, "encodeTransfer", _EncodeTransfer);
|
||||||
@@ -1945,6 +2008,7 @@ void init(Local<Object> exports) {
|
|||||||
NODE_SET_METHOD(exports, "checkAddressChecksum", _CheckAddressChecksum);
|
NODE_SET_METHOD(exports, "checkAddressChecksum", _CheckAddressChecksum);
|
||||||
NODE_SET_METHOD(exports, "isAddress", _IsAddress);
|
NODE_SET_METHOD(exports, "isAddress", _IsAddress);
|
||||||
NODE_SET_METHOD(exports, "sha3", _Sha3);
|
NODE_SET_METHOD(exports, "sha3", _Sha3);
|
||||||
|
NODE_SET_METHOD(exports, "serializeLegacyKey", _SerializeLegacyKey);
|
||||||
NODE_SET_METHOD(exports, "toChecksumAddress", _ToChecksumAddress);
|
NODE_SET_METHOD(exports, "toChecksumAddress", _ToChecksumAddress);
|
||||||
NODE_SET_METHOD(exports, "logout", _Logout);
|
NODE_SET_METHOD(exports, "logout", _Logout);
|
||||||
NODE_SET_METHOD(exports, "hashMessage", _HashMessage);
|
NODE_SET_METHOD(exports, "hashMessage", _HashMessage);
|
||||||
@@ -1972,7 +2036,7 @@ void init(Local<Object> exports) {
|
|||||||
NODE_SET_METHOD(exports, "signTypedData", _SignTypedData);
|
NODE_SET_METHOD(exports, "signTypedData", _SignTypedData);
|
||||||
NODE_SET_METHOD(exports, "sendTransaction", _SendTransaction);
|
NODE_SET_METHOD(exports, "sendTransaction", _SendTransaction);
|
||||||
NODE_SET_METHOD(exports, "appStateChange", _AppStateChange);
|
NODE_SET_METHOD(exports, "appStateChange", _AppStateChange);
|
||||||
NODE_SET_METHOD(exports, "setSignalEventCallback", _SetSignalEventCallback);
|
NODE_SET_METHOD(exports, "setSignalEventCallback", _SetSignalEventCallback);
|
||||||
NODE_SET_METHOD(exports, "validateNodeConfig", _ValidateNodeConfig);
|
NODE_SET_METHOD(exports, "validateNodeConfig", _ValidateNodeConfig);
|
||||||
NODE_SET_METHOD(exports, "hashTypedData", _HashTypedData);
|
NODE_SET_METHOD(exports, "hashTypedData", _HashTypedData);
|
||||||
NODE_SET_METHOD(exports, "recover", _Recover);
|
NODE_SET_METHOD(exports, "recover", _Recover);
|
||||||
|
|||||||
@@ -711,11 +711,11 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "nubank/matcher-combinators/3.8.8/matcher-combinators-3.8.8",
|
"path": "nubank/matcher-combinators/3.9.1/matcher-combinators-3.9.1",
|
||||||
"host": "https://repo.clojars.org",
|
"host": "https://repo.clojars.org",
|
||||||
"jar": {
|
"jar": {
|
||||||
"sha1": "4c94bd510f0c18a20191e46dd6becedebc640bbd",
|
"sha1": "f0830a112cae8ee931a90d9f39214a0ed4d44150",
|
||||||
"sha256": "0wpla2hx0s4mda58ndyd8938zmnz1gyhgfr6pzfphy27xfbvsssl"
|
"sha256": "1rjcgqhms84xmnhs7sqcd3b2dpa37mmzgz2yz33yz2rdb9skl96g"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ net/cgrand/macrovich/0.2.1/macrovich-0.2.1.jar
|
|||||||
net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
|
net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
|
||||||
nrepl/bencode/1.1.0/bencode-1.1.0.jar
|
nrepl/bencode/1.1.0/bencode-1.1.0.jar
|
||||||
nrepl/nrepl/1.0.0/nrepl-1.0.0.jar
|
nrepl/nrepl/1.0.0/nrepl-1.0.0.jar
|
||||||
nubank/matcher-combinators/3.8.8/matcher-combinators-3.8.8.jar
|
nubank/matcher-combinators/3.9.1/matcher-combinators-3.9.1.jar
|
||||||
org/apache/ant/ant/1.10.11/ant-1.10.11.jar
|
org/apache/ant/ant/1.10.11/ant-1.10.11.jar
|
||||||
org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11.jar
|
org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11.jar
|
||||||
org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar
|
org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar
|
||||||
|
|||||||
@@ -4,12 +4,10 @@ androidx.activity:activity:1.2.4
|
|||||||
androidx.activity:activity:1.6.0
|
androidx.activity:activity:1.6.0
|
||||||
androidx.annotation:annotation-experimental:1.1.0
|
androidx.annotation:annotation-experimental:1.1.0
|
||||||
androidx.annotation:annotation-experimental:1.3.0
|
androidx.annotation:annotation-experimental:1.3.0
|
||||||
androidx.annotation:annotation-jvm:1.6.0
|
|
||||||
androidx.annotation:annotation:1.0.0
|
androidx.annotation:annotation:1.0.0
|
||||||
androidx.annotation:annotation:1.1.0
|
androidx.annotation:annotation:1.1.0
|
||||||
androidx.annotation:annotation:1.2.0
|
androidx.annotation:annotation:1.2.0
|
||||||
androidx.annotation:annotation:1.3.0
|
androidx.annotation:annotation:1.3.0
|
||||||
androidx.annotation:annotation:1.6.0
|
|
||||||
androidx.appcompat:appcompat-resources:1.1.0-rc01
|
androidx.appcompat:appcompat-resources:1.1.0-rc01
|
||||||
androidx.appcompat:appcompat-resources:1.2.0
|
androidx.appcompat:appcompat-resources:1.2.0
|
||||||
androidx.appcompat:appcompat-resources:1.3.1
|
androidx.appcompat:appcompat-resources:1.3.1
|
||||||
@@ -47,7 +45,6 @@ androidx.core:core-splashscreen:1.0.0
|
|||||||
androidx.core:core:1.0.0
|
androidx.core:core:1.0.0
|
||||||
androidx.core:core:1.1.0
|
androidx.core:core:1.1.0
|
||||||
androidx.core:core:1.1.0-rc01
|
androidx.core:core:1.1.0-rc01
|
||||||
androidx.core:core:1.2.0
|
|
||||||
androidx.core:core:1.6.0
|
androidx.core:core:1.6.0
|
||||||
androidx.core:core:1.9.0
|
androidx.core:core:1.9.0
|
||||||
androidx.cursoradapter:cursoradapter:1.0.0
|
androidx.cursoradapter:cursoradapter:1.0.0
|
||||||
@@ -70,7 +67,6 @@ androidx.documentfile:documentfile:1.0.0
|
|||||||
androidx.drawerlayout:drawerlayout:1.0.0
|
androidx.drawerlayout:drawerlayout:1.0.0
|
||||||
androidx.emoji2:emoji2-views-helper:1.2.0
|
androidx.emoji2:emoji2-views-helper:1.2.0
|
||||||
androidx.emoji2:emoji2:1.2.0
|
androidx.emoji2:emoji2:1.2.0
|
||||||
androidx.exifinterface:exifinterface:1.0.0
|
|
||||||
androidx.exifinterface:exifinterface:1.1.0-beta01
|
androidx.exifinterface:exifinterface:1.1.0-beta01
|
||||||
androidx.exifinterface:exifinterface:1.1.0-rc01
|
androidx.exifinterface:exifinterface:1.1.0-rc01
|
||||||
androidx.exifinterface:exifinterface:1.2.0
|
androidx.exifinterface:exifinterface:1.2.0
|
||||||
@@ -488,7 +484,6 @@ com.facebook.fresco:nativeimagetranscoder:3.1.3
|
|||||||
com.facebook.fresco:soloader:3.1.3
|
com.facebook.fresco:soloader:3.1.3
|
||||||
com.facebook.fresco:ui-common:3.1.3
|
com.facebook.fresco:ui-common:3.1.3
|
||||||
com.facebook.infer.annotation:infer-annotation:0.18.0
|
com.facebook.infer.annotation:infer-annotation:0.18.0
|
||||||
com.facebook.react:hermes-android:0.73.5
|
|
||||||
com.facebook.react:react-android:0.73.5
|
com.facebook.react:react-android:0.73.5
|
||||||
com.facebook.soloader:annotation:0.10.5
|
com.facebook.soloader:annotation:0.10.5
|
||||||
com.facebook.soloader:nativeloader:0.10.5
|
com.facebook.soloader:nativeloader:0.10.5
|
||||||
@@ -521,15 +516,7 @@ com.googlecode.javaewah:JavaEWAH:1.1.12
|
|||||||
com.googlecode.javaewah:JavaEWAH:1.1.13
|
com.googlecode.javaewah:JavaEWAH:1.1.13
|
||||||
com.googlecode.json-simple:json-simple:1.1
|
com.googlecode.json-simple:json-simple:1.1
|
||||||
com.googlecode.juniversalchardet:juniversalchardet:1.0.3
|
com.googlecode.juniversalchardet:juniversalchardet:1.0.3
|
||||||
com.google.android.datatransport:transport-api:2.2.1
|
|
||||||
com.google.android.datatransport:transport-backend-cct:2.3.3
|
|
||||||
com.google.android.datatransport:transport-runtime:2.2.6
|
|
||||||
com.google.android.gms:play-services-basement:18.0.0
|
|
||||||
com.google.android.gms:play-services-base:18.0.1
|
|
||||||
com.google.android.gms:play-services-mlkit-barcode-scanning:18.0.0
|
|
||||||
com.google.android.gms:play-services-tasks:18.0.1
|
|
||||||
com.google.android.material:material:1.2.0-alpha03
|
com.google.android.material:material:1.2.0-alpha03
|
||||||
com.google.android.odml:image:1.0.0-beta1
|
|
||||||
com.google.android:annotations:4.1.1.4
|
com.google.android:annotations:4.1.1.4
|
||||||
com.google.api.grpc:proto-google-common-protos:1.12.0
|
com.google.api.grpc:proto-google-common-protos:1.12.0
|
||||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||||
@@ -556,10 +543,6 @@ com.google.errorprone:error_prone_annotations:2.3.4
|
|||||||
com.google.errorprone:error_prone_annotations:2.4.0
|
com.google.errorprone:error_prone_annotations:2.4.0
|
||||||
com.google.errorprone:error_prone_annotations:2.9.0
|
com.google.errorprone:error_prone_annotations:2.9.0
|
||||||
com.google.errorprone:error_prone_annotations:2.11.0
|
com.google.errorprone:error_prone_annotations:2.11.0
|
||||||
com.google.firebase:firebase-annotations:16.0.0
|
|
||||||
com.google.firebase:firebase-components:16.1.0
|
|
||||||
com.google.firebase:firebase-encoders-json:17.1.0
|
|
||||||
com.google.firebase:firebase-encoders:16.1.0
|
|
||||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||||
com.google.guava:failureaccess:1.0.1
|
com.google.guava:failureaccess:1.0.1
|
||||||
com.google.guava:guava:17.0
|
com.google.guava:guava:17.0
|
||||||
@@ -575,11 +558,6 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
|||||||
com.google.j2objc:j2objc-annotations:1.1
|
com.google.j2objc:j2objc-annotations:1.1
|
||||||
com.google.j2objc:j2objc-annotations:1.3
|
com.google.j2objc:j2objc-annotations:1.3
|
||||||
com.google.jimfs:jimfs:1.1
|
com.google.jimfs:jimfs:1.1
|
||||||
com.google.mlkit:barcode-scanning-common:17.0.0
|
|
||||||
com.google.mlkit:barcode-scanning:17.0.2
|
|
||||||
com.google.mlkit:common:18.0.0
|
|
||||||
com.google.mlkit:vision-common:17.0.0
|
|
||||||
com.google.mlkit:vision-interfaces:16.0.0
|
|
||||||
com.google.prefab:cli:2.0.0
|
com.google.prefab:cli:2.0.0
|
||||||
com.google.protobuf:protobuf-java-util:3.4.0
|
com.google.protobuf:protobuf-java-util:3.4.0
|
||||||
com.google.protobuf:protobuf-java-util:3.10.0
|
com.google.protobuf:protobuf-java-util:3.10.0
|
||||||
@@ -594,6 +572,7 @@ com.google.testing.platform:core-proto:0.0.8-alpha04
|
|||||||
com.google.testing.platform:core-proto:0.0.8-alpha07
|
com.google.testing.platform:core-proto:0.0.8-alpha07
|
||||||
com.google.testing.platform:core-proto:0.0.8-alpha08
|
com.google.testing.platform:core-proto:0.0.8-alpha08
|
||||||
com.google.test.platform:core-proto:0.0.2-dev
|
com.google.test.platform:core-proto:0.0.2-dev
|
||||||
|
com.google.zxing:core:3.4.1
|
||||||
com.ibm.icu:icu4j:53.1
|
com.ibm.icu:icu4j:53.1
|
||||||
com.intellij:annotations:12.0
|
com.intellij:annotations:12.0
|
||||||
com.parse.bolts:bolts-tasks:1.4.0
|
com.parse.bolts:bolts-tasks:1.4.0
|
||||||
@@ -944,3 +923,6 @@ com.google.errorprone:error_prone_annotations:2.7.1
|
|||||||
com.android.tools.lint:lint-gradle:31.1.1
|
com.android.tools.lint:lint-gradle:31.1.1
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
|
||||||
com.android.tools.build:gradle:3.5.4
|
com.android.tools.build:gradle:3.5.4
|
||||||
|
androidx.annotation:annotation:1.6.0
|
||||||
|
androidx.annotation:annotation-jvm:1.6.0
|
||||||
|
com.facebook.react:hermes-android:0.73.5
|
||||||
@@ -87,7 +87,6 @@ https://dl.google.com/dl/android/maven2/androidx/documentfile/documentfile/1.0.0
|
|||||||
https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/emoji2/emoji2-views-helper/1.2.0/emoji2-views-helper-1.2.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/emoji2/emoji2-views-helper/1.2.0/emoji2-views-helper-1.2.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/emoji2/emoji2/1.2.0/emoji2-1.2.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/emoji2/emoji2/1.2.0/emoji2-1.2.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.0.0/exifinterface-1.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-beta01/exifinterface-1.1.0-beta01.pom
|
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-beta01/exifinterface-1.1.0-beta01.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-rc01/exifinterface-1.1.0-rc01.pom
|
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-rc01/exifinterface-1.1.0-rc01.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.2.0/exifinterface-1.2.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.2.0/exifinterface-1.2.0.pom
|
||||||
@@ -481,26 +480,8 @@ https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.0.4/zipflinger-
|
|||||||
https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.2.1/zipflinger-7.2.1.pom
|
https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.2.1/zipflinger-7.2.1.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.3.1/zipflinger-7.3.1.pom
|
https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.3.1/zipflinger-7.3.1.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/android/zipflinger/8.1.1/zipflinger-8.1.1.pom
|
https://dl.google.com/dl/android/maven2/com/android/zipflinger/8.1.1/zipflinger-8.1.1.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/2.2.1/transport-api-2.2.1.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-backend-cct/2.3.3/transport-backend-cct-2.3.3.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.5/transport-runtime-2.2.5.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.6/transport-runtime-2.2.6.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-basement/18.0.0/play-services-basement-18.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-base/18.0.1/play-services-base-18.0.1.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-mlkit-barcode-scanning/18.0.0/play-services-mlkit-barcode-scanning-18.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-tasks/18.0.1/play-services-tasks-18.0.1.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom
|
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom
|
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/google/android/odml/image/1.0.0-beta1/image-1.0.0-beta1.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-annotations/16.0.0/firebase-annotations-16.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-components/16.1.0/firebase-components-16.1.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders-json/17.1.0/firebase-encoders-json-17.1.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders/16.1.0/firebase-encoders-16.1.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/mlkit/barcode-scanning-common/17.0.0/barcode-scanning-common-17.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/mlkit/barcode-scanning/17.0.2/barcode-scanning-17.0.2.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/mlkit/common/18.0.0/common-18.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/mlkit/vision-common/17.0.0/vision-common-17.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/mlkit/vision-interfaces/16.0.0/vision-interfaces-16.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/com/google/prefab/cli/2.0.0/cli-2.0.0.pom
|
https://dl.google.com/dl/android/maven2/com/google/prefab/cli/2.0.0/cli-2.0.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/google/testing/platform/core-proto/0.0.8-alpha04/core-proto-0.0.8-alpha04.pom
|
https://dl.google.com/dl/android/maven2/com/google/testing/platform/core-proto/0.0.8-alpha04/core-proto-0.0.8-alpha04.pom
|
||||||
https://dl.google.com/dl/android/maven2/com/google/testing/platform/core-proto/0.0.8-alpha07/core-proto-0.0.8-alpha07.pom
|
https://dl.google.com/dl/android/maven2/com/google/testing/platform/core-proto/0.0.8-alpha07/core-proto-0.0.8-alpha07.pom
|
||||||
@@ -523,12 +504,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.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.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.11/commons-codec-1.11.pom
|
||||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.0/commons-codec-1.17.0.pom
|
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.pom
|
||||||
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
|
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
|
||||||
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.16.1/commons-io-2.16.1.pom
|
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.16.1/commons-io-2.16.1.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.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.2/commons-logging-1.2.pom
|
||||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.2/commons-logging-1.3.2.pom
|
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.3/commons-logging-1.3.3.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/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/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
|
https://repo.maven.apache.org/maven2/com/afollestad/material-dialogs/core/0.9.6.0/core-0.9.6.0.pom
|
||||||
@@ -628,22 +609,22 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.1/soloa
|
|||||||
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.5/soloader-0.10.5.pom
|
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.5/soloader-0.10.5.pom
|
||||||
https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.19.0/proguard-annotations-1.19.0.pom
|
https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.19.0/proguard-annotations-1.19.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.17.1/jackson-annotations-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.17.1/jackson-core-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.17.1/jackson-databind-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.11.1/jackson-dataformat-xml-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.11.1/jackson-dataformat-xml-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.11.1/jackson-base-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.11.1/jackson-base-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.17.1/jackson-base-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.17.2/jackson-base-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.11.1/jackson-bom-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.11.1/jackson-bom-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.17.1/jackson-bom-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.17.2/jackson-bom-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.11/jackson-parent-2.11.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.11/jackson-parent-2.11.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.17/jackson-parent-2.17.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.17/jackson-parent-2.17.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.11.1/jackson-modules-base-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.11.1/jackson-modules-base-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.17.1/jackson-modules-base-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.17.2/jackson-modules-base-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.11.1/jackson-module-jaxb-annotations-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.11.1/jackson-module-jaxb-annotations-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.17.1/jackson-module-jaxb-annotations-2.17.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.17.2/jackson-module-jaxb-annotations-2.17.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-kotlin/2.11.1/jackson-module-kotlin-2.11.1.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-kotlin/2.11.1/jackson-module-kotlin-2.11.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom
|
||||||
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/58/oss-parent-58.pom
|
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/58/oss-parent-58.pom
|
||||||
@@ -671,11 +652,11 @@ https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/7/auto-parent-7
|
|||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.3/auto-value-annotations-1.6.3.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.3/auto-value-annotations-1.6.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.10.4/auto-value-annotations-1.10.4.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.11.0/auto-value-annotations-1.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.3/auto-value-parent-1.6.3.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.3/auto-value-parent-1.6.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.7.4/auto-value-parent-1.7.4.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.7.4/auto-value-parent-1.7.4.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.10.4/auto-value-parent-1.10.4.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.11.0/auto-value-parent-1.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.pom
|
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
|
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
|
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
|
||||||
@@ -687,7 +668,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.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.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.9.1/gson-parent-2.9.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.10.1/gson-parent-2.10.1.pom
|
https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.11.0/gson-parent-2.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom
|
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.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.3/gson-2.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.pom
|
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.pom
|
||||||
@@ -696,7 +677,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.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.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.9.1/gson-2.9.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.pom
|
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.0-rc2.pom
|
https://repo.maven.apache.org/maven2/com/google/crypto/tink/tink/1.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/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
|
https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.28.3/dagger-2.28.3.pom
|
||||||
@@ -711,7 +692,8 @@ 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.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.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.11.0/error_prone_annotations-2.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.1/error_prone_annotations-2.27.1.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.29.2/error_prone_annotations-2.29.2.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.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
|
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
|
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
|
||||||
@@ -723,7 +705,8 @@ 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.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.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.11.0/error_prone_parent-2.11.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.1/error_prone_parent-2.27.1.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.29.2/error_prone_parent-2.29.2.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/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
|
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
|
||||||
@@ -740,8 +723,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-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.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/31.1-jre/guava-parent-31.1-jre.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.2.0-jre/guava-parent-33.2.0-jre.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/33.2.1-jre/guava-parent-33.2.1-jre.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/33.2.0-jre/guava-testlib-33.2.0-jre.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/33.2.1-jre/guava-testlib-33.2.1-jre.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/guava/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/22.0/guava-22.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/23.0/guava-23.0.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/guava/23.0/guava-23.0.pom
|
||||||
@@ -754,7 +737,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-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.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/31.1-jre/guava-31.1-jre.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/33.2.0-jre/guava-33.2.0-jre.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/guava/33.2.1-jre/guava-33.2.1-jre.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/1.0/listenablefuture-1.0.pom
|
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/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/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
|
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom
|
||||||
@@ -768,7 +751,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.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.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/3.19.3/protobuf-bom-3.19.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.27.0-RC3/protobuf-bom-4.27.0-RC3.pom
|
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.28.0-RC1/protobuf-bom-4.28.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.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-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
|
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
|
||||||
@@ -785,7 +768,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.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.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/3.19.3/protobuf-java-3.19.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.27.0-RC3/protobuf-java-4.27.0-RC3.pom
|
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.28.0-RC1/protobuf-java-4.28.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-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.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
|
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
|
||||||
@@ -796,9 +779,11 @@ 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.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.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/3.19.3/protobuf-parent-3.19.3.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.27.0-RC3/protobuf-parent-4.27.0-RC3.pom
|
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.28.0-RC1/protobuf-parent-4.28.0-RC1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.2/truth-parent-1.4.2.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.2/truth-1.4.2.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
|
||||||
|
https://repo.maven.apache.org/maven2/com/google/zxing/zxing-parent/3.4.1/zxing-parent-3.4.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
|
https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
|
||||||
https://repo.maven.apache.org/maven2/com/intellij/annotations/12.0/annotations-12.0.pom
|
https://repo.maven.apache.org/maven2/com/intellij/annotations/12.0/annotations-12.0.pom
|
||||||
https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tasks-1.4.0.pom
|
https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tasks-1.4.0.pom
|
||||||
@@ -969,9 +954,11 @@ https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.14.15/byte
|
|||||||
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.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.11.19/byte-buddy-parent-1.11.19.pom
|
||||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.14.15/byte-buddy-parent-1.14.15.pom
|
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.14.15/byte-buddy-parent-1.14.15.pom
|
||||||
|
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.14.17/byte-buddy-parent-1.14.17.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.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.11.19/byte-buddy-1.11.19.pom
|
||||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.14.15/byte-buddy-1.14.15.pom
|
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.14.15/byte-buddy-1.14.15.pom
|
||||||
|
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.14.17/byte-buddy-1.14.17.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-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/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
|
https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1.pom
|
||||||
@@ -1016,6 +1003,7 @@ 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/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/23/apache-23.pom
|
||||||
https://repo.maven.apache.org/maven2/org/apache/apache/31/apache-31.pom
|
https://repo.maven.apache.org/maven2/org/apache/apache/31/apache-31.pom
|
||||||
|
https://repo.maven.apache.org/maven2/org/apache/apache/32/apache-32.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.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
|
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom
|
||||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.20/commons-compress-1.20.pom
|
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.20/commons-compress-1.20.pom
|
||||||
@@ -1035,6 +1023,7 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/common
|
|||||||
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/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/52/commons-parent-52.pom
|
||||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/69/commons-parent-69.pom
|
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/69/commons-parent-69.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/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.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.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
|
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
|
||||||
@@ -1089,7 +1078,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/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.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.12.0/checker-qual-3.12.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.43.0/checker-qual-3.43.0.pom
|
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.45.0/checker-qual-3.45.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/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.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
|
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
|
||||||
@@ -1099,21 +1088,21 @@ https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotation
|
|||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.19/animal-sniffer-annotations-1.19.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.19/animal-sniffer-annotations-1.19.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.23/animal-sniffer-annotations-1.23.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.24/animal-sniffer-annotations-1.24.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.18/animal-sniffer-parent-1.18.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.18/animal-sniffer-parent-1.18.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.19/animal-sniffer-parent-1.19.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.19/animal-sniffer-parent-1.19.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.23/animal-sniffer-parent-1.23.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.24/animal-sniffer-parent-1.24.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/50/mojo-parent-50.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/50/mojo-parent-50.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/74/mojo-parent-74.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/84/mojo-parent-84.pom
|
||||||
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom
|
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom
|
||||||
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
|
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
|
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/5.2.0/easymock-parent-5.2.0.pom
|
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/5.3.0/easymock-parent-5.3.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/easymock/easymock/5.2.0/easymock-5.2.0.pom
|
https://repo.maven.apache.org/maven2/org/easymock/easymock/5.3.0/easymock-5.3.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation-project/2.0.2/angus-activation-project-2.0.2.pom
|
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation-project/2.0.2/angus-activation-project-2.0.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.pom
|
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.2/project-1.0.2.pom
|
https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.2/project-1.0.2.pom
|
||||||
@@ -1144,9 +1133,10 @@ https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.po
|
|||||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.2/txw2-2.3.2.pom
|
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.2/txw2-2.3.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/4.0.5/txw2-4.0.5.pom
|
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/4.0.5/txw2-4.0.5.pom
|
||||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
|
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
|
||||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.pom
|
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/3.0-rc1/hamcrest-core-3.0-rc1.pom
|
||||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
|
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
|
||||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom
|
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom
|
||||||
|
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/3.0-rc1/hamcrest-3.0-rc1.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.7.4.201502262128/org.jacoco.build-0.7.4.201502262128.pom
|
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.7.4.201502262128/org.jacoco.build-0.7.4.201502262128.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.12/org.jacoco.build-0.8.12.pom
|
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.12/org.jacoco.build-0.8.12.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.pom
|
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.pom
|
||||||
@@ -1246,7 +1236,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.6.20/kotlin-reflect-1.6.20.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.22/kotlin-reflect-1.7.22.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.22/kotlin-reflect-1.7.22.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/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC3/kotlin-reflect-2.0.0-RC3.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.20-Beta2/kotlin-reflect-2.0.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.6.20/kotlin-scripting-common-1.6.20.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.22/kotlin-scripting-common-1.7.22.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.22/kotlin-scripting-common-1.7.22.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.8.0/kotlin-scripting-common-1.8.0.pom
|
||||||
@@ -1351,7 +1341,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.20-R
|
|||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.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.0/kotlin-stdlib-1.9.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC3/kotlin-stdlib-2.0.0-RC3.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.20-Beta2/kotlin-stdlib-2.0.20-Beta2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.22/kotlin-tooling-core-1.7.22.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.22/kotlin-tooling-core-1.7.22.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.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-core/1.9.0/kotlin-tooling-core-1.9.0.pom
|
||||||
@@ -1370,7 +1360,8 @@ https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trov
|
|||||||
https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.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/20240303/json-20240303.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.13.1/jsoup-1.13.1.pom
|
https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.13.1/jsoup-1.13.1.pom
|
||||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.11.0-M1/junit-bom-5.11.0-M1.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.0-M2/junit-bom-5.11.0-M2.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.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.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/1.8/stax-ex-1.8.pom
|
||||||
@@ -1381,8 +1372,10 @@ https://repo.maven.apache.org/maven2/org/mockito/mockito-core/5.12.0/mockito-cor
|
|||||||
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/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.2/objenesis-parent-3.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.3/objenesis-parent-3.3.pom
|
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.3/objenesis-parent-3.3.pom
|
||||||
|
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.4/objenesis-parent-3.4.pom
|
||||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.pom
|
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.pom
|
||||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.3/objenesis-3.3.pom
|
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.3/objenesis-3.3.pom
|
||||||
|
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/3.4/objenesis-3.4.pom
|
||||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
|
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
|
||||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom
|
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom
|
||||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom
|
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ com.google.errorprone:error_prone_annotations:2.7.1
|
|||||||
com.android.tools.lint:lint-gradle:31.1.1
|
com.android.tools.lint:lint-gradle:31.1.1
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
|
||||||
com.android.tools.build:gradle:3.5.4
|
com.android.tools.build:gradle:3.5.4
|
||||||
|
androidx.annotation:annotation:1.6.0
|
||||||
|
androidx.annotation:annotation-jvm:1.6.0
|
||||||
com.facebook.react:hermes-android:0.73.5' \
|
com.facebook.react:hermes-android:0.73.5' \
|
||||||
>> "${DEPS_LIST}"
|
>> "${DEPS_LIST}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,10 @@
|
|||||||
buildUrl ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_buildUrl" null,
|
buildUrl ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_buildUrl" null,
|
||||||
statusGoSrcOverride ? lib.getEnvWithDefault "STATUS_GO_SRC_OVERRIDE" null,
|
statusGoSrcOverride ? lib.getEnvWithDefault "STATUS_GO_SRC_OVERRIDE" null,
|
||||||
# If APKs should be split based on architectures
|
# If APKs should be split based on architectures
|
||||||
androidAbiSplit ? lib.getEnvWithDefault "ANDROID_ABI_SPLIT" "false",
|
androidAbiSplit ? lib.getEnvWithDefault "ANDROID_ABI_SPLIT" "true",
|
||||||
# Android architectures to build for
|
# Android architectures to build for
|
||||||
# Used to detect end-to-end builds
|
# Used to detect end-to-end builds
|
||||||
androidAbiInclude ? lib.getEnvWithDefault "ANDROID_ABI_INCLUDE" "armeabi-v7a;arm64-v8a;x86",
|
androidAbiInclude ? lib.getEnvWithDefault "ANDROID_ABI_INCLUDE" "arm64-v8a",
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ in {
|
|||||||
yarn = super.yarn.override { nodejs = super.nodejs-18_x; };
|
yarn = super.yarn.override { nodejs = super.nodejs-18_x; };
|
||||||
openjdk = super.openjdk11_headless;
|
openjdk = super.openjdk11_headless;
|
||||||
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
|
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
|
||||||
versions = ["15.1" "15.2" "15.3"];
|
versions = ["15.1" "15.2" "15.3" "15.4"];
|
||||||
};
|
};
|
||||||
go = super.go_1_21;
|
go = super.go_1_21;
|
||||||
clang = super.clang_15;
|
clang = super.clang_15;
|
||||||
@@ -80,7 +80,7 @@ in {
|
|||||||
androidPkgs = self.androidEnvCustom.compose;
|
androidPkgs = self.androidEnvCustom.compose;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Android environement
|
# Android environment
|
||||||
androidEnvCustom = callPackage ./pkgs/android-sdk { };
|
androidEnvCustom = callPackage ./pkgs/android-sdk { };
|
||||||
androidPkgs = self.androidEnvCustom.pkgs;
|
androidPkgs = self.androidEnvCustom.pkgs;
|
||||||
androidShell = self.androidEnvCustom.shell;
|
androidShell = self.androidEnvCustom.shell;
|
||||||
|
|||||||
@@ -20,9 +20,10 @@
|
|||||||
"@react-native-community/netinfo": "^4.4.0",
|
"@react-native-community/netinfo": "^4.4.0",
|
||||||
"@react-native-community/push-notification-ios": "^1.4.1",
|
"@react-native-community/push-notification-ios": "^1.4.1",
|
||||||
"@react-native-community/slider": "^3.0.0",
|
"@react-native-community/slider": "^3.0.0",
|
||||||
"@walletconnect/react-native-compat": "^2.12.2",
|
"@walletconnect/react-native-compat": "2.11.2",
|
||||||
"@walletconnect/web3wallet": "^1.11.2",
|
"@walletconnect/web3wallet": "1.10.2",
|
||||||
"base-64": "^1.0.0",
|
"base-64": "^1.0.0",
|
||||||
|
"big-integer": "1.6.51",
|
||||||
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status",
|
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status",
|
||||||
"chance": "^1.1.0",
|
"chance": "^1.1.0",
|
||||||
"emojilib": "^2.4.0",
|
"emojilib": "^2.4.0",
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
"react-native-background-timer": "^2.1.1",
|
"react-native-background-timer": "^2.1.1",
|
||||||
"react-native-biometrics": "^3.0.1",
|
"react-native-biometrics": "^3.0.1",
|
||||||
"react-native-blob-util": "^0.13.18",
|
"react-native-blob-util": "^0.13.18",
|
||||||
"react-native-camera-kit": "14.0.0-beta13",
|
"react-native-camera-kit": "git+https://github.com/status-im/react-native-camera-kit.git#refs/tags/v14.0.0-beta15-status-v1",
|
||||||
"react-native-config": "^1.5.0",
|
"react-native-config": "^1.5.0",
|
||||||
"react-native-dialogs": "1.1.2",
|
"react-native-dialogs": "1.1.2",
|
||||||
"react-native-draggable-flatlist": "4.0.1",
|
"react-native-draggable-flatlist": "4.0.1",
|
||||||
@@ -53,7 +54,7 @@
|
|||||||
"react-native-image-crop-picker": "0.40.0",
|
"react-native-image-crop-picker": "0.40.0",
|
||||||
"react-native-image-resizer": "^1.2.3",
|
"react-native-image-resizer": "^1.2.3",
|
||||||
"react-native-keychain": "8.1.2",
|
"react-native-keychain": "8.1.2",
|
||||||
"react-native-linear-gradient": "^2.8.0",
|
"react-native-linear-gradient": "3.0.0-alpha.1",
|
||||||
"react-native-lottie-splash-screen": "^1.0.1",
|
"react-native-lottie-splash-screen": "^1.0.1",
|
||||||
"react-native-navigation": "7.39.0",
|
"react-native-navigation": "7.39.0",
|
||||||
"react-native-orientation-locker": "^1.5.0",
|
"react-native-orientation-locker": "^1.5.0",
|
||||||
@@ -96,7 +97,8 @@
|
|||||||
"jest-silent-reporter": "^0.5.0",
|
"jest-silent-reporter": "^0.5.0",
|
||||||
"nodemon": "^2.0.16",
|
"nodemon": "^2.0.16",
|
||||||
"nyc": "^14.1.1",
|
"nyc": "^14.1.1",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^3.3.3",
|
||||||
|
"prettier-plugin-sort-json": "^4.0.0",
|
||||||
"process": "0.11.10",
|
"process": "0.11.10",
|
||||||
"react-test-renderer": "18.1.0",
|
"react-test-renderer": "18.1.0",
|
||||||
"shadow-cljs": "2.26.2",
|
"shadow-cljs": "2.26.2",
|
||||||
|
|||||||
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 1011 B |
|
After Width: | Height: | Size: 781 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 170 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 424 KiB |
|
After Width: | Height: | Size: 752 KiB |
|
After Width: | Height: | Size: 547 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
@@ -0,0 +1,54 @@
|
|||||||
|
Last updated: 2023-09-22
|
||||||
|
|
||||||
|
Who we are
|
||||||
|
|
||||||
|
Status is developing a set of open source projects that use peer-to-peer technologies to help people transact securely, communicate freely, and organise with confidence. Anyone participating in these projects helps to build technology and tools that empowers people to advance their own sovereign communities.
|
||||||
|
|
||||||
|
Whenever “Status” or “we” or “us” or any similar variation, are used in these terms, we’re referring to Status Research & Development GmbH, a Swiss company with its registered office at Baarerstrasse 10, Zug, Switzerland, and includes its “representatives”, which means Status’ affiliates, directors, officers, employees, agents and any other representatives of Status. For the purposes of these terms, “representatives” also includes Status core contributors without prejudice to the other legal categories mentioned.
|
||||||
|
|
||||||
|
Status does not provide any services, such as financial services, to users of Status Software or any third party. Status is not an intermediary, agent, advisor, or custodian, and does not owe you any fiduciary duty.
|
||||||
|
|
||||||
|
|
||||||
|
Status Software
|
||||||
|
|
||||||
|
At Status, we strive to develop open source software that can serve as a secure communication tool that helps to uphold human rights. Status Software is specifically designed to facilitate the free flow of information, protect the right to private, secure communications and promote the sovereignty of individuals.
|
||||||
|
|
||||||
|
Status Software is composed of a secure messaging tool, a crypto wallet, and a Web 3 browser integrated together. The software developed by Status in this regard is simply called “Status Software” and you can find more details about its development on Status’ GitHub page.
|
||||||
|
|
||||||
|
|
||||||
|
Our role in your privacy
|
||||||
|
|
||||||
|
This Privacy Statement applies to you as a user of Status Software.
|
||||||
|
|
||||||
|
Under the relevant data protection legislation, we would be under certain obligations if we process any personal data when you use Status Software. Personal data means all information by which a person can be directly or indirectly identified, in line with the definitions of the General Data Protection Regulation (GDPR), the Swiss Federal Act on Data Protection of June 19, 1992 (DPA) (as amended from time to time) and its ordinances, and other relevant legislation on the protection of personal data. When we refer to privacy legislation in this Privacy Statement, we mean GDPR and all such relevant legislation.
|
||||||
|
|
||||||
|
However, since we do not collect or process any of your personal data when you use Status Software, we have decided to inform you of the following instead:
|
||||||
|
|
||||||
|
- Ethereum is a public blockchain:
|
||||||
|
Ethereum is the community-run technology powering the cryptocurrency ether (ETH) and thousands of decentralized applications (DApps). Status Software provides a mobile portal and streamlined access to Ethereum’s growing ecosystem of decentralized applications.
|
||||||
|
|
||||||
|
The Ethereum public network is accessible to anyone in the world with an internet connection. Anyone can read or create transactions on a public blockchain and validate the transactions being executed. Therefore, information you share on the Ethereum blockchain is public, whether or not you use Status Software.
|
||||||
|
|
||||||
|
You will also be able to create (and join) open and public communities on Status Software that are accessible to other users. We note that content in these open and public communities will be accessible to all other users of Status Software. Nonetheless, all content will still be protected by the same end-to-end encryption utilised in Status Software.
|
||||||
|
|
||||||
|
Ethereum Name Service (ENS) allows Ethereum addresses to be replaced by custom text-based names. Anyone can register a stateofus.eth username by staking the required Status Network Tokens (SNT) from within the profile tab on Status Software. When you register an ENS name with a given wallet address, that address becomes associated with the username, reducing the privacy of that account.
|
||||||
|
|
||||||
|
- Offering secure, private messaging:
|
||||||
|
When generating an account, a randomisation process is started on your own device that generates a key pair. Status does not have visibility of or access to your private keys. You will then be given display name options to choose from (derived from this key pair). Your display name will only be shared if you choose to share it by chatting with Status or other users.
|
||||||
|
|
||||||
|
Within Status Software, you can create a list of trusted contacts based on the chat keys you choose to trust. Your trusted contacts are also stored locally on your own device. This means that Status has no access to your contact list and does not collect or process any personal data in this respect.
|
||||||
|
|
||||||
|
On Status Software, you can exchange messages with other users, including photos and audio messages. Only the recipient of a message can decrypt the message by opening it on their own device. This means that Status can never access any user messages in private chats.
|
||||||
|
|
||||||
|
Messaging on Status Software uses an open source, peer-to-peer protocol with end-to-end encryption and metadata suppression, to protect your messages from third parties (including Status). End-to-end encryption means that only the sender and recipient of a message can read its contents, and no one else. This protocol, known as Waku, relies on a distributed network of nodes instead of a centralised server which means that there is no central party or server from which messages can be intercepted, modified or blocked. Learn more about Waku and how it works on Waku’s website.
|
||||||
|
|
||||||
|
- A quick bite on cookies:
|
||||||
|
We do not set any cookies for the use of Status Software. However, the Web 3.0 browser embedded within Status Software technically supports the use of cookies set by third party websites. Status is not responsible for nor is it able to influence whether such cookies are set by such third party websites and you should consult the relevant privacy policies of such third party websites.
|
||||||
|
|
||||||
|
|
||||||
|
Changes to Status Privacy Statement
|
||||||
|
It is unlikely that this Privacy Statement will change because we do not intend to collect or process your personal data, ever. That said, we reserve the right to modify or replace any part of this Privacy Statement at any time and in our sole discretion.
|
||||||
|
|
||||||
|
If you have any questions about the Status Software Privacy Statement, please contact us at legal@status.im or through the appropriate means of communication indicated on Status’ website.
|
||||||
|
|
||||||
|
This document is CC-BY-SA.
|
||||||
@@ -38,7 +38,7 @@ You not only release Status’ liability on a number of items, but also agree th
|
|||||||
|
|
||||||
- Arbitration
|
- Arbitration
|
||||||
If a dispute arises between you and Status, we will seek to first solve it amicably with you before proceeding to the use of an arbitration administered by the Swiss Chambers’ Arbitration Institution.
|
If a dispute arises between you and Status, we will seek to first solve it amicably with you before proceeding to the use of an arbitration administered by the Swiss Chambers’ Arbitration Institution.
|
||||||
|
|
||||||
|
|
||||||
2. About Status Software
|
2. About Status Software
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ Within Messaging, you will also be able to participate in Status Community Space
|
|||||||
2.1.2 Web 3 browser
|
2.1.2 Web 3 browser
|
||||||
|
|
||||||
Status Software also includes a Web 3 browser through which you may access and interact with Web 3, exchanges, marketplaces, games and more. We will refer to the Web 3 browser in these terms as the “Web 3 Browser”.
|
Status Software also includes a Web 3 browser through which you may access and interact with Web 3, exchanges, marketplaces, games and more. We will refer to the Web 3 browser in these terms as the “Web 3 Browser”.
|
||||||
|
|
||||||
|
|
||||||
3. Privacy
|
3. Privacy
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ If you use third party services offered through Status Software, your privacy ma
|
|||||||
|
|
||||||
|
|
||||||
Learn more about how we protect your data on Status Software by reading the Status Privacy Statement and relevant security page on the Status website.
|
Learn more about how we protect your data on Status Software by reading the Status Privacy Statement and relevant security page on the Status website.
|
||||||
|
|
||||||
|
|
||||||
4. Using third party services and interacting with Web 3
|
4. Using third party services and interacting with Web 3
|
||||||
|
|
||||||
@@ -114,19 +114,19 @@ You are solely responsible for your use of Third Party Services and your interac
|
|||||||
In principle, Status does not provide any advice, recommendation, support or endorse Third Party Services you may use or any aspect of Web 3 that you may interact with through Status Software. Their integration or availability through Status Software does not imply any support or endorsement by Status. Status may also receive a fee from certain third parties who provide the Third Party Services.
|
In principle, Status does not provide any advice, recommendation, support or endorse Third Party Services you may use or any aspect of Web 3 that you may interact with through Status Software. Their integration or availability through Status Software does not imply any support or endorsement by Status. Status may also receive a fee from certain third parties who provide the Third Party Services.
|
||||||
|
|
||||||
Please also note that Status participates in the development of other open source projects that utilise peer-to-peer technologies, which you can find more details about on Status’ GitHub page.
|
Please also note that Status participates in the development of other open source projects that utilise peer-to-peer technologies, which you can find more details about on Status’ GitHub page.
|
||||||
|
|
||||||
|
|
||||||
5. Nodes
|
5. Nodes
|
||||||
|
|
||||||
The use of Status Software on your device will turn it into a node that supports the Waku network.
|
The use of Status Software on your device will turn it into a node that supports the Waku network.
|
||||||
|
|
||||||
In general, by participating in or interacting with Web 3 networks, you may choose or be required to operate a node or perform other functions in support of such a network. Status is not responsible for the operation or functioning of such nodes.
|
In general, by participating in or interacting with Web 3 networks, you may choose or be required to operate a node or perform other functions in support of such a network. Status is not responsible for the operation or functioning of such nodes.
|
||||||
|
|
||||||
|
|
||||||
6. Security
|
6. Security
|
||||||
|
|
||||||
Although security is a top priority for us and many functions of Status Software are privacy-mode by default, we cannot guarantee the full security of Status Software and we are not responsible for alerting you to potential security risks. We intend to continuously update the security measures of Status Software and we will from time to time post updates on the security of Status Software through our communication channels.
|
Although security is a top priority for us and many functions of Status Software are privacy-mode by default, we cannot guarantee the full security of Status Software and we are not responsible for alerting you to potential security risks. We intend to continuously update the security measures of Status Software and we will from time to time post updates on the security of Status Software through our communication channels.
|
||||||
|
|
||||||
|
|
||||||
7. Content
|
7. Content
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ You acknowledge that Status has no means of monitoring, moderating, removing, mo
|
|||||||
1. could be offensive, indecent, or otherwise objectionable;
|
1. could be offensive, indecent, or otherwise objectionable;
|
||||||
2. contains technical inaccuracies, typographical mistakes, and other errors; or
|
2. contains technical inaccuracies, typographical mistakes, and other errors; or
|
||||||
3. could violate others’ rights, including but not limited to privacy, publicity, intellectual property, or other proprietary rights.
|
3. could violate others’ rights, including but not limited to privacy, publicity, intellectual property, or other proprietary rights.
|
||||||
|
|
||||||
|
|
||||||
8. Acceptable use of Status software
|
8. Acceptable use of Status software
|
||||||
|
|
||||||
@@ -167,12 +167,12 @@ You shall not, nor try to, encourage or assist others using Status Software to:
|
|||||||
12. engage in any activity through Status Software that may be in violation of applicable law, rules or regulations in your jurisdiction;
|
12. engage in any activity through Status Software that may be in violation of applicable law, rules or regulations in your jurisdiction;
|
||||||
13. interfere, disrupt, negatively affect, or inhibit other users from their use of Status Software; or
|
13. interfere, disrupt, negatively affect, or inhibit other users from their use of Status Software; or
|
||||||
14. engage in any attack, hack, denial-of-service attack, interference, or exploit of any smart contract in connection with use of Status Software.
|
14. engage in any attack, hack, denial-of-service attack, interference, or exploit of any smart contract in connection with use of Status Software.
|
||||||
|
|
||||||
|
|
||||||
9. Fees
|
9. Fees
|
||||||
|
|
||||||
When you use Status Software to interact with Third Party Services or Web 3, you may incur costs and may have to pay various fees, such as service fees, transfer fees, transaction fees, swap fees, bridge fees or network fees. You will be solely liable for any such fees, costs and expenses. Status has no control over and is unable to influence these fees in any manner.
|
When you use Status Software to interact with Third Party Services or Web 3, you may incur costs and may have to pay various fees, such as service fees, transfer fees, transaction fees, swap fees, bridge fees or network fees. You will be solely liable for any such fees, costs and expenses. Status has no control over and is unable to influence these fees in any manner.
|
||||||
|
|
||||||
|
|
||||||
10. Intellectual property and branding
|
10. Intellectual property and branding
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ Status (and its affiliates as the case may be) owns all the rights to Status bra
|
|||||||
We love to see creative work from the Status community, but please let us know in advance and in writing if you want to use trademarks, logos, or graphics or modify them from our standard colours and designs. If you write articles, blogs, create websites, or talk about Status, please make sure it is clear that you are not speaking for, on behalf of, or under endorsement by Status.
|
We love to see creative work from the Status community, but please let us know in advance and in writing if you want to use trademarks, logos, or graphics or modify them from our standard colours and designs. If you write articles, blogs, create websites, or talk about Status, please make sure it is clear that you are not speaking for, on behalf of, or under endorsement by Status.
|
||||||
|
|
||||||
To request permission to use our copyrighted material or trademarks or any other intellectual property, such as logos, please contact: marketing@status.im. If we grant you permission, you must follow our guidelines and instructions for using our intellectual property.
|
To request permission to use our copyrighted material or trademarks or any other intellectual property, such as logos, please contact: marketing@status.im. If we grant you permission, you must follow our guidelines and instructions for using our intellectual property.
|
||||||
|
|
||||||
|
|
||||||
11. Risks
|
11. Risks
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ With Status Software, you can interact with and transact in Digital Assets and t
|
|||||||
You acknowledge that there may be legal and regulatory implications applicable to you while using Status Software and interacting with Web 3 and that may also adversely impact your use of Status Software.
|
You acknowledge that there may be legal and regulatory implications applicable to you while using Status Software and interacting with Web 3 and that may also adversely impact your use of Status Software.
|
||||||
|
|
||||||
You are solely responsible for evaluating the legal and regulatory implications and taking appropriate actions, which could include obtaining any necessary licences, permits or approvals. Additionally, you are solely responsible for any tax implications, such as the payment of any taxes, resulting from your activities conducted through Status Software, including any transactions in Digital Assets.
|
You are solely responsible for evaluating the legal and regulatory implications and taking appropriate actions, which could include obtaining any necessary licences, permits or approvals. Additionally, you are solely responsible for any tax implications, such as the payment of any taxes, resulting from your activities conducted through Status Software, including any transactions in Digital Assets.
|
||||||
|
|
||||||
|
|
||||||
12. Disclaimers
|
12. Disclaimers
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@ Status Software is provided on an “as is” basis. Status does not make any ex
|
|||||||
4. regarding the value, utility or legality of any Digital Asset;
|
4. regarding the value, utility or legality of any Digital Asset;
|
||||||
5. regarding the completeness, accuracy, legality, utility, suitability, functionality, security or availability of any smart contract that you may interact with or deploy; or
|
5. regarding the completeness, accuracy, legality, utility, suitability, functionality, security or availability of any smart contract that you may interact with or deploy; or
|
||||||
6. regarding the completeness, accuracy, legality, utility, reliability, suitability or availability of any user content.
|
6. regarding the completeness, accuracy, legality, utility, reliability, suitability or availability of any user content.
|
||||||
|
|
||||||
|
|
||||||
13. Releases you should read closely
|
13. Releases you should read closely
|
||||||
|
|
||||||
@@ -250,13 +250,13 @@ You release Status from all liability related to any claim, cause of action, con
|
|||||||
10. your content or other users’ content;
|
10. your content or other users’ content;
|
||||||
11. any unauthorised third party activities, including without limitation the use of viruses, phishing, brute forcing, or other means of attack against Status Software; and
|
11. any unauthorised third party activities, including without limitation the use of viruses, phishing, brute forcing, or other means of attack against Status Software; and
|
||||||
12. any risks identified in these terms or any that a reasonable person should have been aware of in relation to using Status Software.
|
12. any risks identified in these terms or any that a reasonable person should have been aware of in relation to using Status Software.
|
||||||
|
|
||||||
|
|
||||||
14. Limitation of liability
|
14. Limitation of liability
|
||||||
|
|
||||||
Status will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these terms, Status, your use of Status Software, particularly where Status has indicated that it is not responsible. This includes without limitation, your use of SNT or other Digital Assets (creating, distributing, transacting in or otherwise) even if Status has been advised of the possibility of such damages.
|
Status will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these terms, Status, your use of Status Software, particularly where Status has indicated that it is not responsible. This includes without limitation, your use of SNT or other Digital Assets (creating, distributing, transacting in or otherwise) even if Status has been advised of the possibility of such damages.
|
||||||
In any event, Status’ aggregate liability for any claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the extent permitted by applicable law.
|
In any event, Status’ aggregate liability for any claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the extent permitted by applicable law.
|
||||||
|
|
||||||
|
|
||||||
15. Indemnity
|
15. Indemnity
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ You shall indemnify and hold harmless Status from and against any and all claims
|
|||||||
5. your harm to or violation of the rights of any third party, including any privacy, intellectual property, publicity, confidentiality, property or any other rights;
|
5. your harm to or violation of the rights of any third party, including any privacy, intellectual property, publicity, confidentiality, property or any other rights;
|
||||||
6. your use of Third Party Services or any aspect of Web 3; or
|
6. your use of Third Party Services or any aspect of Web 3; or
|
||||||
7. any misrepresentation or fraudulent statements made by you.
|
7. any misrepresentation or fraudulent statements made by you.
|
||||||
|
|
||||||
|
|
||||||
16. Restricted jurisdictions
|
16. Restricted jurisdictions
|
||||||
|
|
||||||
@@ -277,7 +277,7 @@ Status is a Swiss company which makes Status Software available through third pa
|
|||||||
You acknowledge that Status Software is not intended for use or distribution in any jurisdiction where such use or distribution of software that is similar or identical to Status Software is prohibited or restricted in any way. Your use of Status Software does not and will not subject Status to such jurisdiction under any circumstance, particularly if there are any prohibitions or restrictions on the use of such software. Status reserves the right to limit the availability of Status Software in any jurisdiction.
|
You acknowledge that Status Software is not intended for use or distribution in any jurisdiction where such use or distribution of software that is similar or identical to Status Software is prohibited or restricted in any way. Your use of Status Software does not and will not subject Status to such jurisdiction under any circumstance, particularly if there are any prohibitions or restrictions on the use of such software. Status reserves the right to limit the availability of Status Software in any jurisdiction.
|
||||||
|
|
||||||
Status does not conduct any business activities (i.e. activities undertaken for the purpose of earning a profit) within the United States of America, District of Columbia, Puerto Rico, the U.S. Virgin Islands, and all other U.S. territories and possessions, as well as all Swiss embargoed countries.
|
Status does not conduct any business activities (i.e. activities undertaken for the purpose of earning a profit) within the United States of America, District of Columbia, Puerto Rico, the U.S. Virgin Islands, and all other U.S. territories and possessions, as well as all Swiss embargoed countries.
|
||||||
|
|
||||||
|
|
||||||
17. Materials provided are solely for informational purposes
|
17. Materials provided are solely for informational purposes
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ Status provides materials and other information through Status Software for info
|
|||||||
You should always conduct your own research and seek independent professional advice if necessary. The materials and other information that Status may provide through Status Software does not constitute financial, legal, tax, or other advice and should not be treated as such.
|
You should always conduct your own research and seek independent professional advice if necessary. The materials and other information that Status may provide through Status Software does not constitute financial, legal, tax, or other advice and should not be treated as such.
|
||||||
|
|
||||||
Additionally, Status is not responsible for any information, content, or services contained on any third party websites accessible or linked through the Status Software. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. Status has no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through Status Software. The terms and conditions, including privacy policies, of such third party websites govern your use of their websites.If you access such third party websites through Status Software, it is at your own risk and you are solely responsible for your activities on such third party websites.
|
Additionally, Status is not responsible for any information, content, or services contained on any third party websites accessible or linked through the Status Software. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. Status has no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through Status Software. The terms and conditions, including privacy policies, of such third party websites govern your use of their websites.If you access such third party websites through Status Software, it is at your own risk and you are solely responsible for your activities on such third party websites.
|
||||||
|
|
||||||
|
|
||||||
18. Governing law and dispute resolution
|
18. Governing law and dispute resolution
|
||||||
|
|
||||||
@@ -305,14 +305,14 @@ If a (potential) dispute arises, you must first use your reasonable efforts to r
|
|||||||
If you and Status are unable to further resolve this dispute within sixty (60) calendar days of Status receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and Status through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.
|
If you and Status are unable to further resolve this dispute within sixty (60) calendar days of Status receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and Status through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.
|
||||||
|
|
||||||
Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against Status.
|
Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against Status.
|
||||||
|
|
||||||
|
|
||||||
19. What happens if you stop using Status Software
|
19. What happens if you stop using Status Software
|
||||||
|
|
||||||
If, at any time, you no longer agree to these terms, you must immediately stop using Status Software and uninstall it from all your devices. You acknowledge that even after uninstalling Status Software from all your devices, messages (including content) you have sent may still remain on the recipient’s device, blockchain transactions you have may still be recorded on the blockchain, and any smart contracts you have deployed to a blockchain may still remain deployed.
|
If, at any time, you no longer agree to these terms, you must immediately stop using Status Software and uninstall it from all your devices. You acknowledge that even after uninstalling Status Software from all your devices, messages (including content) you have sent may still remain on the recipient’s device, blockchain transactions you have may still be recorded on the blockchain, and any smart contracts you have deployed to a blockchain may still remain deployed.
|
||||||
|
|
||||||
Even after you have stopped using Status Software, all provisions of these terms which by their nature should survive termination shall survive termination. These provisions include, but are not limited to, warranty disclaimers, indemnity, limitations of liability, dispute resolution, and governing law.
|
Even after you have stopped using Status Software, all provisions of these terms which by their nature should survive termination shall survive termination. These provisions include, but are not limited to, warranty disclaimers, indemnity, limitations of liability, dispute resolution, and governing law.
|
||||||
|
|
||||||
|
|
||||||
20. General provisions
|
20. General provisions
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ SECRETS_ENV_VARS=(
|
|||||||
'INFURA_TOKEN'
|
'INFURA_TOKEN'
|
||||||
'INFURA_TOKEN_SECRET'
|
'INFURA_TOKEN_SECRET'
|
||||||
'OPENSEA_API_KEY'
|
'OPENSEA_API_KEY'
|
||||||
|
'MIXPANEL_APP_ID'
|
||||||
|
'MIXPANEL_TOKEN'
|
||||||
'POKT_TOKEN'
|
'POKT_TOKEN'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export BUILD_TYPE=debug
|
|||||||
|
|
||||||
# Install the APK on running emulator or android device.
|
# Install the APK on running emulator or android device.
|
||||||
installAndLaunchApp() {
|
installAndLaunchApp() {
|
||||||
adb install -r ./result/app-debug.apk > "${ADB_INSTALL_LOG_FILE}" 2>&1
|
adb install -r ./result/app-arm64-v8a-debug.apk > "${ADB_INSTALL_LOG_FILE}" 2>&1
|
||||||
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
|
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
|
||||||
# connected android devices need this port to be exposed for metro
|
# connected android devices need this port to be exposed for metro
|
||||||
adb reverse "tcp:${RCT_METRO_PORT}" "tcp:${RCT_METRO_PORT}"
|
adb reverse "tcp:${RCT_METRO_PORT}" "tcp:${RCT_METRO_PORT}"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
[cider/piggieback "0.4.1"]
|
[cider/piggieback "0.4.1"]
|
||||||
[org.slf4j/slf4j-nop "2.0.9"]
|
[org.slf4j/slf4j-nop "2.0.9"]
|
||||||
[re-frisk-remote "1.6.0"]
|
[re-frisk-remote "1.6.0"]
|
||||||
[nubank/matcher-combinators "3.8.8"]
|
[nubank/matcher-combinators "3.9.1"]
|
||||||
|
|
||||||
;; Use the same version specified in the Nix dependency.
|
;; Use the same version specified in the Nix dependency.
|
||||||
[clj-kondo/clj-kondo "2024.03.13"]
|
[clj-kondo/clj-kondo "2024.03.13"]
|
||||||
@@ -67,6 +67,10 @@
|
|||||||
:closure-defines
|
:closure-defines
|
||||||
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
||||||
status-im.config/INFURA_TOKEN #shadow/env "INFURA_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/MIXPANEL_APP_ID #shadow/env "MIXPANEL_APP_ID"
|
||||||
|
status-im.config/MIXPANEL_TOKEN #shadow/env "MIXPANEL_TOKEN"
|
||||||
status-im.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
status-im.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
||||||
status-im.config/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
|
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/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
|
||||||
@@ -101,7 +105,11 @@
|
|||||||
{:closure-defines
|
{:closure-defines
|
||||||
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
{status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
||||||
status-im.config/INFURA_TOKEN #shadow/env "INFURA_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/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_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/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_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
|
||||||
@@ -131,7 +139,8 @@
|
|||||||
:output-dir "target/test"
|
:output-dir "target/test"
|
||||||
:optimizations :simple
|
:optimizations :simple
|
||||||
:target :node-test
|
:target :node-test
|
||||||
:dev {:devtools {:preloads [status-im.setup.schema-preload]}}
|
:dev {:devtools {:preloads [status-im.setup.schema-preload
|
||||||
|
status-im.setup.test-preload]}}
|
||||||
;; Uncomment line below to `make test-watch` a specific file
|
;; Uncomment line below to `make test-watch` a specific file
|
||||||
:ns-regexp #shadow/env "SHADOW_NS_REGEXP"
|
:ns-regexp #shadow/env "SHADOW_NS_REGEXP"
|
||||||
:main legacy.status-im.test-runner/main
|
:main legacy.status-im.test-runner/main
|
||||||
@@ -142,6 +151,8 @@
|
|||||||
status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
status-im.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
||||||
status-im.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
status-im.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
||||||
status-im.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
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_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/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_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
|
||||||
|
|||||||
@@ -1,38 +1,277 @@
|
|||||||
(ns keycard.keycard)
|
(ns keycard.keycard
|
||||||
|
(:require
|
||||||
|
["react-native" :as rn]
|
||||||
|
["react-native-status-keycard" :default status-keycard]
|
||||||
|
[react-native.platform :as platform]
|
||||||
|
[taoensso.timbre :as log]
|
||||||
|
[utils.address :as address]))
|
||||||
|
|
||||||
(defprotocol Keycard
|
(defonce event-emitter
|
||||||
(start-nfc [this args])
|
(if platform/ios?
|
||||||
(stop-nfc [this args])
|
(new (.-NativeEventEmitter rn) status-keycard)
|
||||||
(set-nfc-message [this args])
|
(.-DeviceEventEmitter rn)))
|
||||||
(check-nfc-support [this args])
|
|
||||||
(check-nfc-enabled [this args])
|
(defn start-nfc
|
||||||
(open-nfc-settings [this])
|
[{:keys [on-success on-failure prompt-message]}]
|
||||||
(register-card-events [this args])
|
(log/debug "start-nfc")
|
||||||
(set-pairings [this args])
|
(.. status-keycard
|
||||||
(on-card-disconnected [this callback])
|
(startNFC (str prompt-message))
|
||||||
(on-card-connected [this callback])
|
(then on-success)
|
||||||
(remove-event-listener [this event])
|
(catch on-failure)))
|
||||||
(remove-event-listeners [this])
|
|
||||||
(get-application-info [this args])
|
(defn stop-nfc
|
||||||
(factory-reset [this args])
|
[{:keys [on-success on-failure error-message]}]
|
||||||
(install-applet [this args])
|
(log/debug "stop-nfc")
|
||||||
(install-cash-applet [this args])
|
(.. status-keycard
|
||||||
(init-card [this args])
|
(stopNFC (str error-message))
|
||||||
(install-applet-and-init-card [this args])
|
(then on-success)
|
||||||
(pair [this args])
|
(catch on-failure)))
|
||||||
(generate-and-load-key [this args])
|
|
||||||
(unblock-pin [this args])
|
(defn set-nfc-message
|
||||||
(verify-pin [this args])
|
[{:keys [on-success on-failure status-message]}]
|
||||||
(change-pin [this args])
|
(log/debug "set-nfc-message")
|
||||||
(change-puk [this args])
|
(.. status-keycard
|
||||||
(change-pairing [this args])
|
(setNFCMessage (str status-message))
|
||||||
(unpair [this args])
|
(then on-success)
|
||||||
(delete [this args])
|
(catch on-failure)))
|
||||||
(remove-key [this args])
|
|
||||||
(remove-key-with-unpair [this args])
|
(defn check-nfc-support
|
||||||
(export-key [this args])
|
[{:keys [on-success]}]
|
||||||
(unpair-and-delete [this args])
|
(.. status-keycard
|
||||||
(import-keys [this args])
|
nfcIsSupported
|
||||||
(get-keys [this args])
|
(then on-success)))
|
||||||
(sign [this args])
|
|
||||||
(sign-typed-data [this args]))
|
(defn check-nfc-enabled
|
||||||
|
[{:keys [on-success]}]
|
||||||
|
(.. status-keycard
|
||||||
|
nfcIsEnabled
|
||||||
|
(then on-success)))
|
||||||
|
|
||||||
|
(defn open-nfc-settings
|
||||||
|
[]
|
||||||
|
(.openNfcSettings status-keycard))
|
||||||
|
|
||||||
|
(defn remove-event-listeners
|
||||||
|
[]
|
||||||
|
(doseq [event ["keyCardOnConnected" "keyCardOnDisconnected" "keyCardOnNFCUserCancelled"
|
||||||
|
"keyCardOnNFCTimeout"]]
|
||||||
|
(.removeAllListeners ^js event-emitter event)))
|
||||||
|
|
||||||
|
(defn remove-event-listener
|
||||||
|
[^js event]
|
||||||
|
(when event
|
||||||
|
(.remove event)))
|
||||||
|
|
||||||
|
(defn on-card-connected
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnConnected" callback))
|
||||||
|
|
||||||
|
(defn on-card-disconnected
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnDisconnected" callback))
|
||||||
|
|
||||||
|
(defn on-nfc-user-cancelled
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnNFCUserCancelled" callback))
|
||||||
|
|
||||||
|
(defn on-nfc-timeout
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnNFCTimeout" callback))
|
||||||
|
|
||||||
|
(defn on-nfc-enabled
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnNFCEnabled" callback))
|
||||||
|
|
||||||
|
(defn on-nfc-disabled
|
||||||
|
[callback]
|
||||||
|
(.addListener ^js event-emitter "keyCardOnNFCDisabled" callback))
|
||||||
|
|
||||||
|
(defn set-pairings
|
||||||
|
[pairings]
|
||||||
|
(.. status-keycard (setPairings (clj->js (or pairings {})))))
|
||||||
|
|
||||||
|
(defn get-application-info
|
||||||
|
[{:keys [on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(getApplicationInfo)
|
||||||
|
(then (fn [response]
|
||||||
|
(let [info (-> response
|
||||||
|
(js->clj :keywordize-keys true)
|
||||||
|
(update :key-uid address/normalized-hex))]
|
||||||
|
(on-success info))))
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn factory-reset
|
||||||
|
[{:keys [on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(factoryReset)
|
||||||
|
(then (fn [response]
|
||||||
|
(let [info (-> response
|
||||||
|
(js->clj :keywordize-keys true)
|
||||||
|
(update :key-uid address/normalized-hex))]
|
||||||
|
(on-success info))))
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn install-applet
|
||||||
|
[{:keys [on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
installApplet
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn install-cash-applet
|
||||||
|
[{:keys [on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
installCashApplet
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn init-card
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(init pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn install-applet-and-init-card
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(installAppletAndInitCard pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn pair
|
||||||
|
[{:keys [password on-success on-failure]}]
|
||||||
|
(when password
|
||||||
|
(.. status-keycard
|
||||||
|
(pair password)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn generate-and-load-key
|
||||||
|
[{:keys [mnemonic pin on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(generateAndLoadKey mnemonic pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn unblock-pin
|
||||||
|
[{:keys [puk new-pin on-success on-failure]}]
|
||||||
|
(when (and new-pin puk)
|
||||||
|
(.. status-keycard
|
||||||
|
(unblockPin puk new-pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn verify-pin
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(when (not-empty pin)
|
||||||
|
(.. status-keycard
|
||||||
|
(verifyPin pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn change-pin
|
||||||
|
[{:keys [current-pin new-pin on-success on-failure]}]
|
||||||
|
(when (and current-pin new-pin)
|
||||||
|
(.. status-keycard
|
||||||
|
(changePin current-pin new-pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn change-puk
|
||||||
|
[{:keys [pin puk on-success on-failure]}]
|
||||||
|
(when (and pin puk)
|
||||||
|
(.. status-keycard
|
||||||
|
(changePUK pin puk)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn change-pairing
|
||||||
|
[{:keys [pin pairing on-success on-failure]}]
|
||||||
|
(when (and pin pairing)
|
||||||
|
(.. status-keycard
|
||||||
|
(changePairingPassword pin pairing)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn unpair
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(when pin
|
||||||
|
(.. status-keycard
|
||||||
|
(unpair pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn delete
|
||||||
|
[{:keys [on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(delete)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn remove-key
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(removeKey pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn remove-key-with-unpair
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(removeKeyWithUnpair pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn export-key
|
||||||
|
[{:keys [pin path on-success on-failure]}]
|
||||||
|
(.. status-keycard
|
||||||
|
(exportKeyWithPath pin path)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))
|
||||||
|
|
||||||
|
(defn unpair-and-delete
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(when (not-empty pin)
|
||||||
|
(.. status-keycard
|
||||||
|
(unpairAndDelete pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn import-keys
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(when (not-empty pin)
|
||||||
|
(.. status-keycard
|
||||||
|
(importKeys pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn get-keys
|
||||||
|
[{:keys [pin on-success on-failure]}]
|
||||||
|
(when (not-empty pin)
|
||||||
|
(.. status-keycard
|
||||||
|
(getKeys pin)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|
||||||
|
(defn sign
|
||||||
|
[{pin :pin path :path card-hash :hash on-success :on-success on-failure :on-failure}]
|
||||||
|
(when (and pin card-hash)
|
||||||
|
(if path
|
||||||
|
(.. status-keycard
|
||||||
|
(signWithPath pin path card-hash)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))
|
||||||
|
(.. status-keycard
|
||||||
|
(sign pin card-hash)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure)))))
|
||||||
|
|
||||||
|
(defn sign-typed-data
|
||||||
|
[{card-hash :hash on-success :on-success on-failure :on-failure}]
|
||||||
|
(when card-hash
|
||||||
|
(.. status-keycard
|
||||||
|
(signPinless card-hash)
|
||||||
|
(then on-success)
|
||||||
|
(catch on-failure))))
|
||||||
|
|||||||
@@ -1,365 +0,0 @@
|
|||||||
(ns keycard.real-keycard
|
|
||||||
(:require
|
|
||||||
["react-native" :as rn]
|
|
||||||
["react-native-status-keycard" :default status-keycard]
|
|
||||||
[keycard.keycard :as keycard]
|
|
||||||
[react-native.platform :as platform]
|
|
||||||
[taoensso.timbre :as log]
|
|
||||||
[utils.address :as address]))
|
|
||||||
|
|
||||||
(defonce event-emitter
|
|
||||||
(if platform/ios?
|
|
||||||
(new (.-NativeEventEmitter rn) status-keycard)
|
|
||||||
(.-DeviceEventEmitter rn)))
|
|
||||||
|
|
||||||
(defonce active-listeners (atom []))
|
|
||||||
|
|
||||||
(defn start-nfc
|
|
||||||
[{:keys [on-success on-failure prompt-message]}]
|
|
||||||
(log/debug "start-nfc")
|
|
||||||
(.. status-keycard
|
|
||||||
(startNFC (str prompt-message))
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn stop-nfc
|
|
||||||
[{:keys [on-success on-failure error-message]}]
|
|
||||||
(log/debug "stop-nfc")
|
|
||||||
(.. status-keycard
|
|
||||||
(stopNFC (str error-message))
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn set-nfc-message
|
|
||||||
[{:keys [on-success on-failure status-message]}]
|
|
||||||
(log/debug "set-nfc-message")
|
|
||||||
(.. status-keycard
|
|
||||||
(setNFCMessage (str status-message))
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn check-nfc-support
|
|
||||||
[{:keys [on-success]}]
|
|
||||||
(.. status-keycard
|
|
||||||
nfcIsSupported
|
|
||||||
(then on-success)))
|
|
||||||
|
|
||||||
(defn check-nfc-enabled
|
|
||||||
[{:keys [on-success]}]
|
|
||||||
(.. status-keycard
|
|
||||||
nfcIsEnabled
|
|
||||||
(then on-success)))
|
|
||||||
|
|
||||||
(defn open-nfc-settings
|
|
||||||
[]
|
|
||||||
(.openNfcSettings status-keycard))
|
|
||||||
|
|
||||||
(defn remove-event-listeners
|
|
||||||
[]
|
|
||||||
(doseq [event ["keyCardOnConnected" "keyCardOnDisconnected" "keyCardOnNFCUserCancelled"
|
|
||||||
"keyCardOnNFCTimeout"]]
|
|
||||||
(.removeAllListeners ^js event-emitter event)))
|
|
||||||
|
|
||||||
(defn remove-event-listener
|
|
||||||
[^js event]
|
|
||||||
(.remove event))
|
|
||||||
|
|
||||||
(defn on-card-connected
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnConnected" callback))
|
|
||||||
|
|
||||||
(defn on-card-disconnected
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnDisconnected" callback))
|
|
||||||
|
|
||||||
(defn on-nfc-user-cancelled
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnNFCUserCancelled" callback))
|
|
||||||
|
|
||||||
(defn on-nfc-timeout
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnNFCTimeout" callback))
|
|
||||||
|
|
||||||
(defn on-nfc-enabled
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnNFCEnabled" callback))
|
|
||||||
|
|
||||||
(defn on-nfc-disabled
|
|
||||||
[callback]
|
|
||||||
(.addListener ^js event-emitter "keyCardOnNFCDisabled" callback))
|
|
||||||
|
|
||||||
(defn set-pairings
|
|
||||||
[{:keys [pairings]}]
|
|
||||||
(.. status-keycard (setPairings (clj->js (or pairings {})))))
|
|
||||||
|
|
||||||
(defn register-card-events
|
|
||||||
[args]
|
|
||||||
(doseq [listener @active-listeners]
|
|
||||||
(remove-event-listener listener))
|
|
||||||
(reset! active-listeners
|
|
||||||
[(on-card-connected (:on-card-connected args))
|
|
||||||
(on-card-disconnected (:on-card-disconnected args))
|
|
||||||
(on-nfc-user-cancelled (:on-nfc-user-cancelled args))
|
|
||||||
(on-nfc-timeout (:on-nfc-timeout args))
|
|
||||||
(on-nfc-enabled (:on-nfc-enabled args))
|
|
||||||
(on-nfc-disabled (:on-nfc-disabled args))]))
|
|
||||||
|
|
||||||
(defn get-application-info
|
|
||||||
[{:keys [on-success on-failure]}]
|
|
||||||
|
|
||||||
(.. status-keycard
|
|
||||||
(getApplicationInfo)
|
|
||||||
(then (fn [response]
|
|
||||||
(let [info (-> response
|
|
||||||
(js->clj :keywordize-keys true)
|
|
||||||
(update :key-uid address/normalized-hex))]
|
|
||||||
(on-success info))))
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn factory-reset
|
|
||||||
[{:keys [on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(factoryReset)
|
|
||||||
(then (fn [response]
|
|
||||||
(let [info (-> response
|
|
||||||
(js->clj :keywordize-keys true)
|
|
||||||
(update :key-uid address/normalized-hex))]
|
|
||||||
(on-success info))))
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn install-applet
|
|
||||||
[{:keys [on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
installApplet
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn install-cash-applet
|
|
||||||
[{:keys [on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
installCashApplet
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn init-card
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(init pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn install-applet-and-init-card
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(installAppletAndInitCard pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn pair
|
|
||||||
[{:keys [password on-success on-failure]}]
|
|
||||||
(when password
|
|
||||||
(.. status-keycard
|
|
||||||
(pair password)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn generate-and-load-key
|
|
||||||
[{:keys [mnemonic pin on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(generateAndLoadKey mnemonic pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn unblock-pin
|
|
||||||
[{:keys [puk new-pin on-success on-failure]}]
|
|
||||||
(when (and new-pin puk)
|
|
||||||
(.. status-keycard
|
|
||||||
(unblockPin puk new-pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn verify-pin
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(when (not-empty pin)
|
|
||||||
(.. status-keycard
|
|
||||||
(verifyPin pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn change-pin
|
|
||||||
[{:keys [current-pin new-pin on-success on-failure]}]
|
|
||||||
(when (and current-pin new-pin)
|
|
||||||
(.. status-keycard
|
|
||||||
(changePin current-pin new-pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn change-puk
|
|
||||||
[{:keys [pin puk on-success on-failure]}]
|
|
||||||
(when (and pin puk)
|
|
||||||
(.. status-keycard
|
|
||||||
(changePUK pin puk)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn change-pairing
|
|
||||||
[{:keys [pin pairing on-success on-failure]}]
|
|
||||||
(when (and pin pairing)
|
|
||||||
(.. status-keycard
|
|
||||||
(changePairingPassword pin pairing)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn unpair
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(when pin
|
|
||||||
(.. status-keycard
|
|
||||||
(unpair pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn delete
|
|
||||||
[{:keys [on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(delete)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn remove-key
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(removeKey pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn remove-key-with-unpair
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(removeKeyWithUnpair pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn export-key
|
|
||||||
[{:keys [pin path on-success on-failure]}]
|
|
||||||
(.. status-keycard
|
|
||||||
(exportKeyWithPath pin path)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))
|
|
||||||
|
|
||||||
(defn unpair-and-delete
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(when (not-empty pin)
|
|
||||||
(.. status-keycard
|
|
||||||
(unpairAndDelete pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn import-keys
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(when (not-empty pin)
|
|
||||||
(.. status-keycard
|
|
||||||
(importKeys pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn get-keys
|
|
||||||
[{:keys [pin on-success on-failure]}]
|
|
||||||
(when (not-empty pin)
|
|
||||||
(.. status-keycard
|
|
||||||
(getKeys pin)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defn sign
|
|
||||||
[{pin :pin path :path card-hash :hash on-success :on-success on-failure :on-failure}]
|
|
||||||
(when (and pin card-hash)
|
|
||||||
(if path
|
|
||||||
(.. status-keycard
|
|
||||||
(signWithPath pin path card-hash)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))
|
|
||||||
(.. status-keycard
|
|
||||||
(sign pin card-hash)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure)))))
|
|
||||||
|
|
||||||
(defn sign-typed-data
|
|
||||||
[{card-hash :hash on-success :on-success on-failure :on-failure}]
|
|
||||||
(when card-hash
|
|
||||||
(.. status-keycard
|
|
||||||
(signPinless card-hash)
|
|
||||||
(then on-success)
|
|
||||||
(catch on-failure))))
|
|
||||||
|
|
||||||
(defrecord RealKeycard []
|
|
||||||
keycard/Keycard
|
|
||||||
(keycard/start-nfc [_this args]
|
|
||||||
(start-nfc args))
|
|
||||||
(keycard/stop-nfc [_this args]
|
|
||||||
(stop-nfc args))
|
|
||||||
(keycard/set-nfc-message [_this args]
|
|
||||||
(set-nfc-message args))
|
|
||||||
(keycard/check-nfc-support [_this args]
|
|
||||||
(check-nfc-support args))
|
|
||||||
(keycard/check-nfc-enabled [_this args]
|
|
||||||
(check-nfc-enabled args))
|
|
||||||
(keycard/open-nfc-settings [_this]
|
|
||||||
(open-nfc-settings))
|
|
||||||
(keycard/register-card-events [_this args]
|
|
||||||
(register-card-events args))
|
|
||||||
(keycard/on-card-connected [_this callback]
|
|
||||||
(on-card-connected callback))
|
|
||||||
(keycard/on-card-disconnected [_this callback]
|
|
||||||
(on-card-disconnected callback))
|
|
||||||
(keycard/remove-event-listener [_this event]
|
|
||||||
(remove-event-listener event))
|
|
||||||
(keycard/remove-event-listeners [_this]
|
|
||||||
(remove-event-listeners))
|
|
||||||
(keycard/set-pairings [_this args]
|
|
||||||
(set-pairings args))
|
|
||||||
(keycard/get-application-info [_this args]
|
|
||||||
(get-application-info args))
|
|
||||||
(keycard/factory-reset [_this args]
|
|
||||||
(factory-reset args))
|
|
||||||
(keycard/install-applet [_this args]
|
|
||||||
(install-applet args))
|
|
||||||
(keycard/install-cash-applet [_this args]
|
|
||||||
(install-cash-applet args))
|
|
||||||
(keycard/init-card [_this args]
|
|
||||||
(init-card args))
|
|
||||||
(keycard/install-applet-and-init-card [_this args]
|
|
||||||
(install-applet-and-init-card args))
|
|
||||||
(keycard/pair [_this args]
|
|
||||||
(pair args))
|
|
||||||
(keycard/generate-and-load-key [_this args]
|
|
||||||
(generate-and-load-key args))
|
|
||||||
(keycard/unblock-pin [_this args]
|
|
||||||
(unblock-pin args))
|
|
||||||
(keycard/verify-pin [_this args]
|
|
||||||
(verify-pin args))
|
|
||||||
(keycard/change-pin [_this args]
|
|
||||||
(change-pin args))
|
|
||||||
(keycard/change-puk [_this args]
|
|
||||||
(change-puk args))
|
|
||||||
(keycard/change-pairing [_this args]
|
|
||||||
(change-pairing args))
|
|
||||||
(keycard/unpair [_this args]
|
|
||||||
(unpair args))
|
|
||||||
(keycard/delete [_this args]
|
|
||||||
(delete args))
|
|
||||||
(keycard/remove-key [_this args]
|
|
||||||
(remove-key args))
|
|
||||||
(keycard/remove-key-with-unpair [_this args]
|
|
||||||
(remove-key-with-unpair args))
|
|
||||||
(keycard/export-key [_this args]
|
|
||||||
(export-key args))
|
|
||||||
(keycard/unpair-and-delete [_this args]
|
|
||||||
(unpair-and-delete args))
|
|
||||||
(keycard/import-keys [_this args]
|
|
||||||
(import-keys args))
|
|
||||||
(keycard/get-keys [_this args]
|
|
||||||
(get-keys args))
|
|
||||||
(keycard/sign [_this args]
|
|
||||||
(sign args))
|
|
||||||
(keycard/sign-typed-data [_this args]
|
|
||||||
(sign-typed-data args)))
|
|
||||||
@@ -38,10 +38,12 @@
|
|||||||
:always
|
:always
|
||||||
(update :contacts conj (:id member))))
|
(update :contacts conj (:id member))))
|
||||||
|
|
||||||
|
(defn community-chat-id->channel-id [chat-id] (subs chat-id constants/community-id-length))
|
||||||
|
|
||||||
(defn decode-chat-id
|
(defn decode-chat-id
|
||||||
[chat-id]
|
[chat-id]
|
||||||
(let [community-id (subs chat-id 0 constants/community-id-length)
|
(let [community-id (subs chat-id 0 constants/community-id-length)
|
||||||
channel-id (subs chat-id constants/community-id-length)]
|
channel-id (community-chat-id->channel-id chat-id)]
|
||||||
{:community-id community-id
|
{:community-id community-id
|
||||||
:channel-id channel-id}))
|
:channel-id channel-id}))
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
(ns legacy.status-im.data-store.communities
|
(ns legacy.status-im.data-store.communities
|
||||||
(:require
|
(:require
|
||||||
[clojure.set :as set]
|
[clojure.set :as set]
|
||||||
[clojure.walk :as walk]
|
[status-im.constants :as constants]
|
||||||
[status-im.constants :as constants]))
|
[utils.transforms :as transforms]))
|
||||||
|
|
||||||
(defn <-revealed-accounts-rpc
|
(defn <-revealed-accounts-rpc
|
||||||
[accounts]
|
[accounts]
|
||||||
@@ -22,19 +22,26 @@
|
|||||||
(reduce #(assoc %1 (key-fn %2) (<-request-to-join-community-rpc %2)) {} requests))
|
(reduce #(assoc %1 (key-fn %2) (<-request-to-join-community-rpc %2)) {} requests))
|
||||||
|
|
||||||
(defn <-chats-rpc
|
(defn <-chats-rpc
|
||||||
[chats]
|
"This transformation from RPC is optimized differently because there can be
|
||||||
(reduce-kv (fn [acc k v]
|
thousands of members in all chats and we don't want to transform them from JS
|
||||||
(assoc acc
|
to CLJS because they will only be used to list community members or community
|
||||||
(name k)
|
chat members."
|
||||||
(-> v
|
[chats-js]
|
||||||
(assoc :token-gated? (:tokenGated v)
|
(let [chat-key-fn (fn [k]
|
||||||
:can-post? (:canPost v)
|
(case k
|
||||||
:can-view? (:canView v)
|
"tokenGated" :token-gated?
|
||||||
:hide-if-permissions-not-met? (:hideIfPermissionsNotMet v))
|
"canPost" :can-post?
|
||||||
(dissoc :canPost :tokenGated :canView :hideIfPermissionsNotMet)
|
"can-view" :can-view?
|
||||||
(update :members walk/stringify-keys))))
|
"hideIfPermissionsNotMet" :hide-if-permissions-not-met?
|
||||||
{}
|
(keyword k)))
|
||||||
chats))
|
chat-val-fn (fn [k v]
|
||||||
|
(if (= "members" k)
|
||||||
|
v
|
||||||
|
(transforms/js->clj v)))]
|
||||||
|
(transforms/<-js-map
|
||||||
|
chats-js
|
||||||
|
{:val-fn (fn [_ v]
|
||||||
|
(transforms/<-js-map v {:key-fn chat-key-fn :val-fn chat-val-fn}))})))
|
||||||
|
|
||||||
(defn <-categories-rpc
|
(defn <-categories-rpc
|
||||||
[categ]
|
[categ]
|
||||||
@@ -48,49 +55,59 @@
|
|||||||
[token-permission]
|
[token-permission]
|
||||||
(= (:type token-permission) constants/community-token-permission-become-member))
|
(= (:type token-permission) constants/community-token-permission-become-member))
|
||||||
|
|
||||||
|
(defn- rename-community-key
|
||||||
|
[k]
|
||||||
|
(case k
|
||||||
|
"canRequestAccess" :can-request-access?
|
||||||
|
"canManageUsers" :can-manage-users?
|
||||||
|
"canDeleteMessageForEveryone" :can-delete-message-for-everyone?
|
||||||
|
;; This flag is misleading based on its name alone
|
||||||
|
;; because it should not be used to decide if the user
|
||||||
|
;; is *allowed* to join. Allowance is based on token
|
||||||
|
;; permissions. Still, the flag can be used to know
|
||||||
|
;; whether or not the user will have to wait until an
|
||||||
|
;; admin approves a join request.
|
||||||
|
"canJoin" :can-join?
|
||||||
|
"requestedToJoinAt" :requested-to-join-at
|
||||||
|
"isMember" :is-member?
|
||||||
|
"outroMessage" :outro-message
|
||||||
|
"adminSettings" :admin-settings
|
||||||
|
"tokenPermissions" :token-permissions
|
||||||
|
"communityTokensMetadata" :tokens-metadata
|
||||||
|
"introMessage" :intro-message
|
||||||
|
"muteTill" :muted-till
|
||||||
|
"lastOpenedAt" :last-opened-at
|
||||||
|
"joinedAt" :joined-at
|
||||||
|
(keyword k)))
|
||||||
|
|
||||||
(defn <-rpc
|
(defn <-rpc
|
||||||
[c]
|
[c-js]
|
||||||
(-> c
|
(let [community (transforms/<-js-map
|
||||||
(set/rename-keys
|
c-js
|
||||||
{:canRequestAccess :can-request-access?
|
{:key-fn rename-community-key
|
||||||
:canManageUsers :can-manage-users?
|
:val-fn (fn [k v]
|
||||||
:canDeleteMessageForEveryone :can-delete-message-for-everyone?
|
(case k
|
||||||
;; This flag is misleading based on its name alone
|
"members" v
|
||||||
;; because it should not be used to decide if the user
|
"chats" (<-chats-rpc v)
|
||||||
;; is *allowed* to join. Allowance is based on token
|
(transforms/js->clj v)))})]
|
||||||
;; permissions. Still, the flag can be used to know
|
(-> community
|
||||||
;; whether or not the user will have to wait until an
|
(update :admin-settings
|
||||||
;; admin approves a join request.
|
set/rename-keys
|
||||||
:canJoin :can-join?
|
{:pinMessageAllMembersEnabled :pin-message-all-members-enabled?})
|
||||||
:requestedToJoinAt :requested-to-join-at
|
(update :token-permissions seq)
|
||||||
:isMember :is-member?
|
(update :categories <-categories-rpc)
|
||||||
:outroMessage :outro-message
|
(assoc :role-permissions?
|
||||||
:adminSettings :admin-settings
|
(->> community
|
||||||
:tokenPermissions :token-permissions
|
:token-permissions
|
||||||
:communityTokensMetadata :tokens-metadata
|
vals
|
||||||
:introMessage :intro-message
|
(some role-permission?)))
|
||||||
:muteTill :muted-till
|
(assoc :membership-permissions?
|
||||||
:lastOpenedAt :last-opened-at
|
(->> community
|
||||||
:joinedAt :joined-at})
|
:token-permissions
|
||||||
(update :admin-settings
|
vals
|
||||||
set/rename-keys
|
(some membership-permission?)))
|
||||||
{:pinMessageAllMembersEnabled :pin-message-all-members-enabled?})
|
(assoc :token-images
|
||||||
(update :members walk/stringify-keys)
|
(reduce (fn [acc {sym :symbol image :image}]
|
||||||
(update :chats <-chats-rpc)
|
(assoc acc sym image))
|
||||||
(update :token-permissions seq)
|
{}
|
||||||
(update :categories <-categories-rpc)
|
(:tokens-metadata community))))))
|
||||||
(assoc :role-permissions?
|
|
||||||
(->> c
|
|
||||||
:tokenPermissions
|
|
||||||
vals
|
|
||||||
(some role-permission?)))
|
|
||||||
(assoc :membership-permissions?
|
|
||||||
(->> c
|
|
||||||
:tokenPermissions
|
|
||||||
vals
|
|
||||||
(some membership-permission?)))
|
|
||||||
(assoc :token-images
|
|
||||||
(reduce (fn [acc {sym :symbol image :image}]
|
|
||||||
(assoc acc sym image))
|
|
||||||
{}
|
|
||||||
(:communityTokensMetadata c)))))
|
|
||||||
|
|||||||
@@ -11,14 +11,10 @@
|
|||||||
legacy.status-im.fleet.core
|
legacy.status-im.fleet.core
|
||||||
legacy.status-im.group-chats.core
|
legacy.status-im.group-chats.core
|
||||||
legacy.status-im.log-level.core
|
legacy.status-im.log-level.core
|
||||||
legacy.status-im.mailserver.constants
|
|
||||||
[legacy.status-im.mailserver.core :as mailserver]
|
|
||||||
legacy.status-im.mobile-sync-settings.core
|
|
||||||
legacy.status-im.multiaccounts.login.core
|
legacy.status-im.multiaccounts.login.core
|
||||||
legacy.status-im.multiaccounts.logout.core
|
legacy.status-im.multiaccounts.logout.core
|
||||||
[legacy.status-im.multiaccounts.model :as multiaccounts.model]
|
[legacy.status-im.multiaccounts.model :as multiaccounts.model]
|
||||||
legacy.status-im.multiaccounts.update.core
|
legacy.status-im.multiaccounts.update.core
|
||||||
legacy.status-im.network.net-info
|
|
||||||
legacy.status-im.pairing.core
|
legacy.status-im.pairing.core
|
||||||
legacy.status-im.profile.core
|
legacy.status-im.profile.core
|
||||||
legacy.status-im.search.core
|
legacy.status-im.search.core
|
||||||
@@ -26,7 +22,6 @@
|
|||||||
legacy.status-im.ui.components.invite.events
|
legacy.status-im.ui.components.invite.events
|
||||||
[legacy.status-im.ui.components.react :as react]
|
[legacy.status-im.ui.components.react :as react]
|
||||||
legacy.status-im.ui.screens.notifications-settings.events
|
legacy.status-im.ui.screens.notifications-settings.events
|
||||||
legacy.status-im.ui.screens.privacy-and-security-settings.events
|
|
||||||
[legacy.status-im.utils.dimensions :as dimensions]
|
[legacy.status-im.utils.dimensions :as dimensions]
|
||||||
legacy.status-im.utils.logging.core
|
legacy.status-im.utils.logging.core
|
||||||
[legacy.status-im.utils.utils :as utils]
|
[legacy.status-im.utils.utils :as utils]
|
||||||
@@ -107,9 +102,7 @@
|
|||||||
(let [current-theme-type (get-in cofx [:db :profile/profile :appearance])]
|
(let [current-theme-type (get-in cofx [:db :profile/profile :appearance])]
|
||||||
(when (and (multiaccounts.model/logged-in? db)
|
(when (and (multiaccounts.model/logged-in? db)
|
||||||
(= current-theme-type status-im.constants/theme-type-system))
|
(= current-theme-type status-im.constants/theme-type-system))
|
||||||
{:profile.settings/switch-theme-fx
|
{:dispatch [:theme/switch]})))
|
||||||
[(get-in db [:profile/profile :appearance])
|
|
||||||
(:view-id db) true]})))
|
|
||||||
|
|
||||||
(defn- on-biometric-auth-fail
|
(defn- on-biometric-auth-fail
|
||||||
[{:keys [code]}]
|
[{:keys [code]}]
|
||||||
@@ -135,8 +128,8 @@
|
|||||||
(>= (- now app-in-background-since)
|
(>= (- now app-in-background-since)
|
||||||
constants/ms-in-bg-for-require-bioauth))]
|
constants/ms-in-bg-for-require-bioauth))]
|
||||||
(rf/merge cofx
|
(rf/merge cofx
|
||||||
{:db (dissoc db :app-in-background-since)}
|
{:db (dissoc db :app-in-background-since)
|
||||||
(mailserver/process-next-messages-request)
|
:effects.biometric/get-supported-type nil}
|
||||||
(when-not new-account?
|
(when-not new-account?
|
||||||
(universal-links/process-stored-event))
|
(universal-links/process-stored-event))
|
||||||
#(when-let [chat-id (:current-chat-id db)]
|
#(when-let [chat-id (:current-chat-id db)]
|
||||||
|
|||||||
@@ -1,437 +0,0 @@
|
|||||||
(ns ^{:doc "Mailserver events and API"} legacy.status-im.mailserver.core
|
|
||||||
(:require
|
|
||||||
[clojure.string :as string]
|
|
||||||
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
|
|
||||||
[legacy.status-im.node.core :as node]
|
|
||||||
[legacy.status-im.utils.mobile-sync :as mobile-network-utils]
|
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[status-im.common.json-rpc.events :as json-rpc]
|
|
||||||
[status-im.navigation.events :as navigation]
|
|
||||||
[taoensso.timbre :as log]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
;; How do mailserver work ?
|
|
||||||
;;
|
|
||||||
;; - We send a request to the mailserver, we are only interested in the
|
|
||||||
;; messages since `last-request` up to the last seven days
|
|
||||||
;; and the last 24 hours for topics that were just joined
|
|
||||||
;; - The mailserver doesn't directly respond to the request and
|
|
||||||
;; instead we start receiving messages in the filters for the requested
|
|
||||||
;; topics.
|
|
||||||
;; - If the mailserver was not ready when we tried for instance to request
|
|
||||||
;; the history of a topic after joining a chat, the request will be done
|
|
||||||
;; as soon as the mailserver becomes available
|
|
||||||
|
|
||||||
|
|
||||||
(defn connected?
|
|
||||||
[db id]
|
|
||||||
(= (:mailserver/current-id db) id))
|
|
||||||
|
|
||||||
(defn fetch
|
|
||||||
[db id]
|
|
||||||
(get-in db [:mailserver/mailservers (node/current-fleet-key db) id]))
|
|
||||||
|
|
||||||
(defn fetch-current
|
|
||||||
[db]
|
|
||||||
(fetch db (:mailserver/current-id db)))
|
|
||||||
|
|
||||||
(defn preferred-mailserver-id
|
|
||||||
[db]
|
|
||||||
(get-in db [:profile/profile :pinned-mailservers (node/current-fleet-key db)]))
|
|
||||||
|
|
||||||
(defn connection-error-dismissed
|
|
||||||
[db]
|
|
||||||
(get-in db [:mailserver/connection-error-dismissed]))
|
|
||||||
|
|
||||||
(defn mailserver-address->id
|
|
||||||
[db address]
|
|
||||||
(let [current-fleet (node/current-fleet-key db)]
|
|
||||||
(:id (some #(when (= address (:address %))
|
|
||||||
%)
|
|
||||||
(-> db
|
|
||||||
:mailserver/mailservers
|
|
||||||
current-fleet
|
|
||||||
vals)))))
|
|
||||||
|
|
||||||
(rf/defn disconnect-from-mailserver
|
|
||||||
{:events [::disconnect-from-mailserver]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
{:db (-> db
|
|
||||||
(assoc :mailserver/state nil)
|
|
||||||
(dissoc :mailserver/current-request :mailserver/fetching-gaps-in-progress))})
|
|
||||||
|
|
||||||
(defn fetch-use-mailservers?
|
|
||||||
[db]
|
|
||||||
(get-in db [:profile/profile :use-mailservers?]))
|
|
||||||
|
|
||||||
(defonce showing-connection-error-popup? (atom false))
|
|
||||||
|
|
||||||
(defn cancel-connection-popup!
|
|
||||||
[]
|
|
||||||
(reset! showing-connection-error-popup? false)
|
|
||||||
(re-frame/dispatch [:mailserver.ui/dismiss-connection-error true]))
|
|
||||||
|
|
||||||
(re-frame/reg-fx
|
|
||||||
::cancel-connection-popup
|
|
||||||
cancel-connection-popup!)
|
|
||||||
|
|
||||||
(rf/defn show-connection-error!
|
|
||||||
[cofx current-fleet preferred-mailserver]
|
|
||||||
(reset! showing-connection-error-popup? true)
|
|
||||||
{:ui/show-confirmation
|
|
||||||
{:title (i18n/label :t/mailserver-error-title)
|
|
||||||
:content (i18n/label :t/mailserver-error-content)
|
|
||||||
:confirm-button-text (i18n/label :t/mailserver-pick-another)
|
|
||||||
:on-cancel cancel-connection-popup!
|
|
||||||
:on-accept #(do
|
|
||||||
(reset! showing-connection-error-popup? false)
|
|
||||||
(re-frame/dispatch [:mailserver.ui/dismiss-connection-error true])
|
|
||||||
(re-frame/dispatch [:navigate-to :offline-messaging-settings]))
|
|
||||||
:extra-options [{:text (i18n/label :t/mailserver-retry)
|
|
||||||
:onPress #(do
|
|
||||||
(reset! showing-connection-error-popup? false)
|
|
||||||
(re-frame/dispatch
|
|
||||||
[:mailserver.ui/connect-confirmed
|
|
||||||
current-fleet
|
|
||||||
preferred-mailserver]))
|
|
||||||
:style "default"}]}})
|
|
||||||
|
|
||||||
(rf/defn handle-successful-request
|
|
||||||
{:events [::request-success]}
|
|
||||||
[{:keys [db] :as cofx} response-js]
|
|
||||||
{:db (dissoc db :mailserver/current-request)
|
|
||||||
:dispatch [:sanitize-messages-and-process-response response-js]})
|
|
||||||
|
|
||||||
(rf/defn handle-mailserver-not-working
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(let [current-fleet (node/current-fleet-key db)
|
|
||||||
error-dismissed? (connection-error-dismissed db)
|
|
||||||
pinned-mailserver (get-in db [:profile/profile :pinned-mailservers current-fleet])]
|
|
||||||
(when (and pinned-mailserver
|
|
||||||
(not error-dismissed?)
|
|
||||||
(not @showing-connection-error-popup?))
|
|
||||||
(show-connection-error! cofx current-fleet pinned-mailserver))))
|
|
||||||
|
|
||||||
(rf/defn handle-request-error
|
|
||||||
{:events [::request-error]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
{:db (dissoc db :mailserver/current-request)})
|
|
||||||
|
|
||||||
(defn needs-to-fetch-historic-messages?
|
|
||||||
[db]
|
|
||||||
(and
|
|
||||||
(:messenger/started? db)
|
|
||||||
(mobile-network-utils/syncing-allowed? db)
|
|
||||||
(fetch-use-mailservers? db)
|
|
||||||
(not (:mailserver/current-request db))))
|
|
||||||
|
|
||||||
(rf/defn process-next-messages-request
|
|
||||||
{:events [::request-messages]}
|
|
||||||
[{:keys [db]}]
|
|
||||||
(when (needs-to-fetch-historic-messages? db)
|
|
||||||
{:db (assoc db :mailserver/current-request true)
|
|
||||||
:mailserver/request-all-historic-messages nil}))
|
|
||||||
|
|
||||||
(re-frame/reg-fx :mailserver/request-all-historic-messages
|
|
||||||
(fn []
|
|
||||||
(json-rpc/call {:method "wakuext_requestAllHistoricMessagesWithRetries"
|
|
||||||
:params [false]
|
|
||||||
:js-response true
|
|
||||||
:on-success #(do
|
|
||||||
(log/info "fetched historical messages")
|
|
||||||
(re-frame/dispatch [::request-success %]))
|
|
||||||
:on-error #(do
|
|
||||||
(log/error "failed retrieve historical messages" %)
|
|
||||||
(re-frame/dispatch [::request-error]))})))
|
|
||||||
|
|
||||||
(rf/defn handle-mailserver-changed
|
|
||||||
[{:keys [db] :as cofx} ms]
|
|
||||||
(if (seq ms)
|
|
||||||
{:db (assoc db
|
|
||||||
:mailserver/state :connecting
|
|
||||||
:mailserver/current-id (keyword ms))}
|
|
||||||
{:db (assoc db :mailserver/state nil)}))
|
|
||||||
|
|
||||||
(rf/defn handle-mailserver-available
|
|
||||||
[{:keys [db] :as cofx} ms]
|
|
||||||
{::cancel-connection-popup []
|
|
||||||
:db (assoc db
|
|
||||||
:mailserver/state :connected
|
|
||||||
:mailserver/current-id (keyword ms))})
|
|
||||||
|
|
||||||
(rf/defn connected-to-mailserver
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(let [{:keys [address]} (fetch-current db)]
|
|
||||||
(rf/merge
|
|
||||||
cofx
|
|
||||||
{:mailserver/update-mailservers [[address] #(re-frame/dispatch [::request-messages])]})))
|
|
||||||
|
|
||||||
(rf/defn handle-request-success
|
|
||||||
{:events [:mailserver.callback/request-success]}
|
|
||||||
[{{:keys [chats] :as db} :db} {:keys [request-id topics]}]
|
|
||||||
(when (:mailserver/current-request db)
|
|
||||||
{:db (assoc-in db
|
|
||||||
[:mailserver/current-request :request-id]
|
|
||||||
request-id)}))
|
|
||||||
|
|
||||||
(rf/defn toggle-use-mailservers
|
|
||||||
[cofx value]
|
|
||||||
{:json-rpc/call
|
|
||||||
[{:method "wakuext_toggleUseMailservers"
|
|
||||||
:params [value]
|
|
||||||
:on-success #(log/info "successfully toggled use-mailservers" value)
|
|
||||||
:on-failure #(log/error "failed to toggle use-mailserver" value %)}]})
|
|
||||||
|
|
||||||
(rf/defn update-use-mailservers
|
|
||||||
{:events [:mailserver.ui/use-history-switch-pressed]}
|
|
||||||
[cofx use-mailservers?]
|
|
||||||
(rf/merge cofx
|
|
||||||
(multiaccounts.update/optimistic :use-mailservers? use-mailservers?)
|
|
||||||
(toggle-use-mailservers use-mailservers?)
|
|
||||||
(when use-mailservers?
|
|
||||||
(disconnect-from-mailserver))))
|
|
||||||
|
|
||||||
(rf/defn retry-next-messages-request
|
|
||||||
{:events [:mailserver.ui/retry-request-pressed]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (dissoc db :mailserver/request-error)}
|
|
||||||
(process-next-messages-request)))
|
|
||||||
|
|
||||||
(rf/defn show-request-error-popup
|
|
||||||
{:events [:mailserver.ui/request-error-pressed]}
|
|
||||||
[{:keys [db]}]
|
|
||||||
(let [mailserver-error (:mailserver/request-error db)]
|
|
||||||
{:effects.utils/show-confirmation
|
|
||||||
{:title (i18n/label :t/mailserver-request-error-title)
|
|
||||||
:content (i18n/label :t/mailserver-request-error-content
|
|
||||||
{:error mailserver-error})
|
|
||||||
:on-accept #(re-frame/dispatch [:mailserver.ui/retry-request-pressed])
|
|
||||||
:confirm-button-text (i18n/label :t/mailserver-request-retry)}}))
|
|
||||||
|
|
||||||
(def enode-url-regex
|
|
||||||
#"enode://[a-zA-Z0-9]+\@\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b:(\d{1,5})")
|
|
||||||
|
|
||||||
(defn- extract-url-components
|
|
||||||
[address]
|
|
||||||
(rest (re-matches #"enode://(.*)@(.*)" address)))
|
|
||||||
|
|
||||||
(defn valid-enode-url?
|
|
||||||
[address]
|
|
||||||
(re-matches enode-url-regex address))
|
|
||||||
|
|
||||||
(defn build-url
|
|
||||||
[address]
|
|
||||||
(let [[initial host] (extract-url-components address)]
|
|
||||||
(str "enode://" initial "@" host)))
|
|
||||||
|
|
||||||
(rf/defn set-input
|
|
||||||
{:events [:mailserver.ui/input-changed]}
|
|
||||||
[{:keys [db]} input-key value]
|
|
||||||
{:db (update
|
|
||||||
db
|
|
||||||
:mailserver.edit/mailserver
|
|
||||||
assoc
|
|
||||||
input-key
|
|
||||||
{:value value
|
|
||||||
:error (case input-key
|
|
||||||
:id false
|
|
||||||
:name (string/blank? value)
|
|
||||||
:url (not (valid-enode-url? value)))})})
|
|
||||||
|
|
||||||
(defn- address->mailserver
|
|
||||||
[address]
|
|
||||||
(let [[enode url :as response] (extract-url-components address)]
|
|
||||||
{:address (if (seq response)
|
|
||||||
(str "enode://" enode "@" url)
|
|
||||||
address)
|
|
||||||
:custom true}))
|
|
||||||
|
|
||||||
(defn- build
|
|
||||||
[id mailserver-name address]
|
|
||||||
(assoc (address->mailserver address)
|
|
||||||
:id id
|
|
||||||
:name mailserver-name))
|
|
||||||
|
|
||||||
(def default? (comp not :custom fetch))
|
|
||||||
|
|
||||||
(rf/defn edit
|
|
||||||
{:events [:mailserver.ui/custom-mailserver-selected]}
|
|
||||||
[{:keys [db] :as cofx} id]
|
|
||||||
(let [{:keys [id address name]} (fetch db id)
|
|
||||||
url (when address (build-url address))]
|
|
||||||
(rf/merge cofx
|
|
||||||
(set-input :id id)
|
|
||||||
(set-input :url (str url))
|
|
||||||
(set-input :name (str name))
|
|
||||||
(navigation/navigate-to :edit-mailserver nil))))
|
|
||||||
|
|
||||||
(defn mailserver->rpc
|
|
||||||
[mailserver current-fleet]
|
|
||||||
(-> mailserver
|
|
||||||
(assoc :fleet (name current-fleet))
|
|
||||||
(update :id name)))
|
|
||||||
|
|
||||||
(rf/defn upsert
|
|
||||||
{:events [:mailserver.ui/save-pressed]
|
|
||||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
|
||||||
[{{:mailserver.edit/keys [mailserver] :profile/keys [profile] :as db} :db
|
|
||||||
random-id-generator :random-id-generator
|
|
||||||
:as cofx}]
|
|
||||||
|
|
||||||
(let [{:keys [name url id]} mailserver
|
|
||||||
current-fleet (node/current-fleet-key db)]
|
|
||||||
(when (and (not (string/blank? (:value name)))
|
|
||||||
(valid-enode-url? (:value url)))
|
|
||||||
|
|
||||||
(let [mailserver (build
|
|
||||||
(or (:value id)
|
|
||||||
(keyword (string/replace (random-id-generator) "-" "")))
|
|
||||||
(:value name)
|
|
||||||
(:value url))
|
|
||||||
current (connected? db (:id mailserver))]
|
|
||||||
{:db (-> db
|
|
||||||
(dissoc :mailserver.edit/mailserver)
|
|
||||||
(assoc-in [:mailserver/mailservers current-fleet (:id mailserver)]
|
|
||||||
mailserver))
|
|
||||||
:json-rpc/call
|
|
||||||
[{:method "mailservers_addMailserver"
|
|
||||||
:params [(mailserver->rpc mailserver current-fleet)]
|
|
||||||
:on-success (fn []
|
|
||||||
;; we naively logout if the user is connected to the edited mailserver
|
|
||||||
(when current
|
|
||||||
(re-frame/dispatch
|
|
||||||
[:multiaccounts.logout.ui/logout-confirmed]))
|
|
||||||
(log/debug "saved mailserver" id "successfuly"))
|
|
||||||
:on-failure #(log/error "failed to save mailserver" id %)}]
|
|
||||||
:dispatch [:navigate-back]}))))
|
|
||||||
|
|
||||||
(defn can-delete?
|
|
||||||
[db id]
|
|
||||||
(not (or (default? db id)
|
|
||||||
(connected? db id))))
|
|
||||||
|
|
||||||
(rf/defn delete
|
|
||||||
{:events [:mailserver.ui/delete-confirmed]}
|
|
||||||
[{:keys [db] :as cofx} id]
|
|
||||||
(if (can-delete? db id)
|
|
||||||
{:db (-> db
|
|
||||||
(update-in
|
|
||||||
[:mailserver/mailservers (node/current-fleet-key db)]
|
|
||||||
dissoc
|
|
||||||
id)
|
|
||||||
(dissoc :mailserver.edit/mailserver))
|
|
||||||
:json-rpc/call
|
|
||||||
[{:method "mailservers_deleteMailserver"
|
|
||||||
:params [(name id)]
|
|
||||||
:on-success #(log/debug "deleted mailserver" id)
|
|
||||||
:on-failure #(log/error "failed to delete mailserver" id %)}]
|
|
||||||
:dispatch [:navigate-back]}
|
|
||||||
{:dispatch [:navigate-back]}))
|
|
||||||
|
|
||||||
(rf/defn show-connection-confirmation
|
|
||||||
{:events [:mailserver.ui/default-mailserver-selected :mailserver.ui/connect-pressed]}
|
|
||||||
[{:keys [db]} mailserver-id]
|
|
||||||
(let [current-fleet (node/current-fleet-key db)]
|
|
||||||
{:ui/show-confirmation
|
|
||||||
{:title (i18n/label :t/close-app-title)
|
|
||||||
:content
|
|
||||||
(i18n/label :t/connect-mailserver-content
|
|
||||||
{:name (get-in db
|
|
||||||
[:mailserver/mailservers
|
|
||||||
current-fleet mailserver-id :name])})
|
|
||||||
:confirm-button-text (i18n/label :t/close-app-button)
|
|
||||||
:on-accept
|
|
||||||
#(re-frame/dispatch
|
|
||||||
[:mailserver.ui/connect-confirmed current-fleet mailserver-id])
|
|
||||||
:on-cancel nil}}))
|
|
||||||
|
|
||||||
(rf/defn show-delete-confirmation
|
|
||||||
{:events [:mailserver.ui/delete-pressed]}
|
|
||||||
[{:keys [db]} mailserver-id]
|
|
||||||
{:ui/show-confirmation
|
|
||||||
{:title (i18n/label :t/delete-mailserver-title)
|
|
||||||
:content (i18n/label :t/delete-mailserver-are-you-sure)
|
|
||||||
:confirm-button-text (i18n/label :t/delete-mailserver)
|
|
||||||
:on-accept #(re-frame/dispatch
|
|
||||||
[:mailserver.ui/delete-confirmed mailserver-id])}})
|
|
||||||
|
|
||||||
(rf/defn set-url-from-qr
|
|
||||||
{:events [:mailserver.callback/qr-code-scanned]}
|
|
||||||
[cofx url]
|
|
||||||
(assoc (set-input cofx :url url)
|
|
||||||
:dispatch
|
|
||||||
[:navigate-back]))
|
|
||||||
|
|
||||||
(rf/defn dismiss-connection-error
|
|
||||||
{:events [:mailserver.ui/dismiss-connection-error]}
|
|
||||||
[{:keys [db]} new-state]
|
|
||||||
{:db (assoc db :mailserver/connection-error-dismissed new-state)})
|
|
||||||
|
|
||||||
(rf/defn pin-mailserver
|
|
||||||
{:events [:mailserver.ui/connect-confirmed]}
|
|
||||||
[{:keys [db] :as cofx} current-fleet mailserver-id]
|
|
||||||
(let [pinned-mailservers (-> db
|
|
||||||
(get-in [:profile/profile :pinned-mailservers])
|
|
||||||
(assoc current-fleet mailserver-id))]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (assoc db :mailserver/current-id mailserver-id)
|
|
||||||
:json-rpc/call [{:method "wakuext_setPinnedMailservers"
|
|
||||||
:params [pinned-mailservers]
|
|
||||||
:on-success #(log/info "successfully pinned mailserver")
|
|
||||||
:on-error #(log/error "failed to pin mailserver" %)}]}
|
|
||||||
(multiaccounts.update/optimistic :pinned-mailservers pinned-mailservers))))
|
|
||||||
|
|
||||||
(rf/defn unpin
|
|
||||||
{:events [:mailserver.ui/unpin-pressed]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(let [current-fleet (node/current-fleet-key db)
|
|
||||||
pinned-mailservers (-> db
|
|
||||||
(get-in [:profile/profile :pinned-mailservers])
|
|
||||||
(dissoc current-fleet))]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:json-rpc/call [{:method "wakuext_setPinnedMailservers"
|
|
||||||
:params [pinned-mailservers]
|
|
||||||
:on-success #(log/info "successfully unpinned mailserver")
|
|
||||||
:on-error #(log/error "failed to unpin mailserver" %)}]}
|
|
||||||
(multiaccounts.update/optimistic
|
|
||||||
:pinned-mailservers
|
|
||||||
pinned-mailservers)
|
|
||||||
(dismiss-connection-error false))))
|
|
||||||
|
|
||||||
(rf/defn pin
|
|
||||||
{:events [:mailserver.ui/pin-pressed]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(let [current-fleet (node/current-fleet-key db)
|
|
||||||
mailserver-id (:mailserver/current-id db)
|
|
||||||
pinned-mailservers (get-in db [:profile/profile :pinned-mailservers])]
|
|
||||||
(rf/merge cofx
|
|
||||||
(multiaccounts.update/multiaccount-update
|
|
||||||
:pinned-mailservers
|
|
||||||
(assoc pinned-mailservers
|
|
||||||
current-fleet
|
|
||||||
mailserver-id)
|
|
||||||
{})
|
|
||||||
(dismiss-connection-error false))))
|
|
||||||
|
|
||||||
(rf/defn mailserver-ui-add-pressed
|
|
||||||
{:events [:mailserver.ui/add-pressed]}
|
|
||||||
[{:keys [db] :as cofx}]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (dissoc db :mailserver.edit/mailserver)}
|
|
||||||
(navigation/navigate-to :edit-mailserver nil)))
|
|
||||||
|
|
||||||
(defn add-mailservers
|
|
||||||
[db mailservers]
|
|
||||||
(reduce (fn [db {:keys [fleet id name] :as mailserver}]
|
|
||||||
(let [updated-mailserver
|
|
||||||
(-> mailserver
|
|
||||||
(update :id keyword)
|
|
||||||
(assoc :name (if (seq name) name id))
|
|
||||||
(dissoc :fleet))]
|
|
||||||
(assoc-in db
|
|
||||||
[:mailserver/mailservers (keyword fleet) (keyword id)]
|
|
||||||
updated-mailserver)))
|
|
||||||
db
|
|
||||||
mailservers))
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
(ns legacy.status-im.mobile-sync-settings.core
|
|
||||||
(:require
|
|
||||||
[legacy.status-im.mailserver.core :as mailserver]
|
|
||||||
[legacy.status-im.multiaccounts.model :as multiaccounts.model]
|
|
||||||
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
|
|
||||||
[legacy.status-im.utils.mobile-sync :as utils]
|
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[status-im.navigation.events :as navigation]
|
|
||||||
[taoensso.timbre :as log]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(rf/defn sheet-defaults
|
|
||||||
[{:keys [db]}]
|
|
||||||
(let [remember-choice? (get-in db [:profile/profile :remember-syncing-choice?])]
|
|
||||||
{:db (assoc db
|
|
||||||
:mobile-network/remember-choice?
|
|
||||||
(or (nil? remember-choice?)
|
|
||||||
remember-choice?))}))
|
|
||||||
|
|
||||||
(re-frame/reg-event-fx :mobile-network/on-network-status-change
|
|
||||||
(fn [{:keys [db]}]
|
|
||||||
(let [previously-initialized? (get db :network-status/initialized?)
|
|
||||||
logged-in? (multiaccounts.model/logged-in? db)
|
|
||||||
fetch-historic-messages? (mailserver/needs-to-fetch-historic-messages? db)]
|
|
||||||
(if logged-in?
|
|
||||||
{:db (cond-> (-> db
|
|
||||||
(assoc :network-status/initialized? true)
|
|
||||||
(assoc :bottom-sheet/show? false))
|
|
||||||
fetch-historic-messages?
|
|
||||||
(assoc :mailserver/current-request true))
|
|
||||||
:fx [(when fetch-historic-messages?
|
|
||||||
[:mailserver/request-all-historic-messages])
|
|
||||||
[:dispatch [:hide-bottom-sheet]]
|
|
||||||
(when previously-initialized?
|
|
||||||
(let [new-identity-input (get-in db [:contacts/new-identity :input])]
|
|
||||||
[:dispatch [:contacts/set-new-identity {:input new-identity-input}]]))]}
|
|
||||||
{:db (assoc db :network-status/initialized? true)}))))
|
|
||||||
|
|
||||||
(defn apply-settings
|
|
||||||
([sync?] (apply-settings sync? :default))
|
|
||||||
([sync? remember?]
|
|
||||||
(fn [{:keys [db] :as cofx}]
|
|
||||||
(let [network (:network/type db)
|
|
||||||
remember-choice?
|
|
||||||
(if (not= :default remember?)
|
|
||||||
remember?
|
|
||||||
(:mobile-network/remember-choice? db))
|
|
||||||
cellular? (utils/cellular? network)]
|
|
||||||
(log/info "apply mobile network settings"
|
|
||||||
"sunc?" sync?
|
|
||||||
"remember?" remember?
|
|
||||||
"cellular?" cellular?)
|
|
||||||
(rf/merge
|
|
||||||
cofx
|
|
||||||
(multiaccounts.update/multiaccount-update
|
|
||||||
:syncing-on-mobile-network?
|
|
||||||
(boolean sync?)
|
|
||||||
{})
|
|
||||||
(multiaccounts.update/multiaccount-update
|
|
||||||
:remember-syncing-choice?
|
|
||||||
(boolean remember-choice?)
|
|
||||||
{})
|
|
||||||
(when (and cellular? sync?)
|
|
||||||
(mailserver/process-next-messages-request)))))))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-continue-syncing
|
|
||||||
{:events [:mobile-network/continue-syncing]}
|
|
||||||
[cofx]
|
|
||||||
((apply-settings true) cofx))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-stop-syncing
|
|
||||||
{:events [:mobile-network/stop-syncing]}
|
|
||||||
[cofx]
|
|
||||||
((apply-settings false) cofx))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-set-syncing
|
|
||||||
{:events [:mobile-network/set-syncing]}
|
|
||||||
[{:keys [db] :as cofx} syncing?]
|
|
||||||
(let [{:keys [remember-syncing-choice?]} (:profile/profile db)]
|
|
||||||
((apply-settings syncing? remember-syncing-choice?) cofx)))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-ask-on-mobile-network?
|
|
||||||
{:events [:mobile-network/ask-on-mobile-network?]}
|
|
||||||
[{:keys [db] :as cofx} ask?]
|
|
||||||
(let [{:keys [syncing-on-mobile-network?]} (:profile/profile db)]
|
|
||||||
((apply-settings syncing-on-mobile-network? (not ask?)) cofx)))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-restore-defaults
|
|
||||||
{:events [:mobile-network/restore-defaults]}
|
|
||||||
[cofx]
|
|
||||||
((apply-settings false false) cofx))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-remember-choice?
|
|
||||||
{:events [:mobile-network/remember-choice?]}
|
|
||||||
[{:keys [db]} remember-choice?]
|
|
||||||
{:db (assoc db :mobile-network/remember-choice? remember-choice?)})
|
|
||||||
|
|
||||||
(rf/defn mobile-network-navigate-to-settings
|
|
||||||
{:events [:mobile-network/navigate-to-settings]}
|
|
||||||
[cofx]
|
|
||||||
(rf/merge
|
|
||||||
cofx
|
|
||||||
(navigation/hide-bottom-sheet)
|
|
||||||
(navigation/navigate-to :mobile-network-settings nil)))
|
|
||||||
|
|
||||||
(rf/defn mobile-network-show-offline-sheet
|
|
||||||
{:events [:mobile-network/show-offline-sheet]}
|
|
||||||
[cofx]
|
|
||||||
(navigation/hide-bottom-sheet cofx))
|
|
||||||
@@ -14,10 +14,12 @@
|
|||||||
|
|
||||||
(rf/defn initialize-app-db
|
(rf/defn initialize-app-db
|
||||||
[{{:keys [keycard initials-avatar-font-file biometrics]
|
[{{:keys [keycard initials-avatar-font-file biometrics]
|
||||||
:network/keys [type]}
|
:network/keys [type status expensive?]}
|
||||||
:db}]
|
:db}]
|
||||||
{:db (assoc db/app-db
|
{:db (assoc db/app-db
|
||||||
:network/type type
|
:network/type type
|
||||||
|
:network/status status
|
||||||
|
:network/expensive? expensive?
|
||||||
:initials-avatar-font-file initials-avatar-font-file
|
:initials-avatar-font-file initials-avatar-font-file
|
||||||
:keycard (dissoc keycard :secrets :pin :application-info)
|
:keycard (dissoc keycard :secrets :pin :application-info)
|
||||||
:biometrics biometrics
|
:biometrics biometrics
|
||||||
@@ -28,7 +30,7 @@
|
|||||||
[{:keys [db] :as cofx} {:keys [auth-method logout?]}]
|
[{:keys [db] :as cofx} {:keys [auth-method logout?]}]
|
||||||
(let [key-uid (get-in db [:profile/profile :key-uid])]
|
(let [key-uid (get-in db [:profile/profile :key-uid])]
|
||||||
(rf/merge cofx
|
(rf/merge cofx
|
||||||
{:set-root :progress
|
{:dispatch [:init-root :progress]
|
||||||
:effects.shell/reset-state nil
|
:effects.shell/reset-state nil
|
||||||
:hide-popover nil
|
:hide-popover nil
|
||||||
::logout nil
|
::logout nil
|
||||||
|
|||||||
@@ -120,12 +120,3 @@
|
|||||||
{:events [:multiaccounts.ui/switch-backup-enabled]}
|
{:events [:multiaccounts.ui/switch-backup-enabled]}
|
||||||
[cofx enabled?]
|
[cofx enabled?]
|
||||||
(multiaccount-update cofx :backup-enabled? enabled? {}))
|
(multiaccount-update cofx :backup-enabled? enabled? {}))
|
||||||
|
|
||||||
(rf/defn toggle-opensea-nfts-visibility
|
|
||||||
{:events [::toggle-opensea-nfts-visiblity]}
|
|
||||||
[cofx visible?]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (assoc-in (:db cofx) [:profile/profile :opensea-enabled?] visible?)
|
|
||||||
;; need to add fully qualified namespace to counter circular deps
|
|
||||||
:dispatch [:legacy.status-im.wallet.core/fetch-collectibles-collection]}
|
|
||||||
(multiaccount-update :opensea-enabled? visible? {})))
|
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
(ns legacy.status-im.network.net-info
|
|
||||||
(:require
|
|
||||||
["@react-native-community/netinfo" :default net-info]
|
|
||||||
[native-module.core :as native-module]
|
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[taoensso.timbre :as log]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(rf/defn change-network-status
|
|
||||||
[{:keys [db] :as cofx} is-connected?]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (assoc db :network-status (if is-connected? :online :offline))}))
|
|
||||||
|
|
||||||
(rf/defn change-network-type
|
|
||||||
[{:keys [db] :as cofx} network-type expensive?]
|
|
||||||
(rf/merge cofx
|
|
||||||
{:db (assoc db :network/type network-type)
|
|
||||||
:network/notify-status-go [network-type expensive?]
|
|
||||||
:dispatch [:mobile-network/on-network-status-change]}))
|
|
||||||
|
|
||||||
(rf/defn handle-network-info-change
|
|
||||||
{:events [::network-info-changed]}
|
|
||||||
[{:keys [db] :as cofx} {:keys [isConnected type details] :as state}]
|
|
||||||
(let [old-network-status (:network-status db)
|
|
||||||
old-network-type (:network/type db)
|
|
||||||
connectivity-status (if isConnected :online :offline)
|
|
||||||
status-changed? (= connectivity-status old-network-status)
|
|
||||||
type-changed? (= type old-network-type)]
|
|
||||||
(log/debug "[net-info]"
|
|
||||||
"old-network-status" old-network-status
|
|
||||||
"old-network-type" old-network-type
|
|
||||||
"connectivity-status" connectivity-status
|
|
||||||
"type" type
|
|
||||||
"details" details)
|
|
||||||
(rf/merge cofx
|
|
||||||
(when-not status-changed?
|
|
||||||
(change-network-status isConnected))
|
|
||||||
(when-not type-changed?
|
|
||||||
(change-network-type type (:is-connection-expensive details))))))
|
|
||||||
|
|
||||||
(defn add-net-info-listener
|
|
||||||
[]
|
|
||||||
(when net-info
|
|
||||||
(.addEventListener ^js net-info
|
|
||||||
#(re-frame/dispatch [::network-info-changed
|
|
||||||
(js->clj % :keywordize-keys true)]))))
|
|
||||||
|
|
||||||
(re-frame/reg-fx
|
|
||||||
:network/listen-to-network-info
|
|
||||||
(fn []
|
|
||||||
(add-net-info-listener)))
|
|
||||||
|
|
||||||
(re-frame/reg-fx
|
|
||||||
:network/notify-status-go
|
|
||||||
(fn [[network-type expensive?]]
|
|
||||||
(native-module/connection-change network-type expensive?)))
|
|
||||||
@@ -15,9 +15,7 @@
|
|||||||
(reg-root-key-sub :visibility-status-updates :visibility-status-updates)
|
(reg-root-key-sub :visibility-status-updates :visibility-status-updates)
|
||||||
(reg-root-key-sub :fleets/custom-fleets :custom-fleets)
|
(reg-root-key-sub :fleets/custom-fleets :custom-fleets)
|
||||||
(reg-root-key-sub :ui/search :ui/search)
|
(reg-root-key-sub :ui/search :ui/search)
|
||||||
(reg-root-key-sub :network/type :network/type)
|
(reg-root-key-sub :peer-stats/count :peer-stats/count)
|
||||||
(reg-root-key-sub :network-status :network-status)
|
|
||||||
(reg-root-key-sub :peers-count :peers-count)
|
|
||||||
(reg-root-key-sub :peers-summary :peers-summary)
|
(reg-root-key-sub :peers-summary :peers-summary)
|
||||||
(reg-root-key-sub :web3-node-version :web3-node-version)
|
(reg-root-key-sub :web3-node-version :web3-node-version)
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
(ns legacy.status-im.ui.components.connectivity.view
|
(ns legacy.status-im.ui.components.connectivity.view
|
||||||
(:require
|
(:require
|
||||||
[clojure.string :as string]
|
|
||||||
[legacy.status-im.ui.components.animation :as animation]
|
[legacy.status-im.ui.components.animation :as animation]
|
||||||
[legacy.status-im.ui.components.colors :as colors]
|
[legacy.status-im.ui.components.colors :as colors]
|
||||||
[legacy.status-im.ui.components.core :as quo]
|
[legacy.status-im.ui.components.react :as react])
|
||||||
[legacy.status-im.ui.components.list.item :as list.item]
|
(:require-macros [legacy.status-im.utils.views :as views]))
|
||||||
[legacy.status-im.ui.components.react :as react]
|
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[utils.i18n :as i18n])
|
|
||||||
(:require-macros [legacy.status-im.utils.views :as views :refer [defview letsubs]]))
|
|
||||||
|
|
||||||
(defn easing
|
(defn easing
|
||||||
[direction n]
|
[direction n]
|
||||||
@@ -72,112 +67,3 @@
|
|||||||
colors/white)
|
colors/white)
|
||||||
:left
|
:left
|
||||||
(* 0.15 parent-width))}]]]))
|
(* 0.15 parent-width))}]]]))
|
||||||
|
|
||||||
(defview loading-indicator
|
|
||||||
[]
|
|
||||||
(letsubs [fetching? [:mailserver/fetching?]
|
|
||||||
window-width [:dimensions/window-width]]
|
|
||||||
(when fetching?
|
|
||||||
[loading-indicator-anim window-width])))
|
|
||||||
|
|
||||||
(defn hide-sheet-and-dispatch
|
|
||||||
[event]
|
|
||||||
(re-frame/dispatch [:bottom-sheet/hide-old])
|
|
||||||
(re-frame/dispatch event))
|
|
||||||
|
|
||||||
(defview connectivity-sheet
|
|
||||||
[]
|
|
||||||
(letsubs [{:keys [peers node mobile sync]} [:connectivity/state]
|
|
||||||
current-mailserver-name [:mailserver/current-name]
|
|
||||||
peers-count [:peers-count]
|
|
||||||
{:keys [syncing-on-mobile-network?]} [:profile/profile]]
|
|
||||||
[:<>
|
|
||||||
[quo/header {:title (i18n/label :t/connection-status) :border-bottom false}]
|
|
||||||
[quo/list-header (i18n/label :t/peer-to-peer)]
|
|
||||||
(if (= peers :offline)
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/not-connected-to-peers)
|
|
||||||
:accessibility-label "not-connected-to-peers"
|
|
||||||
:subtitle (i18n/label :t/unable-to-send-messages)
|
|
||||||
:subtitle-max-lines 2
|
|
||||||
:theme :negative
|
|
||||||
:icon :main-icons/network}]
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (str (i18n/label :t/connected-to)
|
|
||||||
" " peers-count
|
|
||||||
" " (string/lower-case (i18n/label :t/peers)))
|
|
||||||
:accessibility-label "connected-to-n-peers"
|
|
||||||
:subtitle (i18n/label :t/can-send-messages)
|
|
||||||
:subtitle-max-lines 2
|
|
||||||
:theme :positive
|
|
||||||
:icon :main-icons/network}])
|
|
||||||
[quo/list-header (i18n/label :t/history-nodes)]
|
|
||||||
(cond
|
|
||||||
(#{:error :offline} node)
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/not-connected-nodes)
|
|
||||||
:accessibility-label "not-connected-nodes"
|
|
||||||
:subtitle (i18n/label :t/unable-to-fetch)
|
|
||||||
:theme :negative
|
|
||||||
:icon :main-icons/mailserver}]
|
|
||||||
(= node :disabled)
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/nodes-disabled)
|
|
||||||
:accessibility-label "nodes-disabled"
|
|
||||||
:subtitle (i18n/label :t/unable-to-fetch)
|
|
||||||
:disabled true
|
|
||||||
:icon :main-icons/mailserver}]
|
|
||||||
(and mobile (not sync))
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/waiting-wi-fi)
|
|
||||||
:accessibility-label "waiting-wi-fi"
|
|
||||||
:subtitle (i18n/label :t/unable-to-fetch)
|
|
||||||
:disabled true
|
|
||||||
:icon :main-icons/mailserver}]
|
|
||||||
(= node :connecting)
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/connecting)
|
|
||||||
:accessibility-label "connecting"
|
|
||||||
:subtitle (i18n/label :t/unable-to-fetch)
|
|
||||||
:icon :main-icons/mailserver}]
|
|
||||||
(= node :online)
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (str (i18n/label :t/connected-to) " " current-mailserver-name)
|
|
||||||
:accessibility-label "connected-to-mailserver"
|
|
||||||
:subtitle (i18n/label :t/you-can-fetch)
|
|
||||||
:theme :positive
|
|
||||||
:icon :main-icons/mailserver}])
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/settings)
|
|
||||||
:accessibility-label "settings"
|
|
||||||
:theme :accent
|
|
||||||
:on-press #(hide-sheet-and-dispatch [:navigate-to :legacy-sync-settings])
|
|
||||||
:icon :main-icons/settings}]
|
|
||||||
(when mobile
|
|
||||||
[:<>
|
|
||||||
[react/view
|
|
||||||
{:margin-vertical 8
|
|
||||||
:background-color colors/gray-lighter
|
|
||||||
:height 36
|
|
||||||
:align-items :center
|
|
||||||
:justify-content :center}
|
|
||||||
[react/text {:style {:color colors/gray}} (i18n/label :t/youre-on-mobile-network)]]
|
|
||||||
[list.item/list-item
|
|
||||||
{:title (i18n/label :t/mobile-network-use-mobile)
|
|
||||||
:accessibility-label "mobile-network-use-mobile"
|
|
||||||
:accessory :switch
|
|
||||||
:on-press #(re-frame/dispatch [:mobile-network/set-syncing
|
|
||||||
(not syncing-on-mobile-network?)])
|
|
||||||
:active syncing-on-mobile-network?}]
|
|
||||||
[react/text {:style {:margin-horizontal 16 :margin-bottom 12 :color colors/gray}}
|
|
||||||
(i18n/label :t/status-mobile-descr)]])]))
|
|
||||||
|
|
||||||
(defn get-icon
|
|
||||||
[{:keys [peers node mobile sync]}]
|
|
||||||
(if (or (= peers :offline)
|
|
||||||
(= node :offline)
|
|
||||||
(= node :connecting))
|
|
||||||
:main-icons/offline
|
|
||||||
(if mobile
|
|
||||||
(if sync :main-icons/mobile-sync :main-icons/mobile-sync-off)
|
|
||||||
(when (#{:error :disabled} node) :main-icons/node-offline))))
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
(reagent/as-element
|
(reagent/as-element
|
||||||
(into [react/keyboard-avoiding-view
|
(into [react/keyboard-avoiding-view
|
||||||
(update props
|
(update props
|
||||||
:keyboardVerticalOffset
|
:keyboard-vertical-offset
|
||||||
+
|
+
|
||||||
20
|
20
|
||||||
(if (:ignore-offset props) 44 0))]
|
(if (:ignore-offset props) 44 0))]
|
||||||
|
|||||||
@@ -275,7 +275,7 @@
|
|||||||
(merge (when platform/ios? {:behavior :padding})
|
(merge (when platform/ios? {:behavior :padding})
|
||||||
(if (:ignore-offset props)
|
(if (:ignore-offset props)
|
||||||
props
|
props
|
||||||
(update props :keyboardVerticalOffset + 44 (:status-bar-height @navigation-const))))]
|
(update props :keyboard-vertical-offset + 44 (:status-bar-height @navigation-const))))]
|
||||||
children))
|
children))
|
||||||
|
|
||||||
(defn keyboard-avoiding-view-new
|
(defn keyboard-avoiding-view-new
|
||||||
@@ -284,7 +284,7 @@
|
|||||||
(merge (when platform/ios? {:behavior :padding})
|
(merge (when platform/ios? {:behavior :padding})
|
||||||
(if (:ignore-offset props)
|
(if (:ignore-offset props)
|
||||||
props
|
props
|
||||||
(update props :keyboardVerticalOffset + 44)))]
|
(update props :keyboard-vertical-offset + 44)))]
|
||||||
children))
|
children))
|
||||||
|
|
||||||
(defn scroll-view
|
(defn scroll-view
|
||||||
|
|||||||