Compare commits

..
Author SHA1 Message Date
Richard Ramos 47cc8a5757 test: use debug level by default 2024-01-31 15:59:51 -04:00
380 changed files with 3543 additions and 7056 deletions
+12 -13
View File
@@ -16,19 +16,18 @@
:clj-kondo-config {:level :error} :clj-kondo-config {:level :error}
:cond-else {:level :error} :cond-else {:level :error}
:consistent-alias {:level :error :consistent-alias {:level :error
:aliases {clojure.set set :aliases {clojure.set set
clojure.string string clojure.string string
clojure.walk walk clojure.walk walk
malli.core malli malli.core malli
malli.dev.pretty malli.pretty malli.dev.pretty malli.pretty
malli.dev.virhe malli.virhe malli.dev.virhe malli.virhe
malli.error malli.error malli.error malli.error
malli.generator malli.generator malli.generator malli.generator
malli.transform malli.transform malli.transform malli.transform
malli.util malli.util malli.util malli.util
schema.core schema schema.core schema
status-im.feature-flags ff taoensso.timbre log}}
taoensso.timbre log}}
:deprecated-namespace {:level :warning} :deprecated-namespace {:level :warning}
:docstring-blank {:level :error} :docstring-blank {:level :error}
:equals-true {:level :error} :equals-true {:level :error}
-3
View File
@@ -194,6 +194,3 @@ test/appium/tests/users.py
## git hooks ## git hooks
lefthook.yml lefthook.yml
## build time logs
/logs/*.log
+21 -38
View File
@@ -36,8 +36,6 @@ endif
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
# Default metro port used by scripts/run-android.sh.
export RCT_METRO_PORT ?= 8081
# Fix for ERR_OSSL_EVP_UNSUPPORTED error. # Fix for ERR_OSSL_EVP_UNSUPPORTED error.
export NODE_OPTIONS += --openssl-legacy-provider export NODE_OPTIONS += --openssl-legacy-provider
# The path can be anything, but home is usually safest. # The path can be anything, but home is usually safest.
@@ -46,7 +44,7 @@ export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
# Our custom config is located in nix/nix.conf # Our custom config is located in nix/nix.conf
export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf
# Location of symlinks to derivations that should not be garbage collected # Location of symlinks to derivations that should not be garbage collected
export _NIX_GCROOTS = ./.nix-gcroots export _NIX_GCROOTS = /nix/var/nix/gcroots/per-user/$(USER)/status-mobile
# Defines which variables will be kept for Nix pure shell, use semicolon as divider # Defines which variables will be kept for Nix pure shell, use semicolon as divider
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\ export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\ BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\
@@ -162,12 +160,10 @@ pod-install: export TARGET := ios
pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock
cd ios && pod install; cd -- cd ios && pod install; cd --
FLEETS_FILE := ./resources/config/fleets.json
update-fleets: ##@prepare Download up-to-date JSON file with current fleets state update-fleets: ##@prepare Download up-to-date JSON file with current fleets state
curl -s https://fleets.status.im/ \ curl -s https://fleets.status.im/ \
| sed 's/"warning": "/"warning": "DO NOT EDIT! /' \ | sed 's/"warning": "/"warning": "DO NOT EDIT! /' \
> $(FLEETS_FILE) > resources/config/fleets.json
echo >> $(FLEETS_FILE)
$(KEYSTORE_PATH): export TARGET := keytool $(KEYSTORE_PATH): export TARGET := keytool
$(KEYSTORE_PATH): $(KEYSTORE_PATH):
@@ -216,7 +212,7 @@ 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 BUILD_NUMBER ?= $(TMP_BUILD_NUMBER)
build-android: export ANDROID_ABI_SPLIT ?= false build-android: export ANDROID_ABI_SPLIT ?= false
build-android: export ANDROID_ABI_INCLUDE ?= armeabi-v7a;arm64-v8a;x86 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
@@ -269,7 +265,7 @@ run-clojure: ##@run Watch for and build Clojure changes for mobile
run-metro: export TARGET := clojure run-metro: export TARGET := clojure
run-metro: ##@run Start Metro to build React Native changes run-metro: ##@run Start Metro to build React Native changes
@scripts/run-metro.sh @scripts/start-react-native.sh
run-re-frisk: export TARGET := clojure run-re-frisk: export TARGET := clojure
run-re-frisk: ##@run Start re-frisk server run-re-frisk: ##@run Start re-frisk server
@@ -277,18 +273,22 @@ run-re-frisk: ##@run Start re-frisk server
# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix # TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix
run-android: export TARGET := android run-android: export TARGET := android
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors. # INFO: If it's empty (no devices attached, parsing issues, script error) - for Nix it's the same as not set.
# https://github.com/status-im/status-mobile/issues/18493 run-android: export ANDROID_ABI_INCLUDE ?= $(shell ./scripts/adb_devices_abis.sh)
run-android: export ORG_GRADLE_PROJECT_hermesEnabled := false
run-android: ##@run Build Android APK and start it on the device run-android: ##@run Build Android APK and start it on the device
@scripts/run-android.sh npx react-native run-android --appIdSuffix debug
SIMULATOR=iPhone 13 SIMULATOR=iPhone 13
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded # TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
run-ios: export TARGET := ios run-ios: export TARGET := ios
run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64 run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
run-ios: ##@run Build iOS app and start it in on the simulator run-ios: export XCBeautify=$(shell which xcbeautify) # for react-native-cli to pick this up and to auto format output
@scripts/run-ios.sh "${SIMULATOR}" run-ios: ##@run Build iOS app and start it in a simulator/device
ifneq ("$(SIMULATOR)", "")
npx react-native run-ios --simulator="$(SIMULATOR)"
else
npx react-native run-ios
endif
show-ios-devices: ##@other shows connected ios device and its name show-ios-devices: ##@other shows connected ios device and its name
xcrun xctrace list devices xcrun xctrace list devices
@@ -296,8 +296,11 @@ show-ios-devices: ##@other shows connected ios device and its name
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded # TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
run-ios-device: export TARGET := ios run-ios-device: export TARGET := ios
run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64 run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
run-ios-device: ##@run iOS app and start it on the first connected iPhone run-ios-device: ##@run iOS app and start it on a connected device by its name
@scripts/run-ios-device.sh ifndef DEVICE_NAME
$(error Usage: make run-ios-device DEVICE_NAME=your-device-name)
endif
react-native run-ios --device "$(DEVICE_NAME)"
#-------------- #--------------
# Tests # Tests
@@ -365,20 +368,15 @@ test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connection
"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
test-unit: export SHADOW_NS_REGEXP := ^(?!tests\.integration-test)(?!tests-im\.contract-test).*-test$$ test-unit: export SHADOW_NS_REGEXP := ^(?!status-im\.integration-test).*-test$$
test-unit: ##@test Run unit tests test-unit: ##@test Run unit tests
test-unit: _test-clojure test-unit: _test-clojure
test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js
test-integration: export SHADOW_NS_REGEXP := ^tests\.integration-test.*$$ test-integration: export SHADOW_NS_REGEXP := ^status-im\.integration-test.*$$
test-integration: ##@test Run integration tests test-integration: ##@test Run integration tests
test-integration: _test-clojure test-integration: _test-clojure
test-contract: export SHADOW_OUTPUT_TO := target/contract_test/test.js
test-contract: export SHADOW_NS_REGEXP := ^tests\.contract-test.*$$
test-contract: ##@test Run contract tests
test-contract: _test-clojure
android-test: jsbundle android-test: jsbundle
android-test: export TARGET := android android-test: export TARGET := android
android-test: android-test:
@@ -454,18 +452,3 @@ repl-clojure: ##@repl Start Clojure repl for mobile App
yarn shadow-cljs cljs-repl mobile yarn shadow-cljs cljs-repl mobile
repl-nix: nix-repl ##@repl Start an interactive Nix REPL repl-nix: nix-repl ##@repl Start an interactive Nix REPL
#--------------
# Dev Automation Flows
#--------------
auto-login: export TARGET := default
auto-login: ##@auto runs flow for login or onboarding app on simulator/emulator
maestro test "maestro/create-account-or-login.yaml"
auto-custom: export TARGET := default
auto-custom: ##@auto runs any custom maestro automation flow on simulator/emulator
ifndef FLOW
$(error Usage: make automate FLOW=your-maestro-flow-file.yaml)
endif
maestro test "$(FLOW)"
+1 -1
View File
@@ -1 +1 @@
2.27.0 1.25.0
+14 -13
View File
@@ -267,24 +267,25 @@ android {
dependencies { dependencies {
// The version of react-native is set by the React Native Gradle Plugin // The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android") implementation("com.facebook.react:react-android")
implementation("androidx.core:core-splashscreen:1.0.0") implementation "androidx.core:core-splashscreen:1.0.0"
// we don't use hermes for debug but we need its pom file for release builds
// https://github.com/status-im/status-mobile/pull/18675 if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android") implementation("com.facebook.react:hermes-android")
// FIXME: implementing both hermes & JSC increases bundle size by ~ 2MB } else {
implementation(jscFlavor) implementation jscFlavor
}
// react-native-screens // react-native-screens
implementation("androidx.appcompat:appcompat:1.1.0-rc01") implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02") implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
implementation("androidx.multidex:multidex:2.0.1") // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java implementation 'androidx.multidex:multidex:2.0.1' // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java
implementation project(':react-native-blur') implementation project(':react-native-blur')
implementation project(':react-native-status') implementation project(':react-native-status')
implementation project(':react-native-status-keycard') implementation project(':react-native-status-keycard')
implementation("com.github.status-im:function:0.0.1") implementation 'com.github.status-im:function:0.0.1'
implementation("com.facebook.fresco:fresco:2.5.0") implementation 'com.facebook.fresco:fresco:2.5.0'
implementation("com.facebook.fresco:animated-gif:2.5.0") implementation 'com.facebook.fresco:animated-gif:2.5.0'
implementation("com.squareup.okhttp3:okhttp-tls:4.9.2") implementation "com.squareup.okhttp3:okhttp-tls:4.9.2"
implementation("com.google.prefab:cli:2.0.0") implementation("com.google.prefab:cli:2.0.0")
} }
+1 -3
View File
@@ -57,6 +57,4 @@ newArchEnabled=false
# Use this property to enable or disable the Hermes JS engine. # Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead. # If set to false, you will be using JSC instead.
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors. hermesEnabled=true
# https://github.com/status-im/status-mobile/issues/18493
hermesEnabled=false
+2 -2
View File
@@ -1,11 +1,11 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.8.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()
pipeline { pipeline {
agent { label 'linux && x86_64 && nix-2.19' } agent { label 'linux && x86_64 && nix-2.14' }
options { options {
timestamps() timestamps()
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.8.4'
pipeline { pipeline {
agent { label 'linux' } agent { label 'linux' }
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.8.4'
pipeline { pipeline {
agent { label 'linux' } agent { label 'linux' }
+2 -2
View File
@@ -1,11 +1,11 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.8.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()
pipeline { pipeline {
agent { label 'macos && arm64 && nix-2.19 && xcode-15.1' } agent { label 'macos && arm64 && nix-2.14 && xcode-15.1' }
parameters { parameters {
string( string(
+2 -2
View File
@@ -1,11 +1,11 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.8.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()
pipeline { pipeline {
agent { label 'linux && x86_64 && nix-2.19' } agent { label 'linux && x86_64 && nix-2.14' }
options { options {
timestamps() timestamps()
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
agent { label 'macos' } agent { label 'macos' }
+2 -2
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
agent { label params.AGENT_LABEL } agent { label params.AGENT_LABEL }
@@ -82,7 +82,7 @@ pipeline {
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android') env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android')
/* Build/fetch deps required to build android release. */ /* Build/fetch deps required to build android release. */
nix.build( nix.build(
attr: 'targets.mobile.android.build.buildInputs', attr: 'targets.mobile.android.release.buildInputs',
sandbox: false, sandbox: false,
pure: false, pure: false,
link: false link: false
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
agent { label 'linux' } agent { label 'linux' }
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy #!/usr/bin/env groovy
library 'status-jenkins-lib@v1.8.7' library 'status-jenkins-lib@v1.7.15'
pipeline { pipeline {
agent { agent {
-2
View File
@@ -28,8 +28,6 @@
[Contributing to status-go](status-go-changes.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) [How to run local tests](testing.md)
+2 -1
View File
@@ -122,9 +122,10 @@ See below:
Do the following: Do the following:
Ensure you have 2 terminals running the following Ensure you have 3 terminals running the following
- `make run-clojure` - `make run-clojure`
- `make run-metro`
- `make run-ios` / `make run-android` - `make run-ios` / `make run-android`
[See the STARTING GUIDE for details](STARTING_GUIDE.md#development) [See the STARTING GUIDE for details](STARTING_GUIDE.md#development)
+2 -1
View File
@@ -15,7 +15,8 @@ This step will take a while the first time as it will download all dependencies.
There are three steps necessary to start development, in this case for Android: There are three steps necessary to start development, in this case for Android:
1. `make run-clojure` - Compiles Clojure into JavaScript, watches for changes on cljs files, and hot-reloads code in the app. 1. `make run-clojure` - Compiles Clojure into JavaScript, watches for changes on cljs files, and hot-reloads code in the app.
2. `make run-android` or `make run-ios` - Builds the Android/iOS app, starts it on the device and starts metro bundler. 2. `make run-metro` - Starts metro bundler and watches JavaScript code.
3. `make run-android` or `make run-ios` - Builds the Android/iOS app and starts it on the device.
The first two will continue watching for changes and keep re-building the app. They need to be ready first. The first two will continue watching for changes and keep re-building the app. They need to be ready first.
The last one will exit once the app is up and ready. The last one will exit once the app is up and ready.
+1 -1
View File
@@ -793,7 +793,7 @@ CHECKOUT OPTIONS:
:submodules: true :submodules: true
SPEC CHECKSUMS: SPEC CHECKSUMS:
boost: 64032b9e9b938fda23325e68a3771f0fabf414dc boost: 57d2868c099736d80fcd648bf211b4431e51a558
BVLinearGradient: 612a04ff38e8480291f3379ee5b5a2c571f03fe0 BVLinearGradient: 612a04ff38e8480291f3379ee5b5a2c571f03fe0
CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082 CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
-18
View File
@@ -1,18 +0,0 @@
# Description
This directory is the destination of logs created during build time of debug builds.
# Logs
* `xcrun_device_install.log` - Output from `status-mobile/scripts/run-ios-device.sh`.
- Created by redirecting output of `xcrun simctl install "$UDID" "$APP_PATH"`.
* `xcrun_device_process_launch.log` - Output from `status-mobile/scripts/run-ios-device.sh`.
- Created by specifying `--json-output` flag for `xcrun devicectl device process launch --no-activate --verbose --device "${DEVICE_UUID}" "${INSTALLATION_URL}"`.
* `xcrun_device_process_resume.log` - Output from `status-mobile/scripts/run-ios-device.sh`.
- Created by redirecting output of `xcrun devicectl device process resume --device "${DEVICE_UUID}" --pid "${STATUS_PID}"`.
* `adb_install.log` - Output from `scripts/run-android.sh`.
- Created by redirecting output of `adb install -r ./result/app-debug.apk`.
* `adb_shell_monkey.log` - Output from `status-mobile/scripts/run-android.sh`.
- Created by redirecting output of `adb shell monkey -p im.status.ethereum.debug 1 >`.
* `ios_simulators_list.log` - Output from `status-mobile/scripts/run-ios.sh`.
- Created by redirecting output of `xcrun simctl list devices -j`.
-11
View File
@@ -1,11 +0,0 @@
appId: im.status.ethereum.debug
---
- runFlow: # to run onboarding flow only when device is in onboarding state
when:
visible: "Im new to Status"
file: onboarding.yaml
- runFlow: # to run login flow only when device is on login screen
when:
visible: "Profile password"
file: login.yaml
-5
View File
@@ -1,5 +0,0 @@
appId: im.status.ethereum.debug
---
- tapOn: "password-input"
- inputText: "password123" # update your account password here
- tapOn: login-button
-15
View File
@@ -1,15 +0,0 @@
appId: im.status.ethereum.debug
---
- tapOn: "Im new to Status"
- tapOn: "small-option-card"
- tapOn: "Your name"
- inputText: "DeviceA"
- tapOn: "submit-create-profile-button"
- inputText: "password123"
- tapOn: "Repeat password"
- inputText: "password123"
- tapOn: "disclaimer-touchable-opacity"
- tapOn: "Confirm password"
- tapOn: "skip-identifiers"
- tapOn: "enable-notifications-later-button"
- tapOn: "welcome-button"
@@ -120,12 +120,9 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(checkAddressChecksum:(NSString *)address)
return StatusgoCheckAddressChecksum(address); return StatusgoCheckAddressChecksum(address);
} }
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isAddress:(NSString *)address) {
return StatusgoIsAddress(address);
}
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(toChecksumAddress:(NSString *)address) { RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(toChecksumAddress:(NSString *)address) {
return StatusgoToChecksumAddress(address); return StatusgoToChecksumAddress(address);
} }
@end @end
+5 -7
View File
@@ -61,7 +61,7 @@ We will use the `make jsbundle` target as an example of a derivation you can bui
3. [`build.sh`](/nix/scripts/build.sh) calls `nix-build --attr targets.mobile.jsbundle` with extra arguments 3. [`build.sh`](/nix/scripts/build.sh) calls `nix-build --attr targets.mobile.jsbundle` with extra arguments
4. `nix-build` builds the derivation from [`nix/mobile/jsbundle/default.nix`](/nix/mobile/jsbundle/default.nix) 4. `nix-build` builds the derivation from [`nix/mobile/jsbundle/default.nix`](/nix/mobile/jsbundle/default.nix)
The same can be done for other targets like `targets.mobile.android.build`. The same can be done for other targets like `targets.mobile.android.release`.
Except in that case extra arguments are required which is why the [`scripts/release-android.sh`](/scripts/release-android.sh) is used in the `make release-android` target. Except in that case extra arguments are required which is why the [`scripts/release-android.sh`](/scripts/release-android.sh) is used in the `make release-android` target.
If you run `make release-android` you'll see the `nix-build` command used: If you run `make release-android` you'll see the `nix-build` command used:
@@ -71,23 +71,21 @@ nix-build \
--fallback \ --fallback \
--no-out-link \ --no-out-link \
--show-trace \ --show-trace \
--attr targets.mobile.android.build \ --attr targets.mobile.android.release \
--argstr secrets-file '/tmp/tmp-status-mobile-559a3a441/tmp.xAnrPuNtAP' \ --argstr secrets-file '/tmp/tmp-status-mobile-559a3a441/tmp.xAnrPuNtAP' \
--option extra-sandbox-paths '/home/joe/.gradle/status-im.keystore /tmp/tmp-status-mobile-559a3a441/tmp.xAnrPuNtAP' \ --option extra-sandbox-paths '/home/joe/.gradle/status-im.keystore /tmp/tmp-status-mobile-559a3a441/tmp.xAnrPuNtAP' \
default.nix default.nix
``` ```
Some of those are required which is why just calling: Some of those are required which is why just calling:
``` ```
nix-build --attr targets.mobile.android.build nix-build --attr targets.mobile.android.release
``` ```
Would fail. Would fail.
# Garbage Collection # Garbage Collection
The `make nix-gc` target calls `nix-store --gc` and normally would remove almost everything, but to prevent that we place symlinks to protected derivations in `.nix-gcroots` folder. Specifically: The `make nix-gc` target calls `nix-store --gc` and normally would remove almost everything, but to prevent that we place symlinks to protected derivations in `/nix/var/nix/gcroots` subfolder. Specifically:
```sh ```sh
_NIX_GCROOTS="${_NIX_GCROOTS:-${GIT_ROOT}/.nix-gcroots} _NIX_GCROOTS="${_NIX_GCROOTS:-/nix/var/nix/gcroots/per-user/${USER}/status-mobile}"
``` ```
These symlinks in turn will be symlinked from `/nix/var/nix/gcroots/auto` through use of `nix-store --add-gcroots`.
Whenever `nix/scripts/build.sh` or `nix/scripts/shell.sh` are called they update symlinks named after given targets in that folder. This in combination with `keep-outputs = true` set in `nix/nix.conf` prevents garbage collection from removing too much. Whenever `nix/scripts/build.sh` or `nix/scripts/shell.sh` are called they update symlinks named after given targets in that folder. This in combination with `keep-outputs = true` set in `nix/nix.conf` prevents garbage collection from removing too much.
+1 -1
View File
@@ -28,7 +28,7 @@ export STATUS_GO_IPFS_GATEWAY_URL="https://ipfs.status.im/"
``` ```
You can see the defaults in code: You can see the defaults in code:
- [`nix/status-go/default.nix`](./status-go/default.nix) - [`nix/status-go/default.nix`](./status-go/default.nix)
- [`nix/mobile/android/release.nix`](./mobile/android/build.nix) - [`nix/mobile/android/release.nix`](./mobile/android/release.nix)
## Shell ## Shell
+1 -1
View File
@@ -6,7 +6,7 @@ This directory contains the tools and the data that allows Nix to manage Gradle
Simply calling `generate.sh` should result in a `deps.json` file which is used in the derivation that provides Gradle dependencies when building the Android app. Simply calling `generate.sh` should result in a `deps.json` file which is used in the derivation that provides Gradle dependencies when building the Android app.
You can see in [`nix/mobile/android/release.nix`](../../mobile/android/build.nix) that it's used via the `-Dmaven.repo.local='${deps.gradle}'` Gradle flag. You can see in [`nix/mobile/android/release.nix`](../../mobile/android/release.nix) that it's used via the `-Dmaven.repo.local='${deps.gradle}'` Gradle flag.
# Files # Files
+61 -61
View File
@@ -11344,12 +11344,12 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-bom/4.26.0-RC1", "path": "com/google/protobuf/protobuf-bom/4.0.0-rc-2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-bom-4.26.0-RC1.pom": { "protobuf-bom-4.0.0-rc-2.pom": {
"sha1": "95b890ee6f318b67514a9d3573c78aebfd8cf4c1", "sha1": "1cf14b7774313bc34805dd58fffa3cbc35601184",
"sha256": "sha256-rGscgQUEAvrvFw6SnyMSbIw7N0J6SEgo4bo8nmAbO04=" "sha256": "sha256-45/pSYKw70HwkoTPbtPkj0Bsu/ZtioKD0MYmk04KYTI="
} }
} }
}, },
@@ -11520,16 +11520,16 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-java/4.26.0-RC1", "path": "com/google/protobuf/protobuf-java/4.0.0-rc-2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-java-4.26.0-RC1.pom": { "protobuf-java-4.0.0-rc-2.pom": {
"sha1": "9b053265705abd2eb8dd06831b4728ed19e8f79a", "sha1": "8fab0fe0746b1d370663a3db7dd483c2c4d34a6f",
"sha256": "sha256-cexXywR1/FPS885SUYezfvvww1TAjy6gAtAmxJVxn0Y=" "sha256": "sha256-q//aKX5NdsCktWMRsnjG/L3jNI9g/ucIGLN119ZzT50="
}, },
"protobuf-java-4.26.0-RC1.jar": { "protobuf-java-4.0.0-rc-2.jar": {
"sha1": "a4718e6e4943736bb27aa3c7f8ef3c0a851c35b1", "sha1": "ae590f34383d2d6fde2b3b8e2ffb668e64579099",
"sha256": "sha256-cgTa51zMiegEQa2I9pyGy9psCQ5tPJU9MfMoC8DyDDg=" "sha256": "sha256-PMJSvvZfetM8UwzuxxZkzR2gsmUhrWZzpl2fpJMegio="
} }
} }
}, },
@@ -11627,38 +11627,38 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-parent/4.26.0-RC1", "path": "com/google/protobuf/protobuf-parent/4.0.0-rc-2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-parent-4.26.0-RC1.pom": { "protobuf-parent-4.0.0-rc-2.pom": {
"sha1": "80963cafb79bc1b0f5dd2c1c82c67016c2362ad4", "sha1": "c5391c7917ca1197cbbda4efc6454a87e7e7107e",
"sha256": "sha256-n+4hEMufYvUwFQts4WiDUYKyGGnivQQhyc2bS7fODMs=" "sha256": "sha256-4NJwgSugXAqrlx4wtRyl0VcmYBkGxiGsIM3LLkq2fi8="
} }
} }
}, },
{ {
"path": "com/google/truth/truth-parent/1.4.0", "path": "com/google/truth/truth-parent/1.2.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"truth-parent-1.4.0.pom": { "truth-parent-1.2.0.pom": {
"sha1": "08b3f870d82e4e34caa1aa94ca03c29d9b40d3d2", "sha1": "d24447b2a11846a354e503575ed95e393ba5158d",
"sha256": "sha256-K+3ssiZ3EYKh/sxgh3NFLyTPuMEjreDzymb4pmmU3Gs=" "sha256": "sha256-Q8/2l2yxZ5ETlTWluYDpwTW8Fgxk7hGc/6qNHv9aquI="
} }
} }
}, },
{ {
"path": "com/google/truth/truth/1.4.0", "path": "com/google/truth/truth/1.2.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"truth-1.4.0.pom": { "truth-1.2.0.pom": {
"sha1": "6ff4bdfe8a3758a755b52ad894b7d983c88e4850", "sha1": "44853be2a0532449235377b3eea680b679cefa7e",
"sha256": "sha256-v4+lYqfRXWNEU9f/LidC/eACm2VNhwtK0uejf89mTnY=" "sha256": "sha256-4snQPEXLKYR49KPOM37mXXsk+nVA/PSEy/OkvuQCuVo="
}, },
"truth-1.4.0.jar": { "truth-1.2.0.jar": {
"sha1": "2a9475ed8cf2081b859fda8f9c860d5c449cd9ed", "sha1": "0135db6c1dfab1b3ca326c8ce51c09381d332d43",
"sha256": "sha256-I1wo6W7mcBqwHMhS+ylMsPNHVvY2qBVLmu8I+xIVu8Q=" "sha256": "sha256-tGEIQNXjffFOZqqwuEDA7j+l6Vl9o6KQIGQYcXHCM5o="
} }
} }
}, },
@@ -17512,16 +17512,16 @@
}, },
{ {
"path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-Beta3", "path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-Beta2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"kotlin-reflect-2.0.0-Beta3.pom": { "kotlin-reflect-2.0.0-Beta2.pom": {
"sha1": "dc97aad46542eaa0cb64120911ac1013483969ac", "sha1": "71908b10dd3fefa0509880918948931ad0b8d7c8",
"sha256": "sha256-NnPskjZQvqH3zdWL94mDT/EMvy51senYGEbKjz+ya64=" "sha256": "sha256-TmkaczZz+Eqbux6yz2SyE9WhflLrknrULgk8j/2sfUs="
}, },
"kotlin-reflect-2.0.0-Beta3.jar": { "kotlin-reflect-2.0.0-Beta2.jar": {
"sha1": "6915153788502bdccc98753f41dcbd5bf7c7e128", "sha1": "0cf9ed5d13e31c4e4ab74be627b7cedc0ecc7715",
"sha256": "sha256-k4zOXYaKP8MBwjWAOLuEt0ahsLlSHtdnldJma/o0e2Y=" "sha256": "sha256-PAz62O51jigTUVGhAJHGrWdbLoVdCFwwhhI883u50bw="
} }
} }
}, },
@@ -18769,28 +18769,28 @@
}, },
{ {
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-Beta3", "path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-Beta2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"kotlin-stdlib-2.0.0-Beta3.pom": { "kotlin-stdlib-2.0.0-Beta2.pom": {
"sha1": "1005b3f259dffb93f972e5227eb18fc579b71811", "sha1": "a1310fbc42c0cbc786766d2e35dcbfdaf3f8a8b1",
"sha256": "sha256-2qxjaqrwUBME9CbB4lpEKGV4qi2VGn8USteyCSZ8lq4=" "sha256": "sha256-8upeJFveFokz2f2rBOXj2KZ9+OzyWxWtqZ9/2qcJGnI="
}, },
"kotlin-stdlib-2.0.0-Beta3-all.jar": { "kotlin-stdlib-2.0.0-Beta2-all.jar": {
"sha1": "845c7a75152307a41522e800bb9706a58e02b228", "sha1": "c844df2813fa56f8baa346530a5172ccf03277d0",
"sha256": "sha256-YwNHMM8zT64dAULHPNt+zLXQ5xTeAvtP/HKybthMDWI=" "sha256": "sha256-o8TV9hZ9IGumB5g+8nq6R6YU+VxlRV0PJ3IsSsMRsSM="
}, },
"kotlin-stdlib-2.0.0-Beta3-common.jar": { "kotlin-stdlib-2.0.0-Beta2-common.jar": {
"sha1": "e0224f6b9468655e1feffe789ab7ebd4965a9431", "sha1": "e0224f6b9468655e1feffe789ab7ebd4965a9431",
"sha256": "sha256-ikItp8AZFxM/bokvCF68e2Q+oNGbbJxTILtPDnj7uMI=" "sha256": "sha256-ikItp8AZFxM/bokvCF68e2Q+oNGbbJxTILtPDnj7uMI="
}, },
"kotlin-stdlib-2.0.0-Beta3.jar": { "kotlin-stdlib-2.0.0-Beta2.jar": {
"sha1": "9982637ebb69602015ed823cceca7054d2ab8bbe", "sha1": "61be8a13ad24f43c915ba6962440cd30af4700ec",
"sha256": "sha256-1+6KuGuMgmiuPLpxx+cJSZ3/pnVOMmLdtzmk3mwB0ro=" "sha256": "sha256-yDOkRXCSzieZ5nejro0ku4suO6qDwWlDBdnb5ZHgquA="
}, },
"kotlin-stdlib-2.0.0-Beta3.module": { "kotlin-stdlib-2.0.0-Beta2.module": {
"sha1": "5026675037ebf81e108eb3cc581a24570ec7ceb2", "sha1": "22702775430e8d3a9f8d824167e00484e07d5932",
"sha256": "sha256-rlVFQM89Ga0h57LsViIgT8iSdE18G0rd/TN7/u9UKrU=" "sha256": "sha256-J6vVZxhfZbGpw8tTtV4RQTPJrkFqMwetPevDDG/iO/U="
} }
} }
}, },
@@ -19055,16 +19055,16 @@
}, },
{ {
"path": "org/junit/junit-bom/5.10.2", "path": "org/junit/junit-bom/5.10.1",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"junit-bom-5.10.2.pom": { "junit-bom-5.10.1.pom": {
"sha1": "b25ed98a5bd08cdda60e569cf22822a760e76019", "sha1": "41a86ea51227739a5b7ca3430ae88ce44a64a42a",
"sha256": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg=" "sha256": "sha256-IcSwKG9LIAaVd/9LIJeKhcEArIpGtvHIZy+6qzN7w/I="
}, },
"junit-bom-5.10.2.module": { "junit-bom-5.10.1.module": {
"sha1": "ce536748a853ae6ac09e7815fce0678a96cff778", "sha1": "1b577334c47deb59a29dc31e5211499d0eb3c17b",
"sha256": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo=" "sha256": "sha256-IbCvz//i7LN3D16wCuehn+rulOdx+jkYFzhQ2ueAZ7c="
} }
} }
}, },
@@ -19160,16 +19160,16 @@
}, },
{ {
"path": "org/mockito/mockito-core/5.10.0", "path": "org/mockito/mockito-core/5.9.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"mockito-core-5.10.0.pom": { "mockito-core-5.9.0.pom": {
"sha1": "25e309d012d326eef980de463edeb2a592cf9cdb", "sha1": "2054dcc15b9ede899cb9ec6e8e960e36c68b4574",
"sha256": "sha256-D4gyKTuHHyO2/0QkET7mXBdfq9G2uswY7Dg8s5akOq8=" "sha256": "sha256-BJDEL+Yu7WRzQdpAojcHGW2BO0TbKj3KMB2IFz56yPc="
}, },
"mockito-core-5.10.0.jar": { "mockito-core-5.9.0.jar": {
"sha1": "b3812fa2ee069f1d0b41c1c0155da79d0e1dcde0", "sha1": "faa88b96db3aeb96a93e83dec7491345bfbfc414",
"sha256": "sha256-AyP1kbBNOg18qevuu56fNKB8DskWm3RE7jlRtx1MrVY=" "sha256": "sha256-u62Rhe1zSWX6x+Nn8OUVlvaVMeUdiyy87BBI3W+0Hyw="
} }
} }
}, },
+9 -9
View File
@@ -718,7 +718,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.7.1/prot
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.10.0/protobuf-bom-3.10.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.10.0/protobuf-bom-3.10.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.13.0/protobuf-bom-3.13.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.13.0/protobuf-bom-3.13.0.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.17.2/protobuf-bom-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.26.0-RC1/protobuf-bom-4.26.0-RC1.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.0.0-rc-2/protobuf-bom-4.0.0-rc-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.17.2/protobuf-javalite-3.17.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
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.10.0/protobuf-java-util-3.10.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.10.0/protobuf-java-util-3.10.0.pom
@@ -730,7 +730,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.7.1/pro
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.10.0/protobuf-java-3.10.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.10.0/protobuf-java-3.10.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.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.17.2/protobuf-java-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.26.0-RC1/protobuf-java-4.26.0-RC1.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.0.0-rc-2/protobuf-java-4.0.0-rc-2.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
@@ -739,9 +739,9 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.7.1/p
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.10.0/protobuf-parent-3.10.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.10.0/protobuf-parent-3.10.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.13.0/protobuf-parent-3.13.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.13.0/protobuf-parent-3.13.0.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.17.2/protobuf-parent-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.26.0-RC1/protobuf-parent-4.26.0-RC1.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.0.0-rc-2/protobuf-parent-4.0.0-rc-2.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.0/truth-parent-1.4.0.pom https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.2.0/truth-parent-1.2.0.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.0/truth-1.4.0.pom https://repo.maven.apache.org/maven2/com/google/truth/truth/1.2.0/truth-1.2.0.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
@@ -1146,7 +1146,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.10/kotlin-reflect-1.7.10.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.10/kotlin-reflect-1.7.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.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/2.0.0-Beta3/kotlin-reflect-2.0.0-Beta3.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-Beta2/kotlin-reflect-2.0.0-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.9.0/kotlin-scripting-common-1.9.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom
@@ -1229,7 +1229,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.10/k
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.22/kotlin-stdlib-1.7.22.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.22/kotlin-stdlib-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.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-Beta3/kotlin-stdlib-2.0.0-Beta3.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.0-Beta2/kotlin-stdlib-2.0.0-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.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
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom
@@ -1247,14 +1247,14 @@ https://repo.maven.apache.org/maven2/org/json/json/20231013/json-20231013.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.9.2/junit-bom-5.9.2.pom https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.9.2/junit-bom-5.9.2.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.9.3/junit-bom-5.9.3.pom https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.9.3/junit-bom-5.9.3.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.2/junit-bom-5.10.2.pom https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.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
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.1.0/stax-ex-2.1.0.pom https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.1.0/stax-ex-2.1.0.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.pom https://repo.maven.apache.org/maven2/org/mockito/mockito-core/3.12.4/mockito-core-3.12.4.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/4.0.0/mockito-core-4.0.0.pom https://repo.maven.apache.org/maven2/org/mockito/mockito-core/4.0.0/mockito-core-4.0.0.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/5.10.0/mockito-core-5.10.0.pom https://repo.maven.apache.org/maven2/org/mockito/mockito-core/5.9.0/mockito-core-5.9.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/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
+2 -2
View File
@@ -2,7 +2,7 @@
, jsbundle, status-go, androidPkgs, androidShell }: , jsbundle, status-go, androidPkgs, androidShell }:
rec { rec {
build = callPackage ./build.nix { release = callPackage ./release.nix {
inherit jsbundle status-go; inherit jsbundle status-go;
}; };
@@ -15,7 +15,7 @@ rec {
]; ];
inputsFrom = [ inputsFrom = [
(build {}) (release {})
androidShell androidShell
]; ];
@@ -7,15 +7,15 @@
# Path to the file containing secret environment variables # Path to the file containing secret environment variables
secretsFile ? "", secretsFile ? "",
# Build type (influences which .env file gets used for feature flags) # Build type (influences which .env file gets used for feature flags)
# TODO: pr or relase for default?
buildType ? lib.getEnvWithDefault "BUILD_TYPE" "release", buildType ? lib.getEnvWithDefault "BUILD_TYPE" "release",
# Used for versionCode # Used for versionCode
versionCode ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_versionCode" 9999, buildNumber ? lib.getEnvWithDefault "BUILD_NUMBER" 9999,
# Included in APK Manifest for easier identification. # Included in APK Manifest for easier identification.
commitHash ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_commitHash" "unknown", # TODO: or GIT_COMMIT from Jenkins?
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors. commitHash ? lib.getEnvWithDefault "COMMIT_HASH" "unknown",
# https://github.com/status-im/status-mobile/issues/18493 # Gradle options passed for Android builds
hermesEnabled ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_hermesEnabled" "true", androidGradleOpts ? lib.getEnvWithDefault "ANDROID_GRADLE_OPTS" 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" "false",
@@ -40,10 +40,8 @@ let
else if (elem buildType ["pr" "manual"]) then ".env.jenkins" else if (elem buildType ["pr" "manual"]) then ".env.jenkins"
else ".env"; else ".env";
gradleBuildType = # There are only two types of Gradle build targets: pr and release
if buildType == "pr" then "Pr" gradleBuildType = if buildType == "pr" then "Pr" else "Release";
else if buildType == "debug" then "Debug"
else "Release";
apksPath = "./android/app/build/outputs/apk/${toLower gradleBuildType}"; apksPath = "./android/app/build/outputs/apk/${toLower gradleBuildType}";
@@ -81,12 +79,6 @@ in stdenv.mkDerivation rec {
STATUS_GO_SRC_OVERRIDE = statusGoSrcOverride; STATUS_GO_SRC_OVERRIDE = statusGoSrcOverride;
ANDROID_ABI_SPLIT = androidAbiSplit; ANDROID_ABI_SPLIT = androidAbiSplit;
ANDROID_ABI_INCLUDE = androidAbiInclude; ANDROID_ABI_INCLUDE = androidAbiInclude;
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
# https://github.com/status-im/status-mobile/issues/18493
ORG_GRADLE_PROJECT_versionCode = versionCode;
ORG_GRADLE_PROJECT_commitHash = commitHash;
ORG_GRADLE_PROJECT_buildUrl = buildUrl;
ORG_GRADLE_PROJECT_hermesEnabled = hermesEnabled;
# Fix for ERR_OSSL_EVP_UNSUPPORTED error. # Fix for ERR_OSSL_EVP_UNSUPPORTED error.
NODE_OPTIONS = "--openssl-legacy-provider"; NODE_OPTIONS = "--openssl-legacy-provider";
@@ -121,6 +113,8 @@ in stdenv.mkDerivation rec {
# Symlink React Native entrypoint. # Symlink React Native entrypoint.
cp -Lr ${builtJsBundle} ./result cp -Lr ${builtJsBundle} ./result
pwd
find -L result
# Copy android/ directory # Copy android/ directory
mkdir -p ./android/build mkdir -p ./android/build
@@ -147,6 +141,7 @@ in stdenv.mkDerivation rec {
"LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${makeLibraryPath [ pkgs.zlib ]}"; "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${makeLibraryPath [ pkgs.zlib ]}";
gradleCommand = '' gradleCommand = ''
${pkgs.gradle}/bin/gradle \ ${pkgs.gradle}/bin/gradle \
${toString androidGradleOpts} \
--console=plain \ --console=plain \
--offline \ --offline \
--no-daemon \ --no-daemon \
@@ -154,6 +149,8 @@ in stdenv.mkDerivation rec {
--no-watch-fs \ --no-watch-fs \
--no-build-cache \ --no-build-cache \
-Dmaven.repo.local='${deps.gradle}' \ -Dmaven.repo.local='${deps.gradle}' \
-PversionCode=${toString buildNumber} \
-PcommitHash=${commitHash} \
assemble${gradleBuildType} assemble${gradleBuildType}
''; '';
in in
@@ -171,14 +168,12 @@ in stdenv.mkDerivation rec {
${adhocEnvVars} ${gradleCommand} ${adhocEnvVars} ${gradleCommand}
popd > /dev/null popd > /dev/null
''; '';
doCheck = true;
doCheck = buildType != "debug"; checkPhase = ''
checkPhase = ''
ls ${apksPath}/*.apk \ ls ${apksPath}/*.apk \
| xargs -n1 ${pkgs.unzip}/bin/unzip -qql \ | xargs -n1 ${pkgs.unzip}/bin/unzip -qql \
| grep 'index.android.bundle' | grep 'index.android.bundle'
''; '';
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp ${apksPath}/*.apk $out/ cp ${apksPath}/*.apk $out/
+1 -1
View File
@@ -20,8 +20,8 @@ in {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
xcodeWrapper watchman procps xcodeWrapper watchman procps
flock # used in nix/scripts/node_modules.sh flock # used in nix/scripts/node_modules.sh
ios-deploy # used in 'make run-ios-device'
xcbeautify # used in 'make run-ios' xcbeautify # used in 'make run-ios'
libimobiledevice # used in `make run-ios-device`
]; ];
# WARNING: Executes shellHook in reverse order. # WARNING: Executes shellHook in reverse order.
+12 -1
View File
@@ -26,6 +26,18 @@ in {
react-native = callPackage ./deps/react-native { }; react-native = callPackage ./deps/react-native { };
}; };
# Fix for missing libarclite_macosx.a in Xcode 14.3.
# https://github.com/ios-control/ios-deploy/issues/580
ios-deploy = super.darwin.ios-deploy.overrideAttrs (old: rec {
version = "1.12.2";
src = super.fetchFromGitHub {
owner = "ios-control";
repo = "ios-deploy";
rev = version;
sha256 = "sha256-TVGC+f+1ow3b93CK3PhIL70le5SZxxb2ug5OkIg8XCA";
};
});
# Clojure's linter receives frequent upgrades, and we want to take advantage # Clojure's linter receives frequent upgrades, and we want to take advantage
# of the latest available rules. # of the latest available rules.
clj-kondo = super.clj-kondo.override rec { clj-kondo = super.clj-kondo.override rec {
@@ -85,5 +97,4 @@ in {
patchMavenSources = callPackage ./pkgs/patch-maven-srcs { }; patchMavenSources = callPackage ./pkgs/patch-maven-srcs { };
goMavenResolver = callPackage ./pkgs/go-maven-resolver { }; goMavenResolver = callPackage ./pkgs/go-maven-resolver { };
xcbeautify = callPackage ./pkgs/xcbeautify { }; xcbeautify = callPackage ./pkgs/xcbeautify { };
idb-companion = callPackage ./pkgs/idb-companion { };
} }
-29
View File
@@ -1,29 +0,0 @@
{ stdenv, fetchurl, lib }:
stdenv.mkDerivation rec {
pname = "idb-companion";
version = "1.1.8";
src = fetchurl {
url = "https://github.com/facebook/idb/releases/download/v${version}/idb-companion.universal.tar.gz";
sha256 = "sha256-O3LMappbGiKhiCBahAkNOilDR6hGGA79dVzxo8hI4+c=";
};
buildInputs = [ ];
unpackPhase = ''
tar -xzf $src
'';
installPhase = ''
mkdir -p $out/bin
cp -r ./* $out/bin/
'';
meta = with lib; {
description = "A powerful command line tool for automating iOS simulators and devices";
homepage = "https://github.com/facebook/idb";
license = licenses.mit;
platforms = platforms.darwin;
};
}
+1 -1
View File
@@ -45,7 +45,7 @@ if [[ -z "${TARGET}" ]]; then
fi fi
# Hack fix for missing Android SDK for aarch64 on Darwin. See systemOverride in `nix/pkgs.nix`. # Hack fix for missing Android SDK for aarch64 on Darwin. See systemOverride in `nix/pkgs.nix`.
if [[ "${TARGET}" =~ ^(targets.status-go.mobile.android|targets.mobile.android.build)$ ]]; then if [[ "${TARGET}" =~ ^(targets.status-go.mobile.android|targets.mobile.android.release)$ ]]; then
os=$(uname -s | tr '[:upper:]' '[:lower:]') os=$(uname -s | tr '[:upper:]' '[:lower:]')
export NIXPKGS_SYSTEM_OVERRIDE="x86_64-${os}" export NIXPKGS_SYSTEM_OVERRIDE="x86_64-${os}"
fi fi
+2 -2
View File
@@ -2,12 +2,12 @@
set -Ee set -Ee
_NIX_GCROOTS="${_NIX_GCROOTS:-/nix/var/nix/gcroots/per-user/${USER}/status-mobile}"
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
source "${GIT_ROOT}/nix/scripts/source.sh" source "${GIT_ROOT}/nix/scripts/source.sh"
source "${GIT_ROOT}/scripts/colors.sh" source "${GIT_ROOT}/scripts/colors.sh"
_NIX_GCROOTS="${_NIX_GCROOTS:-${GIT_ROOT}/.nix-gcroots}"
TARGET="${1}" TARGET="${1}"
shift shift
if [[ -z "${TARGET}" ]]; then if [[ -z "${TARGET}" ]]; then
+5 -3
View File
@@ -1,6 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
export NIX_VERSION="2.19.3" # WARNING: Versions 2.14, 2.15, 2.16 have an issue creating gcroots:
export NIX_PACKAGE="nixVersions.nix_2_19" # https://github.com/NixOS/nix/issues/8564
export NIX_VERSION="2.13.4"
export NIX_PACKAGE="nixVersions.nix_2_13"
export NIX_INSTALL_URL="https://nixos.org/releases/nix/nix-${NIX_VERSION}/install" export NIX_INSTALL_URL="https://nixos.org/releases/nix/nix-${NIX_VERSION}/install"
export NIX_INSTALL_SHA256="73d47b0ab783fddca1b2d44a03d52a74c97c28a1fc8ff5a29419079302ef9c3d" export NIX_INSTALL_SHA256="a9908cc48f5886b4f22172bdd2f9657873276fd295e78c6ed97fb308c6d284d0"
export NIX_INSTALL_PATH="/tmp/nix-install-${NIX_VERSION}" export NIX_INSTALL_PATH="/tmp/nix-install-${NIX_VERSION}"
+2 -2
View File
@@ -23,9 +23,9 @@ in mkShell {
# build specific utilities # build specific utilities
clojure maven watchman clojure maven watchman
# other nice to have stuff # other nice to have stuff
yarn nodejs python310 maestro yarn nodejs python310
] # and some special cases ] # and some special cases
++ lib.optionals stdenv.isDarwin ([ cocoapods clang tcl idb-companion ] ++ appleSDKFrameworks) ++ lib.optionals stdenv.isDarwin ([ cocoapods clang tcl ] ++ appleSDKFrameworks)
++ lib.optionals (!stdenv.isDarwin) [ gcc8 ] ++ lib.optionals (!stdenv.isDarwin) [ gcc8 ]
); );
+43 -74
View File
@@ -1,7 +1,7 @@
{ {
"meta": { "meta": {
"hostname": "node-01.do-ams3.sites.misc", "hostname": "node-01.do-ams3.sites.misc",
"timestamp": "2024-02-02T14:48:22.521541", "timestamp": "2023-01-05T10:03:38.657813",
"warning": "DO NOT EDIT! Auto generated from Consul. Should only be used at build time." "warning": "DO NOT EDIT! Auto generated from Consul. Should only be used at build time."
}, },
"fleets": { "fleets": {
@@ -89,9 +89,9 @@
"node-01.ac-cn-hongkong-c.wakuv2.prod": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.prod.statusim.net/tcp/30303/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD" "node-01.ac-cn-hongkong-c.wakuv2.prod": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.prod.statusim.net/tcp/30303/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD"
}, },
"enr/p2p/waku": { "enr/p2p/waku": {
"node-01.do-ams3.wakuv2.prod": "enr:-P-4QJI8tS1WTdIQxq_yIrD05oIIW1Xg-tm_qfP0CHfJGnp9dfr6ttQJmHwTNxGEl4Le8Q7YHcmi-kXTtphxFysS11oBgmlkgnY0gmlwhLymh5GKbXVsdGlhZGRyc7hgAC02KG5vZGUtMDEuZG8tYW1zMy53YWt1djIucHJvZC5zdGF0dXNpbS5uZXQGdl8ALzYobm9kZS0wMS5kby1hbXMzLndha3V2Mi5wcm9kLnN0YXR1c2ltLm5ldAYfQN4DiXNlY3AyNTZrMaEDbl1X_zJIw3EAJGtmHMVn4Z2xhpSoUaP5ElsHKCv7hlWDdGNwgnZfg3VkcIIjKIV3YWt1Mg8", "node-01.do-ams3.wakuv2.prod": "enr:-M-4QLdAB-KyzT3QEsDoNa4LXT6RGH9BIylvTlDFLQhigWmxKEesulgc8AoKmVEUKj_4St6ThBKwyBc69tBfCe2hVTABgmlkgnY0gmlwhLymh5GKbXVsdGlhZGRyc7EALzYobm9kZS0wMS5kby1hbXMzLndha3V2Mi5wcm9kLnN0YXR1c2ltLm5ldAYfQN4DiXNlY3AyNTZrMaEDbl1X_zJIw3EAJGtmHMVn4Z2xhpSoUaP5ElsHKCv7hlWDdGNwgnZfg3VkcIIjKIV3YWt1Mg8",
"node-01.gc-us-central1-a.wakuv2.prod": "enr:-QERuEC0EGWTjg_gYdnuPypJ9LAbB3lml6M8GiRajGegL2iWEj1MJzUMV9X6jXw7mMAQQLozLCTLFT-zv-ELQLPwWdACAYJpZIJ2NIJpcIQieWRsim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdXYyLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS53YWt1djIucHJvZC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhA_30kHgQqfXZRioa4J_u5asgXTJ5iw_8w3lEICH4TFu_g3RjcIJ2X4N1ZHCCIyiFd2FrdTIP", "node-01.gc-us-central1-a.wakuv2.prod": "enr:-Nm4QNgc2L6L-4nk6jgllNDE1QDcn6kv2922rTRYs1wM3My_OmSsTimkMCIMh8fat6enFdYfuJ23KjWdF5whBz3zXgUBgmlkgnY0gmlwhCJ5ZGyKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS53YWt1djIucHJvZC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhA_30kHgQqfXZRioa4J_u5asgXTJ5iw_8w3lEICH4TFu_g3RjcIJ2X4N1ZHCCIyiFd2FrdTIP",
"node-01.ac-cn-hongkong-c.wakuv2.prod": "enr:-QERuEDABor1lVmSa5ek8of5eBc8jZoxxdleJVLLdMl8UeZHNwhsVp64SFiCT4BRIIfcs7uxTPUCjmWxK_OA1s-FfIW7AYJpZIJ2NIJpcIQI0t7nim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdXYyLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy53YWt1djIucHJvZC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhAo0C-VvfgHiXrxZi3umDiooXMGY9FvYj5_d1Q4EeS7eyg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP" "node-01.ac-cn-hongkong-c.wakuv2.prod": "enr:-Nm4QOdTOKZJKTUUZ4O_W932CXIET-M9NamewDnL78P5u9DOGnZlK0JFZ4k0inkfe6iY-0JAaJVovZXc575VV3njeiABgmlkgnY0gmlwhAjS3ueKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy53YWt1djIucHJvZC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhAo0C-VvfgHiXrxZi3umDiooXMGY9FvYj5_d1Q4EeS7eyg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP"
}, },
"wss/p2p/waku": { "wss/p2p/waku": {
"node-01.do-ams3.wakuv2.prod": "/dns4/node-01.do-ams3.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e", "node-01.do-ams3.wakuv2.prod": "/dns4/node-01.do-ams3.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e",
@@ -106,9 +106,9 @@
"node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/30303/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm" "node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/30303/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm"
}, },
"enr/p2p/waku": { "enr/p2p/waku": {
"node-01.do-ams3.wakuv2.test": "enr:-P-4QPLMQ1zIYRAs4-F0mYmMxMihSySRtEIuGHJ_Qd_GL8XqUE78hpVUE97rgwlXnxPkzMJHkWyiNq7DT1fdZSy3QcgBgmlkgnY0gmlwhIbRi9KKbXVsdGlhZGRyc7hgAC02KG5vZGUtMDEuZG8tYW1zMy53YWt1djIudGVzdC5zdGF0dXNpbS5uZXQGdl8ALzYobm9kZS0wMS5kby1hbXMzLndha3V2Mi50ZXN0LnN0YXR1c2ltLm5ldAYfQN4DiXNlY3AyNTZrMaEDnr03Tuo77930a7sYLikftxnuG3BbC3gCFhA4632ooDaDdGNwgnZfg3VkcIIjKIV3YWt1Mg8", "node-01.do-ams3.wakuv2.test": "enr:-M-4QCtJKX2WDloRYDT4yjeMGKUCRRcMlsNiZP3cnPO0HZn6IdJ035RPCqsQ5NvTyjqHzKnTM6pc2LoKliV4CeV0WrgBgmlkgnY0gmlwhIbRi9KKbXVsdGlhZGRyc7EALzYobm9kZS0wMS5kby1hbXMzLndha3V2Mi50ZXN0LnN0YXR1c2ltLm5ldAYfQN4DiXNlY3AyNTZrMaEDnr03Tuo77930a7sYLikftxnuG3BbC3gCFhA4632ooDaDdGNwgnZfg3VkcIIjKIV3YWt1Mg8",
"node-01.gc-us-central1-a.wakuv2.test": "enr:-QERuEDZcXS5tjppj4TIlOm-TLanjmqx3-uk2kGFvvAQR1NVrklUhiN1JCb5dWucEQ_oDADOb6nG_1mJ5goF5CHneZ-VAYJpZIJ2NIJpcIRomu-Aim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdXYyLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS53YWt1djIudGVzdC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhA1giYsmWV9r2yJZYAiMGHJfjLlLeqAuTAokUGPN__pkxg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP", "node-01.gc-us-central1-a.wakuv2.test": "enr:-Nm4QLHYoJ5WYQoVzyqPR-pwIeQvi3ONWs-EPwk3uUiBiDseN9Dd7fYbCvkMdeXcuZ-8U9IYdGm38VxSDf_Oq3zZ0cEBgmlkgnY0gmlwhGia74CKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS53YWt1djIudGVzdC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhA1giYsmWV9r2yJZYAiMGHJfjLlLeqAuTAokUGPN__pkxg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP",
"node-01.ac-cn-hongkong-c.wakuv2.test": "enr:-QERuEC2LyiXKURIKxNHa7Mj7frsM-lZiAGJ-2mopR3w8LMn2UhKmahZ9RHKV5ehBN1fXbRYqAeiXuOxD9t2igF4PIizAYJpZIJ2NIJpcIQv8tJJim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdXYyLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy53YWt1djIudGVzdC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhAhAm-P4q6mWONKcGnbLPU8WXZJ4Qs3AxIbrycvc7PVKsg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP" "node-01.ac-cn-hongkong-c.wakuv2.test": "enr:-Nm4QC0_ClHzbsutYzgT3jJm7ZY1D4shylAdd6Ac-L4uwAUha1oHM0zwoEkTORVt94W5Cpa0IiyrTcXAYLgpRXpVNUsBgmlkgnY0gmlwhC_y0kmKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy53YWt1djIudGVzdC5zdGF0dXNpbS5uZXQGH0DeA4lzZWNwMjU2azGhAhAm-P4q6mWONKcGnbLPU8WXZJ4Qs3AxIbrycvc7PVKsg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP"
}, },
"wss/p2p/waku": { "wss/p2p/waku": {
"node-01.do-ams3.wakuv2.test": "/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ", "node-01.do-ams3.wakuv2.test": "/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ",
@@ -116,23 +116,6 @@
"node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm" "node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm"
} }
}, },
"waku.test": {
"tcp/p2p/waku": {
"node-01.do-ams3.waku.test": "/dns4/node-01.do-ams3.waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAkykgaECHswi3YKJ5dMLbq2kPVCo89fcyTd38UcQD6ej5W",
"node-01.gc-us-central1-a.waku.test": "/dns4/node-01.gc-us-central1-a.waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAmDCp8XJ9z1ev18zuv8NHekAsjNyezAvmMfFEJkiharitG",
"node-01.ac-cn-hongkong-c.waku.test": "/dns4/node-01.ac-cn-hongkong-c.waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAkzHaTP5JsUwfR9NR8Rj9HC24puS6ocaU8wze4QrXr9iXp"
},
"enr/p2p/waku": {
"node-01.do-ams3.waku.test": "enr:-QESuEC1p_s3xJzAC_XlOuuNrhVUETmfhbm1wxRGis0f7DlqGSw2FM-p2Ugl_r25UHQJ3f1rIRrpzxJXSMaJe4yk1XFSAYJpZIJ2NIJpcISygI2rim11bHRpYWRkcnO4XAArNiZub2RlLTAxLmRvLWFtczMud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAZ2XwAtNiZub2RlLTAxLmRvLWFtczMud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQJATXRSRSUyTw_QLB6H_U3oziVQgNRgrXpK7wp2AMyNxYN0Y3CCdl-DdWRwgiMohXdha3UyDw",
"node-01.gc-us-central1-a.waku.test": "enr:-QEkuECnZ3IbVAgkOzv-QLnKC4dRKAPRY80m1-R7G8jZ7yfT3ipEfBrhKN7ARcQgQ-vg-h40AQzyvAkPYlHPaFKk6u9uAYJpZIJ2NIJpcIQiEAFDim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA2Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQMIJwesBVgUiBCi8yiXGx7RWylBQkYm1U9dvEy-neLG2YN0Y3CCdl-DdWRwgiMohXdha3UyDw",
"node-01.ac-cn-hongkong-c.waku.test": "enr:-QEkuEDzQyIAhs-CgBHIrJqtBv3EY1uP1Psrc-y8yJKsmxW7dh3DNcq2ergMUWSFVcJNlfcgBeVsFPkgd_QopRIiCV2pAYJpZIJ2NIJpcIQI2ttrim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA2Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS50ZXN0LnN0YXR1c2ltLm5ldAYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQJIN4qwz3v4r2Q8Bv8zZD0eqBcKw6bdLvdkV7-JLjqIj4N0Y3CCdl-DdWRwgiMohXdha3UyDw"
},
"wss/p2p/waku": {
"node-01.do-ams3.waku.test": "/dns4/node-01.do-ams3.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkykgaECHswi3YKJ5dMLbq2kPVCo89fcyTd38UcQD6ej5W",
"node-01.gc-us-central1-a.waku.test": "/dns4/node-01.gc-us-central1-a.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmDCp8XJ9z1ev18zuv8NHekAsjNyezAvmMfFEJkiharitG",
"node-01.ac-cn-hongkong-c.waku.test": "/dns4/node-01.ac-cn-hongkong-c.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkzHaTP5JsUwfR9NR8Rj9HC24puS6ocaU8wze4QrXr9iXp"
}
},
"status.prod": { "status.prod": {
"tcp/p2p/waku": { "tcp/p2p/waku": {
"node-01.do-ams3.status.prod": "/dns4/node-01.do-ams3.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D", "node-01.do-ams3.status.prod": "/dns4/node-01.do-ams3.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D",
@@ -143,12 +126,12 @@
"node-02.ac-cn-hongkong-c.status.prod": "/dns4/node-02.ac-cn-hongkong-c.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmFy8BrJhCEmCYrUfBdSNkrPw6VHExtv4rRp1DSBnCPgx8" "node-02.ac-cn-hongkong-c.status.prod": "/dns4/node-02.ac-cn-hongkong-c.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmFy8BrJhCEmCYrUfBdSNkrPw6VHExtv4rRp1DSBnCPgx8"
}, },
"enr/p2p/waku": { "enr/p2p/waku": {
"node-01.do-ams3.status.prod": "enr:-P-4QGVNANzbhCI49du6Moyw98AjuMhKoOpE_Jges9JlCq-ICAVadktjfcNpuhQgT0g1cu86_S3nbM7eYkCsqDAQG7UBgmlkgnY0gmlwhI_G-a6KbXVsdGlhZGRyc7hgAC02KG5vZGUtMDEuZG8tYW1zMy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGdl8ALzYobm9kZS0wMS5kby1hbXMzLnN0YXR1cy5wcm9kLnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaECoVyonsTGEQvVioM562Q1fjzTb_vKD152PPIdsV7sM6SDdGNwgnZfg3VkcIIjKIV3YWt1Mg8", "node-01.do-ams3.status.prod": "enr:-M-4QLOTEs_ZFxCb09FgIezZd5KeTru5CWWyEtMWMN-yUABrerWxckU-pMIh3yO8VjxHpgZ4jU2WSXuK3goW4uYb6c4BgmlkgnY0gmlwhI_G-a6KbXVsdGlhZGRyc7EALzYobm9kZS0wMS5kby1hbXMzLnN0YXR1cy5wcm9kLnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaECoVyonsTGEQvVioM562Q1fjzTb_vKD152PPIdsV7sM6SDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"node-02.do-ams3.status.prod": "enr:-P-4QMXNung2KVE9xLMzctM754vz4kbavb4Stai3RBPfN-5XMfuf2i0x8J5l8fkxkiZ3Vpd0IkN9Gg0PbbDh2BUyIF8BgmlkgnY0gmlwhKEj9HmKbXVsdGlhZGRyc7hgAC02KG5vZGUtMDIuZG8tYW1zMy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGdl8ALzYobm9kZS0wMi5kby1hbXMzLnN0YXR1cy5wcm9kLnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaED1AYI2Ox27DnSqf2qoih5M2fNpHFq-OzJ3thREEApdiiDdGNwgnZfg3VkcIIjKIV3YWt1Mg8", "node-02.do-ams3.status.prod": "enr:-M-4QIhQjPgSnoKXLsJAxbRzF8cZYYjOfdt1ysBkibcriCvXb9lWHDiRghIv11JQltK5KYFs2zrCKoQ-_ZoRXEs5FasBgmlkgnY0gmlwhKEj9HmKbXVsdGlhZGRyc7EALzYobm9kZS0wMi5kby1hbXMzLnN0YXR1cy5wcm9kLnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaED1AYI2Ox27DnSqf2qoih5M2fNpHFq-OzJ3thREEApdiiDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"node-01.gc-us-central1-a.status.prod": "enr:-QERuEAFZ-rlajEo617uz0NDycgW4cPqqBumBvTOWywyFzIg4UOmbctTjYi6sfMArMgJEIDpphaXpLkCt5r12_gmtDQlAYJpZIJ2NIJpcIQjyjeZim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEuc3RhdHVzLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAhoqdPkAZNvNRuzEecDGwnt5UbF98qwM16PZG3JmW6kUg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP", "node-01.gc-us-central1-a.status.prod": "enr:-Nm4QPRAGqCjHCuu3DjbDVoLPqpE35Lfc3mjdCsmGTqdWmxjOF2NAbdYezEnukrz38TkTNXzEdslw_n_H5uUQ3hi-2EBgmlkgnY0gmlwhCPKN5mKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAhoqdPkAZNvNRuzEecDGwnt5UbF98qwM16PZG3JmW6kUg3RjcIJ2X4N1ZHCCIyiFd2FrdTID",
"node-02.gc-us-central1-a.status.prod": "enr:-QERuEA_42Fh7Kq3drLxfIuRkqMfoJpfKpjwRcUXLv1PUQdUt1AAhIOUpun_kHKAMBmrREU9y2VoTKykl0dPBw02Fbh-AYJpZIJ2NIJpcIQihNXpim11bHRpYWRkcnO4cgA2NjFub2RlLTAyLmdjLXVzLWNlbnRyYWwxLWEuc3RhdHVzLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDIuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAwtASPpiz5Gq3zuFuWF4MTviQVipi3HaQGytF-4wfbdvg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP", "node-02.gc-us-central1-a.status.prod": "enr:-Nm4QEdveBFdGPTVPCmYBikMKtGFlvLnzvXfYLOWDLPtTejBLcV_9e5Ry7dqx5K027rn5zedG-HnNiHP_GBcdCpGnq0BgmlkgnY0gmlwhCKE1emKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDIuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAwtASPpiz5Gq3zuFuWF4MTviQVipi3HaQGytF-4wfbdvg3RjcIJ2X4N1ZHCCIyiFd2FrdTID",
"node-01.ac-cn-hongkong-c.status.prod": "enr:-QERuEAVmLHSKOsMq2Atya-0mhdvu718BAcynh40JAPBprvhpgcsTqkXV5kRrxaZbtzKa5-b0I4aO9U_O7-zHe24UDMAAYJpZIJ2NIJpcIQv8so7im11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMuc3RhdHVzLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAgwDLi50TMXqxWTCnR_rjQP3Eeznjs645ZNBoRh5B3jhg3RjcIJ2X4N1ZHCCIyiFd2FrdTIL", "node-01.ac-cn-hongkong-c.status.prod": "enr:-Nm4QOxEmmi5LQo3EwmHCagXOzVXzsLDGDwPDTL6ECmUCoXPYV0ldWvzMVqPOEPzXMCtECdk7xpleiNN85oKQxFiGnYBgmlkgnY0gmlwhC_yyjuKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAgwDLi50TMXqxWTCnR_rjQP3Eeznjs645ZNBoRh5B3jhg3RjcIJ2X4N1ZHCCIyiFd2FrdTID",
"node-02.ac-cn-hongkong-c.status.prod": "enr:-QERuECscpffU15jE9GD77vwwKCeAWn8jBl7IXS9fMj8FcY6YzBPNNr17pXuOHPqhLbieZxM3zc0AMWDa5tWqpfbtzMKAYJpZIJ2NIJpcIQv84CGim11bHRpYWRkcnO4cgA2NjFub2RlLTAyLmFjLWNuLWhvbmdrb25nLWMuc3RhdHVzLnByb2Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDIuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAzE4YIBrPK5oT_9MvYEeggmaDd205iU4Nn1MAhU5xqY5g3RjcIJ2X4N1ZHCCIyiFd2FrdTIP" "node-02.ac-cn-hongkong-c.status.prod": "enr:-Nm4QOqKQ4bi7sYE1ZXAqnryEGeJOnQxIzo9UK5xHY_GeP4healoFVspoG2FaUCSyIg8pa4X2P99BbC15iSh98NIgPYBgmlkgnY0gmlwhC_zgIaKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDIuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAzE4YIBrPK5oT_9MvYEeggmaDd205iU4Nn1MAhU5xqY5g3RjcIJ2X4N1ZHCCIyiFd2FrdTID"
}, },
"wss/p2p/waku": { "wss/p2p/waku": {
"node-01.do-ams3.status.prod": "/dns4/node-01.do-ams3.status.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D", "node-01.do-ams3.status.prod": "/dns4/node-01.do-ams3.status.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D",
@@ -166,9 +149,9 @@
"node-01.ac-cn-hongkong-c.status.test": "/dns4/node-01.ac-cn-hongkong-c.status.test.statusim.net/tcp/30303/p2p/16Uiu2HAm2BjXxCp1sYFJQKpLLbPbwd5juxbsYofu3TsS3auvT9Yi" "node-01.ac-cn-hongkong-c.status.test": "/dns4/node-01.ac-cn-hongkong-c.status.test.statusim.net/tcp/30303/p2p/16Uiu2HAm2BjXxCp1sYFJQKpLLbPbwd5juxbsYofu3TsS3auvT9Yi"
}, },
"enr/p2p/waku": { "enr/p2p/waku": {
"node-01.do-ams3.status.test": "enr:-P-4QOg_CbInUakb3TEQBeCICyC-QDPeWK-CGtV9-nWp1W5DOKE2va63re3nPw-_hgvJfJkvshTaV0VmditigxKxT_kBgmlkgnY0gmlwhEDhUe2KbXVsdGlhZGRyc7hgAC02KG5vZGUtMDEuZG8tYW1zMy5zdGF0dXMudGVzdC5zdGF0dXNpbS5uZXQGdl8ALzYobm9kZS0wMS5kby1hbXMzLnN0YXR1cy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaECBNx5Erw5Jdsw-uI9pBjB_V2R6brvuVWE-MJwYCQKVv6DdGNwgnZfg3VkcIIjKIV3YWt1Mg8", "node-01.do-ams3.status.test": "enr:-M-4QI1qCnM3DMuZR2Y86FygFXPtm9fIRc4rFdUaDj0NbEA3Jl4In8mXAjUWgoei7W9Grc7oqtgibmIo-HIHHg7wrhMBgmlkgnY0gmlwhEDhUe2KbXVsdGlhZGRyc7EALzYobm9kZS0wMS5kby1hbXMzLnN0YXR1cy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DiXNlY3AyNTZrMaECBNx5Erw5Jdsw-uI9pBjB_V2R6brvuVWE-MJwYCQKVv6DdGNwgnZfg3VkcIIjKIV3YWt1Mg8",
"node-01.gc-us-central1-a.status.test": "enr:-QERuED3i2Oj7jWVR6QyPE_R0WO4Kec4CuUf8Pf6YrEXB6mvFwW_Y2wyHExqajqKR-ke-129TwAwovz2QjErTUga6rM8AYJpZIJ2NIJpcIQievx2im11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEuc3RhdHVzLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAzToWxPoQnnubNH_CIu7YHPV0RHadQVIKlpfMJxxC2eFg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP", "node-01.gc-us-central1-a.status.test": "enr:-Nm4QFxGf89g3MGnCLYBxBgpXejyB44mvXvJSpNzjlRwNXO6BIn7hl66OJpESPWdH7ipHNemmz0e04wtJHe_wVV5woABgmlkgnY0gmlwhCJ6_HaKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5zdGF0dXMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAzToWxPoQnnubNH_CIu7YHPV0RHadQVIKlpfMJxxC2eFg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP",
"node-01.ac-cn-hongkong-c.status.test": "enr:-QERuEDoxPEax-hctqp6vg2cmvd2UNPjgdf6iWmgvShX2-hL_Wj2JHpjVua9buZTYLsLD-Or5e71hwlgZlFaceEfopnzAYJpZIJ2NIJpcIQv8ukkim11bHRpYWRkcnO4cgA2NjFub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMuc3RhdHVzLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAmRvsjqPlfX7OOJ4x4F3GAOpBa4y4NQSoNHjX2XIo1lvg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP" "node-01.ac-cn-hongkong-c.status.test": "enr:-Nm4QCF2zwCuAZzxTtjjjbo5hn6vx0ICcEJBGRBMdDCfpoX5BGiApbfhEljEjpI4ePhYra_k0o5uI8eTTGYHkr6208gBgmlkgnY0gmlwhC_y6SSKbXVsdGlhZGRyc7g6ADg2MW5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5zdGF0dXMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAmRvsjqPlfX7OOJ4x4F3GAOpBa4y4NQSoNHjX2XIo1lvg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP"
}, },
"wss/p2p/waku": { "wss/p2p/waku": {
"node-01.do-ams3.status.test": "/dns4/node-01.do-ams3.status.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAkukebeXjTQ9QDBeNDWuGfbaSg79wkkhK4vPocLgR6QFDf", "node-01.do-ams3.status.test": "/dns4/node-01.do-ams3.status.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAkukebeXjTQ9QDBeNDWuGfbaSg79wkkhK4vPocLgR6QFDf",
@@ -176,52 +159,38 @@
"node-01.ac-cn-hongkong-c.status.test": "/dns4/node-01.ac-cn-hongkong-c.status.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm2BjXxCp1sYFJQKpLLbPbwd5juxbsYofu3TsS3auvT9Yi" "node-01.ac-cn-hongkong-c.status.test": "/dns4/node-01.ac-cn-hongkong-c.status.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm2BjXxCp1sYFJQKpLLbPbwd5juxbsYofu3TsS3auvT9Yi"
} }
}, },
"shards.test": { "go-waku.prod": {
"tcp/p2p/waku/boot": { "tcp/p2p/waku": {
"boot-01.do-ams3.shards.test": "/dns4/boot-01.do-ams3.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAmAR24Mbb6VuzoyUiGx42UenDkshENVDj4qnmmbabLvo31", "node-01.do-ams3.go-waku.prod": "/dns4/node-01.do-ams3.go-waku.prod.statusim.net/tcp/30303/p2p/16Uiu2HAkyScd7DiwgMwzfw8CFFhznH3wRzciqEUfjDzn7vyimR8c",
"boot-01.gc-us-central1-a.shards.test": "/dns4/boot-01.gc-us-central1-a.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAm8mUZ18tBWPXDQsaF7PbCKYA35z7WB2xNZH2EVq1qS8LJ", "node-01.gc-us-central1-a.go-waku.prod": "/dns4/node-01.gc-us-central1-a.go-waku.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmKTYnoPKebjWy63e1zPKiYRCQvm25W5mNSnCFE8EmzLga",
"boot-01.ac-cn-hongkong-c.shards.test": "/dns4/boot-01.ac-cn-hongkong-c.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAmGwcE8v7gmJNEWFtZtojYpPMTHy2jBLL6xRk33qgDxFWX" "node-01.ac-cn-hongkong-c.go-waku.prod": "/dns4/node-01.ac-cn-hongkong-c.go-waku.prod.statusim.net/tcp/30303/p2p/16Uiu2HAkwUKwy66nhcSFeW7y5qijNqXC4ZD3TaMMqnoEbh3wK2xU"
}, },
"enr/p2p/waku/boot": { "enr/p2p/waku": {
"boot-01.do-ams3.shards.test": "enr:-QEOuEAuAK49evunDoidpHqcmeVqZz73wt4jwHnHJlmCVBFj6EdIbZ9uH5BnCYKOEPJTns2QJKUR2XLtWyzIspPAfJF9AYJpZIJ2NIJpcISnYxMvim11bHRpYWRkcnO4YAAtNihib290LTAxLmRvLWFtczMuc2hhcmRzLnRlc3Quc3RhdHVzaW0ubmV0BnZfAC82KGJvb3QtMDEuZG8tYW1zMy5zaGFyZHMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4Jyc4sAEAQAIABAAIABAIlzZWNwMjU2azGhAt60bRUEoHNuLlnsM12sU2PIQwBwfLIJ8a_ZPEY2-Rnkg3RjcIJ2X4N1ZHCCIyiFd2FrdTIN", "node-01.do-ams3.go-waku.prod": "enr:-NC4QGRYrus1rbuI183CZmxjb1wL4_wdNMcJDKaxaTaRs-RUTXP6KQ0VxL8zGaPNNxLT45ItXS8dmQvcyBWUlTwqXfYBgmlkgnY0gmlwhIbRh8OKbXVsdGlhZGRyc7IAMDYpbm9kZS0wMS5kby1hbXMzLmdvLXdha3UucHJvZC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAjusiHwKZa-rftTSq-KnDnirfCBW-q5ClJf4YEw9N8_Jg3RjcIJ2X4N1ZHCCIyiFd2FrdTIP",
"boot-01.gc-us-central1-a.shards.test": "enr:-QEguEC3wjzOk7U5rIqiX32CCD-0_J1cYYGK_YwKSah5di2NTxJUaKQ9B7NMiEQ_-YGm-Eus4SzHtxN_fXEuVaNHql9aAYJpZIJ2NIJpcIQihw1Xim11bHRpYWRkcnO4cgA2NjFib290LTAxLmdjLXVzLWNlbnRyYWwxLWEuc2hhcmRzLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MWJvb3QtMDEuZ2MtdXMtY2VudHJhbDEtYS5zaGFyZHMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4Jyc4sAEAQAIABAAIABAIlzZWNwMjU2azGhAsY6oA0NFskUjopWFN9gwOZP1zZQ4rN5tVXV5CvcTOpDg3RjcIJ2X4N1ZHCCIyiFd2FrdTIN", "node-01.gc-us-central1-a.go-waku.prod": "enr:-Nq4QJuKC3qwV704_zzThJiIaV2Jb1YLLjRzSalpgrgAUV7vU0_fMYTQUshz6hcqds0lR3lHFzhCDEdrT6TmP1rBF1IBgmlkgnY0gmlwhCJ6XvOKbXVsdGlhZGRyc7g7ADk2Mm5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5nby13YWt1LnByb2Quc3RhdHVzaW0ubmV0BgG73gOJc2VjcDI1NmsxoQNlE4TEM5FmqnyDaMQ4viBkHpx2FZb9SPVl_XsVCrn5q4N0Y3CCdl-DdWRwgiMohXdha3UyDw",
"boot-01.ac-cn-hongkong-c.shards.test": "enr:-QEguEBb4rlxsdYCIZ8NcAlcjnb2zp4C9JbDsz-01Ix2sKNdWzI79KRFnhlakX-4F8gRYcviDvQL5eEZDOxHTupUW7VXAYJpZIJ2NIJpcIQI2hdMim11bHRpYWRkcnO4cgA2NjFib290LTAxLmFjLWNuLWhvbmdrb25nLWMuc2hhcmRzLnRlc3Quc3RhdHVzaW0ubmV0BnZfADg2MWJvb3QtMDEuYWMtY24taG9uZ2tvbmctYy5zaGFyZHMudGVzdC5zdGF0dXNpbS5uZXQGAbveA4Jyc4sAEAQAIABAAIABAIlzZWNwMjU2azGhAz-wm0ZPmCicDhRTOGfZ3stBj3O1jyWgsBpKTUcpWu5gg3RjcIJ2X4N1ZHCCIyiFd2FrdTIN" "node-01.ac-cn-hongkong-c.go-waku.prod": "enr:-Nq4QFd-E6Ej3RuGF_-zZWYLfIb4vpfhKNi6RiLWrt30O90oNuJnbhUo8rMvuX_sO95X6QoyHa9RaUYx9N7cywA4WWkBgmlkgnY0gmlwhAjSBH6KbXVsdGlhZGRyc7g7ADk2Mm5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5nby13YWt1LnByb2Quc3RhdHVzaW0ubmV0BgG73gOJc2VjcDI1NmsxoQIeZXd0MFV5YU9q0pWt05cUEc0RnptCtJarNlnxV7OpJYN0Y3CCdl-DdWRwgiMohXdha3UyDw"
}, },
"wss/p2p/waku/boot": { "wss/p2p/waku": {
"boot-01.do-ams3.shards.test": "/dns4/boot-01.do-ams3.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmAR24Mbb6VuzoyUiGx42UenDkshENVDj4qnmmbabLvo31", "node-01.do-ams3.go-waku.prod": "/dns4/node-01.do-ams3.go-waku.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAkyScd7DiwgMwzfw8CFFhznH3wRzciqEUfjDzn7vyimR8c",
"boot-01.gc-us-central1-a.shards.test": "/dns4/boot-01.gc-us-central1-a.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm8mUZ18tBWPXDQsaF7PbCKYA35z7WB2xNZH2EVq1qS8LJ", "node-01.gc-us-central1-a.go-waku.prod": "/dns4/node-01.gc-us-central1-a.go-waku.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAmKTYnoPKebjWy63e1zPKiYRCQvm25W5mNSnCFE8EmzLga",
"boot-01.ac-cn-hongkong-c.shards.test": "/dns4/boot-01.ac-cn-hongkong-c.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmGwcE8v7gmJNEWFtZtojYpPMTHy2jBLL6xRk33qgDxFWX" "node-01.ac-cn-hongkong-c.go-waku.prod": "/dns4/node-01.ac-cn-hongkong-c.go-waku.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAkwUKwy66nhcSFeW7y5qijNqXC4ZD3TaMMqnoEbh3wK2xU"
},
"tcp/p2p/waku/store": {
"store-01.do-ams3.shards.test": "/dns4/store-01.do-ams3.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAmAUdrQ3uwzuE4Gy4D56hX6uLKEeerJAnhKEHZ3DxF1EfT",
"store-02.do-ams3.shards.test": "/dns4/store-02.do-ams3.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAm9aDJPkhGxc2SFcEACTFdZ91Q5TJjp76qZEhq9iF59x7R",
"store-01.gc-us-central1-a.shards.test": "/dns4/store-01.gc-us-central1-a.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ",
"store-02.gc-us-central1-a.shards.test": "/dns4/store-02.gc-us-central1-a.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAmJnVR7ZzFaYvciPVafUXuYGLHPzSUigqAmeNw9nJUVGeM",
"store-01.ac-cn-hongkong-c.shards.test": "/dns4/store-01.ac-cn-hongkong-c.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAm2M7xs7cLPc3jamawkEqbr7cUJX11uvY7LxQ6WFUdUKUT",
"store-02.ac-cn-hongkong-c.shards.test": "/dns4/store-02.ac-cn-hongkong-c.shards.test.statusim.net/tcp/30303/p2p/16Uiu2HAm9CQhsuwPR54q27kNj9iaQVfyRzTGKrhFmr94oD8ujU6P"
},
"enr/p2p/waku/store": {
"store-01.do-ams3.shards.test": "enr:-QEQuEDom7vBcLEP3ZCvRGPyBVTUJUO5YIyXvxcibag_iq6s5Ux6Zd1_nnqEXqynppYMNOTaTzSetRhmV9IH83j72umYAYJpZIJ2NIJpcISf3_Jeim11bHRpYWRkcnO4YgAuNilzdG9yZS0wMS5kby1hbXMzLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwAwNilzdG9yZS0wMS5kby1hbXMzLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaEC36GkB96EmFufcsRAX3gGW5bZlJwuAc2JB6nq9lUDE8qDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"store-02.do-ams3.shards.test": "enr:-QEQuEAmPituRLmZuwA6z0AT_Vl-KWbb7kpyX7qcWwbjygv_Oxrdu_0kmpShNtauWxhRmaOMOYddv9IwiIS8HujxHvpbAYJpZIJ2NIJpcISf3_Kaim11bHRpYWRkcnO4YgAuNilzdG9yZS0wMi5kby1hbXMzLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwAwNilzdG9yZS0wMi5kby1hbXMzLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaEC0jOth5qhqWd_NmDOAsiPjAiJZMTD-2WzsKsET75PcLCDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"store-01.gc-us-central1-a.shards.test": "enr:-QEiuEBW0x-NQAwfFIgwrwtMRbPpWYRbWzsQ6nMDQK5K8vT8uAph5mlAw-TaeIxw9K2Vc0QuEYzf8-MnOESVyQ-C6ywcAYJpZIJ2NIJpcIQiqsAnim11bHRpYWRkcnO4dAA3NjJzdG9yZS0wMS5nYy11cy1jZW50cmFsMS1hLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA5NjJzdG9yZS0wMS5nYy11cy1jZW50cmFsMS1hLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaEDf2gcTbDga3Hgy8gu-bwRUbs7_7Vn2hxudCXPQ0M7cJCDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"store-02.gc-us-central1-a.shards.test": "enr:-QEiuEDjbS1EbRmNA7Gl1F3z_NsTHloyfZp4h0tm5cQmTvo5SlFGIBPPpmB6oycGnVGCHFPmqV_XbJJRO5pObWa5dOHgAYJpZIJ2NIJpcIQiqpoCim11bHRpYWRkcnO4dAA3NjJzdG9yZS0wMi5nYy11cy1jZW50cmFsMS1hLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA5NjJzdG9yZS0wMi5nYy11cy1jZW50cmFsMS1hLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaEDWxINW5DCQgYg-U43t2f9dUfpHfZrp2RdL-IomGWtY4KDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"store-01.ac-cn-hongkong-c.shards.test": "enr:-QEiuEDkMIJT5pVMmtzHD5RATLyU0kAG0tKcC3AE3BQe0O6S9R6OsA7PEVaaUg52fA4_I2pwjoW2GroE6uR9a-7Vdfy-AYJpZIJ2NIJpcIQI2kpJim11bHRpYWRkcnO4dAA3NjJzdG9yZS0wMS5hYy1jbi1ob25na29uZy1jLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA5NjJzdG9yZS0wMS5hYy1jbi1ob25na29uZy1jLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaECZtdI3Wq88fYXHYUShn7AMktB3OaVo98ock70-RSMChiDdGNwgnZfg3VkcIIjKIV3YWt1MgM",
"store-02.ac-cn-hongkong-c.shards.test": "enr:-QEiuEBzOdkswwOBobEe-nUvdtALMP8sjV9b_v9rQS4E0QOv2TVdrXRKKrBzOgk8TIXFtdry3RrowN5pTH7vBWl8TPKUAYJpZIJ2NIJpcIQI2nnoim11bHRpYWRkcnO4dAA3NjJzdG9yZS0wMi5hYy1jbi1ob25na29uZy1jLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAZ2XwA5NjJzdG9yZS0wMi5hYy1jbi1ob25na29uZy1jLnNoYXJkcy50ZXN0LnN0YXR1c2ltLm5ldAYBu94DgnJziwAQBAAgAEAAgAEAiXNlY3AyNTZrMaECzJ3LruqSdw0Ec2FKpAdT22kcWVyBiYvMGim2wRWzkjSDdGNwgnZfg3VkcIIjKIV3YWt1MgM"
},
"wss/p2p/waku/store": {
"store-01.do-ams3.shards.test": "/dns4/store-01.do-ams3.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmAUdrQ3uwzuE4Gy4D56hX6uLKEeerJAnhKEHZ3DxF1EfT",
"store-02.do-ams3.shards.test": "/dns4/store-02.do-ams3.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm9aDJPkhGxc2SFcEACTFdZ91Q5TJjp76qZEhq9iF59x7R",
"store-01.gc-us-central1-a.shards.test": "/dns4/store-01.gc-us-central1-a.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ",
"store-02.gc-us-central1-a.shards.test": "/dns4/store-02.gc-us-central1-a.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmJnVR7ZzFaYvciPVafUXuYGLHPzSUigqAmeNw9nJUVGeM",
"store-01.ac-cn-hongkong-c.shards.test": "/dns4/store-01.ac-cn-hongkong-c.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm2M7xs7cLPc3jamawkEqbr7cUJX11uvY7LxQ6WFUdUKUT",
"store-02.ac-cn-hongkong-c.shards.test": "/dns4/store-02.ac-cn-hongkong-c.shards.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm9CQhsuwPR54q27kNj9iaQVfyRzTGKrhFmr94oD8ujU6P"
} }
}, },
"notify.prod": { "go-waku.test": {
"tcp/p2p/waku": { "tcp/p2p/waku": {
"node-01.do-ams3.notify.prod": "enode://401ba5eda402678dc78a0a40fd0795f4ea8b1e34972c4d15cf33ac01292341c89f0cbc637fa9f7a3ffe0b9dfe90e9cdae7a14925500ab01b6a91c67bae42a97a@178.128.139.80:1443", "node-01.do-ams3.go-waku.test": "/dns4/node-01.do-ams3.go-waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAm9vnvCQgCDrynDK1h7GJoEZVGvnuzq84RyDQ3DEdXmcX7",
"node-01.gc-us-central1-a.notify.prod": "enode://181141b1d111908aaf05f4788e6778ec07073a1d4e1ce43c73815c40ee4e7345a1cbf5a90a45f601bf3763f12be63b01624ba1f36eeb9572455e7034b8f9f2c4@34.71.141.140:1443", "node-01.gc-us-central1-a.go-waku.test": "/dns4/node-01.gc-us-central1-a.go-waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAmPz63Xc6AuVkDeujz7YeZta18rcdau3Y1BzaxKAfDrBqz",
"node-01.ac-cn-hongkong-c.notify.prod": "enode://5ffc34d5ffda180d94cd3974d9ed2bb082ede68f342babdbe801ceffb7da902087d43f9aa961c7b85029358874c08ef04ecad9f1d95a1f0e448cbdd5d04350c7@47.242.88.117:1443" "node-01.ac-cn-hongkong-c.go-waku.test": "/dns4/node-01.ac-cn-hongkong-c.go-waku.test.statusim.net/tcp/30303/p2p/16Uiu2HAmBDbMWFiG9ki8sDw6fYtraSxo4oHU9HbuN43S2HVyq1FD"
},
"enr/p2p/waku": {
"node-01.do-ams3.go-waku.test": "enr:-NC4QKYOHGKa69sKLLKbRlcR890mmPRIboV0MUSMQtvjiwd7SISpBYqVibOpmTuS0kRlU6KmBQs_MXA9LPOBgMbRB7UBgmlkgnY0gmlwhIbRhj-KbXVsdGlhZGRyc7IAMDYpbm9kZS0wMS5kby1hbXMzLmdvLXdha3UudGVzdC5zdGF0dXNpbS5uZXQGAbveA4lzZWNwMjU2azGhAtd5TiUZInW1nFF7nZtkXrw0iuqOLyV31_f7EhuM_Fs-g3RjcIJ2X4N1ZHCCIyiFd2FrdTIP",
"node-01.gc-us-central1-a.go-waku.test": "enr:-Nq4QEb3btlua6_4EdC1SAF0wTl0JqI8Du34Bm7raZoYOAbHPmRzVt4rq-0ItCM3L4MkOpCFn_X26aTq-Q2YEK8DuGEBgmlkgnY0gmlwhCPft1uKbXVsdGlhZGRyc7g7ADk2Mm5vZGUtMDEuZ2MtdXMtY2VudHJhbDEtYS5nby13YWt1LnRlc3Quc3RhdHVzaW0ubmV0BgG73gOJc2VjcDI1NmsxoQOoVQePH5eRqlcCf-0XwZsoJPeZp1Mq59un_jYM9hUc6YN0Y3CCdl-DdWRwgiMohXdha3UyDw",
"node-01.ac-cn-hongkong-c.go-waku.test": "enr:-Nq4QCWN6qBpeK_1GiqE_F45k3MmBDxaOJ7X9fAOKO0qu_6xCPAkjOVz6Th_vn8n-CLdEizO5oJ6YOivuAiRHDdJ3q4BgmlkgnY0gmlwhAjaAm6KbXVsdGlhZGRyc7g7ADk2Mm5vZGUtMDEuYWMtY24taG9uZ2tvbmctYy5nby13YWt1LnRlc3Quc3RhdHVzaW0ubmV0BgG73gOJc2VjcDI1NmsxoQLqosp15CMf5c4k-z9MGM7_aiR0DGdmSrpjQ_xWnmsTOIN0Y3CCdl-DdWRwgiMohXdha3UyDw"
},
"wss/p2p/waku": {
"node-01.do-ams3.go-waku.test": "/dns4/node-01.do-ams3.go-waku.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAm9vnvCQgCDrynDK1h7GJoEZVGvnuzq84RyDQ3DEdXmcX7",
"node-01.gc-us-central1-a.go-waku.test": "/dns4/node-01.gc-us-central1-a.go-waku.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmPz63Xc6AuVkDeujz7YeZta18rcdau3Y1BzaxKAfDrBqz",
"node-01.ac-cn-hongkong-c.go-waku.test": "/dns4/node-01.ac-cn-hongkong-c.go-waku.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmBDbMWFiG9ki8sDw6fYtraSxo4oHU9HbuN43S2HVyq1FD"
} }
} }
} }
Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

+3 -8
View File
@@ -21,6 +21,8 @@ function append_env_export() {
VAR_VALUE=$(must_get_env "${VAR_NAME}") VAR_VALUE=$(must_get_env "${VAR_NAME}")
echo "export ${VAR_NAME}=\"${VAR_VALUE}\";" >> "${SECRETS_FILE_PATH}" echo "export ${VAR_NAME}=\"${VAR_VALUE}\";" >> "${SECRETS_FILE_PATH}"
} }
export COMMIT_HASH="$(git rev-parse --verify HEAD)"
nixOpts=() nixOpts=()
# We create if now so the trap knows its location # We create if now so the trap knows its location
@@ -31,17 +33,10 @@ trap "rm -vf ${SECRETS_FILE_PATH}" EXIT ERR INT QUIT
# Names of variables containing secrets to save in env file. # Names of variables containing secrets to save in env file.
SECRETS_ENV_VARS=( SECRETS_ENV_VARS=(
'ALCHEMY_ETHEREUM_MAINNET_TOKEN'
'ALCHEMY_ETHEREUM_GOERLI_TOKEN'
'ALCHEMY_ETHEREUM_SEPOLIA_TOKEN'
'ALCHEMY_ARBITRUM_GOERLI_TOKEN' 'ALCHEMY_ARBITRUM_GOERLI_TOKEN'
'ALCHEMY_ARBITRUM_MAINNET_TOKEN' 'ALCHEMY_ARBITRUM_MAINNET_TOKEN'
'ALCHEMY_ARBITRUM_SEPOLIA_TOKEN'
'ALCHEMY_OPTIMISM_GOERLI_TOKEN' 'ALCHEMY_OPTIMISM_GOERLI_TOKEN'
'ALCHEMY_OPTIMISM_MAINNET_TOKEN' 'ALCHEMY_OPTIMISM_MAINNET_TOKEN'
'ALCHEMY_OPTIMISM_SEPOLIA_TOKEN'
'RARIBLE_MAINNET_API_KEY'
'RARIBLE_TESTNET_API_KEY'
'INFURA_TOKEN' 'INFURA_TOKEN'
'INFURA_TOKEN_SECRET' 'INFURA_TOKEN_SECRET'
'OPENSEA_API_KEY' 'OPENSEA_API_KEY'
@@ -71,4 +66,4 @@ else
fi fi
"${GIT_ROOT}/nix/scripts/build.sh" targets.mobile.android.build "${nixOpts[@]}" "${GIT_ROOT}/nix/scripts/build.sh" targets.mobile.android.release "${nixOpts[@]}"
-30
View File
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
ADB_INSTALL_LOG_FILE="${GIT_ROOT}/logs/adb_install.log"
ADB_SHELL_MONKEY_LOG_FILE="${GIT_ROOT}/logs/adb_shell_monkey.log"
# Generate android debug build.
export ANDROID_ABI_INCLUDE=$("${GIT_ROOT}/scripts/adb_devices_abis.sh")
export BUILD_ENV=debug
export BUILD_TYPE=debug
"${GIT_ROOT}/scripts/build-android.sh"
# Install the APK on running emulator or android device.
installAndLaunchApp() {
adb install -r ./result/app-debug.apk > "${ADB_INSTALL_LOG_FILE}" 2>&1
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
# connected android devices need this port to be exposed for metro
adb reverse "tcp:${RCT_METRO_PORT}" "tcp:${RCT_METRO_PORT}"
adb shell monkey -p im.status.ethereum.debug 1 > "${ADB_SHELL_MONKEY_LOG_FILE}" 2>&1
}
showAdbLogs() {
cat "${ADB_INSTALL_LOG_FILE}" >&2;
cat "${ADB_SHELL_MONKEY_LOG_FILE}" >&2;
}
trap showAdbLogs EXIT ERR INT QUIT
installAndLaunchApp &
exec "${GIT_ROOT}/scripts/run-metro.sh" 2>&1
-55
View File
@@ -1,55 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
set -m # needed to access jobs
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
XCRUN_DEVICE_INSTALL_LOG_DIR="${GIT_ROOT}/logs/xcrun_device_install.log"
XCRUN_DEVICE_PROCESS_LAUNCH_LOG_DIR="${GIT_ROOT}/logs/xcrun_device_process_launch.log"
XCRUN_DEVICE_PROCESS_RESUME_LOG_DIR="${GIT_ROOT}/logs/xcrun_device_process_resume.log"
# Install on the connected device
installAndLaunchApp() {
xcrun devicectl device install app --device "${DEVICE_UUID}" "${APP_PATH}" --json-output "${XCRUN_DEVICE_INSTALL_LOG_DIR}" 2>&1
# Extract installationURL
INSTALLATION_URL=$(jq -r '.result.installedApplications[0].installationURL' "${XCRUN_DEVICE_INSTALL_LOG_DIR}")
# launch the app and put it in background
xcrun devicectl device process launch --no-activate --verbose --device "${DEVICE_UUID}" "${INSTALLATION_URL}" --json-output "${XCRUN_DEVICE_PROCESS_LAUNCH_LOG_DIR}"
# Extract background PID of status app
STATUS_PID=$(jq -r '.result.process.processIdentifier' "${XCRUN_DEVICE_PROCESS_LAUNCH_LOG_DIR}")
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
# now that metro is ready, resume the app from background
xcrun devicectl device process resume --device "${DEVICE_UUID}" --pid "${STATUS_PID}" > "${XCRUN_DEVICE_PROCESS_RESUME_LOG_DIR}" 2>&1
}
showXcrunLogs() {
cat "${XCRUN_DEVICE_INSTALL_LOG_DIR}" >&2;
cat "${XCRUN_DEVICE_PROCESS_LAUNCH_LOG_DIR}" >&2;
cat "${XCRUN_DEVICE_PROCESS_RESUME_LOG_DIR}" >&2;
}
# find the first connected iPhone's UUID
DEVICE_UUID=$(idevice_id -l)
# Check if any device is connected
if [ -z "${DEVICE_UUID}" ]; then
echo "No connected iPhone device detected."
exit 1
else
echo "Connected iPhone UDID: ${DEVICE_UUID}"
fi
BUILD_DIR="${GIT_ROOT}/build"
#iOS build of debug scheme
xcodebuild -workspace "ios/StatusIm.xcworkspace" -configuration Debug -scheme StatusIm -destination id="${DEVICE_UUID}" -derivedDataPath "${BUILD_DIR}" -verbose | xcbeautify
APP_PATH="${BUILD_DIR}/Build/Products/Debug-iphoneos/StatusIm.app"
trap showXcrunLogs EXIT ERR INT QUIT
installAndLaunchApp &
exec "${GIT_ROOT}/scripts/run-metro.sh" 2>&1
-69
View File
@@ -1,69 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
set -m # needed to access jobs
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
XCRUN_INSTALL_LOG_FILE="${GIT_ROOT}/logs/xcrun_install.log"
XCRUN_LAUNCH_LOG_FILE="${GIT_ROOT}/logs/xcrun_launch.log"
XCRUN_SIMULATOR_JSON_FILE="${GIT_ROOT}/logs/ios_simulators_list.log"
# Install on the simulator
installAndLaunchApp() {
xcrun simctl install "$UDID" "$APP_PATH" > "${XCRUN_INSTALL_LOG_FILE}" 2>&1
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
xcrun simctl launch "$UDID" im.status.ethereum.debug > "${XCRUN_LAUNCH_LOG_FILE}" 2>&1
}
showXcrunLogs() {
cat "${XCRUN_INSTALL_LOG_FILE}" >&2;
cat "${XCRUN_LAUNCH_LOG_FILE}" >&2;
}
# Check if the first argument is provided
if [ -z "${1-}" ]; then
echo "Error: No simulator name provided." >&2
exit 1
fi
# fetch available iOS Simulators
xcrun simctl list devices -j > "${XCRUN_SIMULATOR_JSON_FILE}"
SIMULATOR=${1}
# get the first available UDID for Simulators that match the name
read -r UDID SIMULATOR_STATE IS_AVAILABLE < <(jq --raw-output --arg simulator "${SIMULATOR}" '
[ .devices[] | .[] | select(.name == $simulator) ] |
map(select(.isAvailable)) + map(select(.isAvailable | not)) |
first |
"\(.udid) \(.state) \(.isAvailable)"
' "${XCRUN_SIMULATOR_JSON_FILE}")
if [ "${IS_AVAILABLE}" == false ] || [ "${UDID}" == null ]; then
echo "Error: Simulator ${SIMULATOR} is not available, Please find and install them."
echo "For help please refer"
echo "https://developer.apple.com/documentation/safari-developer-tools/adding-additional-simulators#Add-and-remove-Simulators " >&2
exit 1
fi
# sometimes a simulator is already running, shut it down to avoid errors
if [ "${SIMULATOR_STATE}" != "Shutdown" ]; then
xcrun simctl shutdown "${UDID}"
fi
# boot up iOS for simulator
xcrun simctl boot "${UDID}"
# start the simulator
open -a Simulator --args -CurrentDeviceUDID "${UDID}"
BUILD_DIR="${GIT_ROOT}/build"
#iOS build of debug scheme
xcodebuild -workspace "ios/StatusIm.xcworkspace" -configuration Debug -scheme StatusIm -destination id="${UDID}" -derivedDataPath "${BUILD_DIR}" -verbose | xcbeautify
APP_PATH="${BUILD_DIR}/Build/Products/Debug-iphonesimulator/StatusIm.app"
trap showXcrunLogs EXIT ERR INT QUIT
installAndLaunchApp &
exec "${GIT_ROOT}/scripts/run-metro.sh" 2>&1
-5
View File
@@ -1,5 +0,0 @@
#!/usr/bin/env bash
pkill -f 'react-native start'
react-native start --reset-cache
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
source "${GIT_ROOT}/scripts/colors.sh"
METRO_PORT=8081
METRO_PID="$(lsof -i :${METRO_PORT} | awk 'NR!=1 {print $2}' | sort -u | tr '\r\n' ' ')"
if [ ! -z "$METRO_PID" ]; then
echo -e "${YLW}TCP port ${METRO_PORT} is required by the Metro packager.\nThe following processes currently have the port open, preventing Metro from starting:${RST}"
ps -fp $METRO_PID
echo -e "${YLW}Do you want to terminate them (y/n)?${RST}"
read -n 1 term
[[ $term == 'y' ]] && kill $METRO_PID
fi
react-native start --reset-cache
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
TIMEOUT=10 # Metro should not take this long to start.
while [ "${TIMEOUT}" -gt 0 ]; do
if ! lsof -i:8081 &> /dev/null; then
echo "."
sleep 1
((TIMEOUT--))
else
break
fi
done
+7 -27
View File
@@ -63,17 +63,10 @@
{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/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
status-im.config/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
status-im.config/ALCHEMY_ETHEREUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ETHEREUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ETHEREUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN" status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN" status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"} status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
:compiler-options {:output-feature-set :es5 :compiler-options {:output-feature-set :es5
;; We disable `:fn-deprecated` warnings because we ;; We disable `:fn-deprecated` warnings because we
;; are managing deprecation via clj-kondo and we ;; are managing deprecation via clj-kondo and we
@@ -97,17 +90,10 @@
{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/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
status-im.config/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
status-im.config/ALCHEMY_ETHEREUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ETHEREUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ETHEREUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN" status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN" status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"} status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
:compiler-options {:output-feature-set :es6 :compiler-options {:output-feature-set :es6
;;disable for android build as there ;;disable for android build as there
;;is an intermittent warning with deftype ;;is an intermittent warning with deftype
@@ -137,17 +123,10 @@
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/RARIBLE_MAINNET_API_KEY #shadow/env "RARIBLE_MAINNET_API_KEY"
status-im.config/RARIBLE_TESTNET_API_KEY #shadow/env "RARIBLE_TESTNET_API_KEY"
status-im.config/ALCHEMY_ETHEREUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ETHEREUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ETHEREUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ETHEREUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ETHEREUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN" status-im.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN" status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"} status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
:compiler-options :compiler-options
{;; needed because we override require and it {;; needed because we override require and it
;; messes with source-map which reports callstack ;; messes with source-map which reports callstack
@@ -176,6 +155,7 @@
;; option setupFilesAfterEnv. ;; option setupFilesAfterEnv.
test-helpers.component-tests-preload test-helpers.component-tests-preload
status-im.setup.schema-preload status-im.setup.schema-preload
quo.core-spec quo.core-spec
status-im.core-spec] status-im.core-spec]
:ns-regexp "component-spec$" :ns-regexp "component-spec$"
@@ -1,6 +1,6 @@
(ns legacy.status-im.data-store.activities-test (ns legacy.status-im.data-store.activities-test
(:require (:require
[cljs.test :refer [deftest is]] [cljs.test :refer [deftest is testing]]
[legacy.status-im.data-store.activities :as store] [legacy.status-im.data-store.activities :as store]
[status-im.constants :as constants] [status-im.constants :as constants]
[status-im.contexts.shell.activity-center.notification-types :as notification-types])) [status-im.contexts.shell.activity-center.notification-types :as notification-types]))
@@ -18,6 +18,89 @@
:name chat-name :name chat-name
:replyMessage {}}) :replyMessage {}})
(deftest <-rpc-test
(testing "renames keys"
(is (= {:name chat-name
:chat-id chat-id
:contact-verification-status constants/contact-verification-status-pending}
(-> raw-notification
store/<-rpc
(dissoc :last-message :message :reply-message)))))
(testing "transforms messages from RPC response"
(is
(= {:last-message {:quoted-message nil
:outgoing-status nil
:command-parameters nil
:link-previews []
:content {:sticker nil
:rtl? nil
:ens-name nil
:parsed-text nil
:response-to nil
:chat-id nil
:image nil
:line-count nil
:links nil
:text nil}
:outgoing false}
:message nil
:reply-message {:quoted-message nil
:outgoing-status nil
:command-parameters nil
:link-previews []
:content {:sticker nil
:rtl? nil
:ens-name nil
:parsed-text nil
:response-to nil
:chat-id nil
:image nil
:line-count nil
:links nil
:text nil}
:outgoing false}}
(-> raw-notification
store/<-rpc
(select-keys [:last-message :message :reply-message])))))
(testing "augments notification based on its type"
(is (= {:chat-name chat-name
:chat-type constants/private-group-chat-type
:name chat-name}
(-> raw-notification
(assoc :type notification-types/reply)
store/<-rpc
(select-keys [:name :chat-type :chat-name :public? :group-chat]))))
(is (= {:chat-name chat-name
:chat-type constants/private-group-chat-type
:name chat-name}
(-> raw-notification
(assoc :type notification-types/mention)
store/<-rpc
(select-keys [:name :chat-type :chat-name :public? :group-chat]))))
(is (= {:chat-name chat-name
:chat-type constants/private-group-chat-type
:group-chat true
:name chat-name
:public? false}
(-> raw-notification
(assoc :type notification-types/private-group-chat)
store/<-rpc
(select-keys [:name :chat-type :chat-name :public? :group-chat]))))
(is (= {:chat-name chat-name
:chat-type constants/one-to-one-chat-type
:group-chat false
:name chat-name
:public? false}
(-> raw-notification
(assoc :type notification-types/one-to-one-chat)
store/<-rpc
(select-keys [:name :chat-type :chat-name :public? :group-chat]))))))
(deftest remove-pending-contact-request-test (deftest remove-pending-contact-request-test
(is (true? (store/pending-contact-request? (is (true? (store/pending-contact-request?
"contact-id" "contact-id"
@@ -4,6 +4,13 @@
[clojure.walk :as walk] [clojure.walk :as walk]
[status-im.constants :as constants])) [status-im.constants :as constants]))
(defn rpc->channel-permissions
[rpc-channels-permissions]
(update-vals rpc-channels-permissions
(fn [{:keys [viewAndPostPermissions viewOnlyPermissions]}]
{:view-only (set/rename-keys viewOnlyPermissions {:satisfied :satisfied?})
:view-and-post (set/rename-keys viewAndPostPermissions {:satisfied :satisfied?})})))
(defn <-revealed-accounts-rpc (defn <-revealed-accounts-rpc
[accounts] [accounts]
(mapv (mapv
@@ -27,9 +34,8 @@
(assoc acc (assoc acc
(name k) (name k)
(-> v (-> v
(assoc :token-gated? (:tokenGated v) (assoc :can-post? (:canPost v))
:can-post? (:canPost v)) (dissoc :canPost)
(dissoc :canPost :tokenGated)
(update :members walk/stringify-keys)))) (update :members walk/stringify-keys))))
{} {}
chats)) chats))
@@ -38,37 +44,22 @@
[categ] [categ]
(reduce-kv #(assoc %1 (name %2) %3) {} categ)) (reduce-kv #(assoc %1 (name %2) %3) {} categ))
(defn role-permission?
[token-permission]
(contains? constants/community-role-permissions (:type token-permission)))
(defn membership-permission?
[token-permission]
(= (:type token-permission) constants/community-token-permission-become-member))
(defn <-rpc (defn <-rpc
[c] [c]
(-> c (-> c
(set/rename-keys (set/rename-keys {:canRequestAccess :can-request-access?
{:canRequestAccess :can-request-access? :canManageUsers :can-manage-users?
:canManageUsers :can-manage-users? :canDeleteMessageForEveryone :can-delete-message-for-everyone?
:canDeleteMessageForEveryone :can-delete-message-for-everyone? :canJoin :can-join?
;; This flag is misleading based on its name alone :requestedToJoinAt :requested-to-join-at
;; because it should not be used to decide if the user :isMember :is-member?
;; is *allowed* to join. Allowance is based on token :adminSettings :admin-settings
;; permissions. Still, the flag can be used to know :tokenPermissions :token-permissions
;; whether or not the user will have to wait until an :communityTokensMetadata :tokens-metadata
;; admin approves a join request. :introMessage :intro-message
:canJoin :can-join? :muteTill :muted-till
:requestedToJoinAt :requested-to-join-at :lastOpenedAt :last-opened-at
:isMember :is-member? :joinedAt :joined-at})
:adminSettings :admin-settings
:tokenPermissions :token-permissions
:communityTokensMetadata :tokens-metadata
:introMessage :intro-message
:muteTill :muted-till
:lastOpenedAt :last-opened-at
:joinedAt :joined-at})
(update :admin-settings (update :admin-settings
set/rename-keys set/rename-keys
{:pinMessageAllMembersEnabled :pin-message-all-members-enabled?}) {:pinMessageAllMembersEnabled :pin-message-all-members-enabled?})
@@ -76,16 +67,9 @@
(update :chats <-chats-rpc) (update :chats <-chats-rpc)
(update :token-permissions seq) (update :token-permissions seq)
(update :categories <-categories-rpc) (update :categories <-categories-rpc)
(assoc :role-permissions?
(->> c
:tokenPermissions
vals
(some role-permission?)))
(assoc :membership-permissions? (assoc :membership-permissions?
(->> c (some #(= (:type %) constants/community-token-permission-become-member)
:tokenPermissions (vals (:tokenPermissions c))))
vals
(some membership-permission?)))
(assoc :token-images (assoc :token-images
(reduce (fn [acc {sym :symbol image :image}] (reduce (fn [acc {sym :symbol image :image}]
(assoc acc sym image)) (assoc acc sym image))
@@ -0,0 +1,23 @@
(ns legacy.status-im.data-store.communities-test
(:require
[cljs.test :refer [deftest is]]
[legacy.status-im.data-store.communities :as sut]))
(def permissions
{"community-id-chat-1"
{:viewOnlyPermissions {:satisfied false
:permissions {:token-permission-id-01 {:criteria [false]}}}
:viewAndPostPermissions {:satisfied true :permissions {}}}
"community-id-chat-2"
{:viewOnlyPermissions {:satisfied true :permissions {}}
:viewAndPostPermissions {:satisfied true :permissions {}}}})
(deftest rpc->channel-permissions-test
(is (= {"community-id-chat-1"
{:view-only {:satisfied? false
:permissions {:token-permission-id-01 {:criteria [false]}}}
:view-and-post {:satisfied? true :permissions {}}}
"community-id-chat-2"
{:view-only {:satisfied? true :permissions {}}
:view-and-post {:satisfied? true :permissions {}}}}
(sut/rpc->channel-permissions permissions))))
@@ -53,14 +53,7 @@
:new :new? :new :new?
:albumImagesCount :album-images-count :albumImagesCount :album-images-count
:displayName :display-name :displayName :display-name
:linkPreviews :link-previews :linkPreviews :link-previews})
:statusLinkPreviews :status-link-previews
:bridgeMessage :bridge-message})
(update :bridge-message
set/rename-keys
{:bridgeName :bridge-name
:userName :user-name
:userAvatar :user-avatar})
(update :link-previews #(map <-link-preview-rpc %)) (update :link-previews #(map <-link-preview-rpc %))
(update :quoted-message (update :quoted-message
set/rename-keys set/rename-keys
@@ -21,7 +21,6 @@
:image nil :image nil
:response-to "a" :response-to "a"
:links nil} :links nil}
:bridge-message nil
:whisper-timestamp 1 :whisper-timestamp 1
:contact-verification-state 1 :contact-verification-state 1
:contact-request-state 2 :contact-request-state 2
@@ -0,0 +1,93 @@
(ns legacy.status-im.ethereum.subscriptions
(:require
[legacy.status-im.ethereum.transactions.core :as transactions]
[legacy.status-im.wallet.core :as wallet.core]
[legacy.status-im.wallet.db :as wallet]
[taoensso.timbre :as log]
[utils.ethereum.eip.eip55 :as eip55]
[utils.re-frame :as rf]))
(rf/defn new-transfers
[cofx block-number accounts]
(log/debug "[wallet-subs] new-transfers"
"accounts" accounts
"block" block-number)
(transactions/check-watched-transactions cofx))
(rf/defn recent-history-fetching-started
[{:keys [db]} accounts]
(log/debug "[wallet-subs] recent-history-fetching-started"
"accounts"
accounts)
(let [event (get db :wallet-legacy/on-recent-history-fetching)]
(cond-> {:db (-> db
(transactions/update-fetching-status accounts :recent? true)
(assoc :wallet-legacy/recent-history-fetching-started? true)
(dissoc :wallet-legacy/on-recent-history-fetching))}
event
(assoc :dispatch event))))
(rf/defn recent-history-fetching-ended
[{:keys [db]} {:keys [accounts blockNumber]}]
(log/debug "[wallet-subs] recent-history-fetching-ended"
"accounts" accounts
"block" blockNumber)
{:db (-> db
(assoc :ethereum/current-block blockNumber)
(update-in [:wallet-legacy :accounts]
wallet/remove-transactions-since-block
blockNumber)
(transactions/update-fetching-status accounts :recent? false)
(dissoc :wallet-legacy/waiting-for-recent-history?
:wallet-legacy/refreshing-history?
:wallet-legacy/fetching-error
:wallet-legacy/recent-history-fetching-started?))
:transactions/get-transfers
{:chain-tokens (:wallet-legacy/all-tokens db)
:addresses (reduce
(fn [v address]
(let [normalized-address
(eip55/address->checksum address)]
(if (contains? v normalized-address)
v
(conj v address))))
[]
accounts)
:before-block blockNumber
:limit 20}})
(rf/defn fetching-error
[{:keys [db] :as cofx} {:keys [message]}]
(rf/merge
cofx
{:db (assoc db :wallet-legacy/fetching-error message)}
(wallet.core/after-checking-history)))
(rf/defn non-archival-node-detected
[{:keys [db]} _]
{:db (assoc db :wallet-legacy/non-archival-node true)})
(rf/defn new-wallet-event
[cofx {:keys [type blockNumber accounts] :as event}]
(log/debug "[wallet-subs] new-wallet-event"
"event-type" type
"blockNumber" blockNumber
"accounts" accounts)
(case type
"new-transfers" (new-transfers cofx blockNumber accounts)
"recent-history-fetching" (recent-history-fetching-started cofx accounts)
"recent-history-ready" (recent-history-fetching-ended cofx event)
"fetching-history-error" (fetching-error cofx event)
"non-archival-node-detected" (non-archival-node-detected cofx event)
"pending-transaction-status-changed" {:fx
[[:dispatch
[:wallet/pending-transaction-status-changed-received
event]]]}
"wallet-owned-collectibles-filtering-done" {:fx [[:dispatch
[:wallet/owned-collectibles-filtering-done
event]]]}
"wallet-get-collectibles-details-done" {:fx [[:dispatch
[:wallet/get-collectible-details-done
event]]]}
"wallet-tick-reload" {:fx [[:dispatch [:wallet/reload]]]}
(log/debug ::unknown-wallet-event :type type :event event)))
+1
View File
@@ -8,6 +8,7 @@
legacy.status-im.chat.models.loading legacy.status-im.chat.models.loading
legacy.status-im.contact.block legacy.status-im.contact.block
legacy.status-im.currency.core legacy.status-im.currency.core
legacy.status-im.ethereum.subscriptions
legacy.status-im.fleet.core legacy.status-im.fleet.core
[legacy.status-im.keycard.core :as keycard] [legacy.status-im.keycard.core :as keycard]
legacy.status-im.log-level.core legacy.status-im.log-level.core
@@ -36,7 +36,7 @@
[(mailserver/process-next-messages-request) [(mailserver/process-next-messages-request)
(bottom-sheet/hide-bottom-sheet-old) (bottom-sheet/hide-bottom-sheet-old)
(wallet/restart-wallet-service nil) (wallet/restart-wallet-service nil)
#(add-new-contact/set-new-identity-reconnected %)] (add-new-contact/set-new-identity-reconnected)]
logged-in? logged-in?
[(mailserver/process-next-messages-request) [(mailserver/process-next-messages-request)
@@ -31,6 +31,7 @@
(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 {:set-root :progress
:chat.ui/clear-inputs nil
:effects.shell/reset-state nil :effects.shell/reset-state nil
:hide-popover nil :hide-popover nil
::logout nil ::logout nil
+1 -1
View File
@@ -72,7 +72,7 @@
:PeerExchange true :PeerExchange true
:Port 0 :Port 0
:UDPPort 0 :UDPPort 0
:LightClient false}) :LightClient true})
(def login-node-config (def login-node-config
{:WalletConfig (cond-> {:Enabled true} {:WalletConfig (cond-> {:Enabled true}
+1 -5
View File
@@ -81,9 +81,5 @@
{:db (-> db {:db (-> db
(assoc :contacts/identity identity) (assoc :contacts/identity identity)
(assoc :contacts/ens-name ens-name)) (assoc :contacts/ens-name ens-name))
:dispatch [:contacts/build-contact :dispatch [:contacts/build-contact identity ens-name true]}
{:pubkey identity
:ens ens-name
:success-fn (fn [_]
{:dispatch [:open-modal :profile]})}]}
{:dispatch [:navigate-to :my-profile]}))) {:dispatch [:navigate-to :my-profile]})))
@@ -19,8 +19,7 @@
transactions-management-enabled? transactions-management-enabled?
current-fleet current-fleet
webview-debug webview-debug
test-networks-enabled? test-networks-enabled?]}]
is-sepolia-enabled?]}]
(keep (keep
identity identity
[{:size :small [{:size :small
@@ -111,14 +110,6 @@
#(re-frame/dispatch [:profile.settings/toggle-test-networks]) #(re-frame/dispatch [:profile.settings/toggle-test-networks])
:accessory :switch :accessory :switch
:active test-networks-enabled?} :active test-networks-enabled?}
{:size :small
:title "Enable Sepolia as test network"
:accessibility-label :enable-sepolia-as-test-network
:container-margin-bottom 8
:on-press
#(re-frame/dispatch [:profile.settings/toggle-sepolia-test-network])
:accessory :switch
:active is-sepolia-enabled?}
{:size :small {:size :small
:title (i18n/label :t/set-currency) :title (i18n/label :t/set-currency)
:accessibility-label :wallet-change-currency :accessibility-label :wallet-change-currency
@@ -139,7 +130,6 @@
(views/defview advanced-settings (views/defview advanced-settings
[] []
(views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?] (views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?]
is-sepolia-enabled? [:profile/is-sepolia-enabled?]
light-client-enabled? [:profile/light-client-enabled?] light-client-enabled? [:profile/light-client-enabled?]
webview-debug [:profile/webview-debug] webview-debug [:profile/webview-debug]
network-name [:network-name] network-name [:network-name]
@@ -155,7 +145,6 @@
:current-fleet current-fleet :current-fleet current-fleet
:dev-mode? false :dev-mode? false
:webview-debug webview-debug :webview-debug webview-debug
:test-networks-enabled? test-networks-enabled? :test-networks-enabled? test-networks-enabled?})
:is-sepolia-enabled? is-sepolia-enabled?})
:key-fn (fn [_ i] (str i)) :key-fn (fn [_ i] (str i))
:render-fn render-item}])) :render-fn render-item}]))
@@ -63,6 +63,6 @@
[quo/button [quo/button
{:theme :positive {:theme :positive
:style {:margin-horizontal 8} :style {:margin-horizontal 8}
:on-press #(debounce/throttle-and-dispatch [::network/connect-network-pressed target-network-id] :on-press #(debounce/dispatch-and-chill [::network/connect-network-pressed target-network-id]
1000)} 1000)}
(i18n/label :t/allow)]]]])) (i18n/label :t/allow)]]]]))
@@ -84,7 +84,7 @@
(zero? (count selected))) (zero? (count selected)))
:accessibility-label :share-community-link :accessibility-label :share-community-link
:type :secondary :type :secondary
:on-press #(debounce/throttle-and-dispatch :on-press #(debounce/dispatch-and-chill
[(if can-invite? [(if can-invite?
::communities/invite-people-confirmation-pressed ::communities/invite-people-confirmation-pressed
::communities/share-community-confirmation-pressed) @user-pk ::communities/share-community-confirmation-pressed) @user-pk
@@ -111,7 +111,7 @@
(:available :connected :connected-with-different-key :owned) (:available :connected :connected-with-different-key :owned)
[react/touchable-highlight [react/touchable-highlight
{:on-press #(debounce/throttle-and-dispatch [::ens/input-submitted] 3000)} {:on-press #(debounce/dispatch-and-chill [::ens/input-submitted] 3000)}
[icon-wrapper colors/blue [icon-wrapper colors/blue
[icons/icon :main-icons/arrow-right {:color colors/white-persist}]]] [icons/icon :main-icons/arrow-right {:color colors/white-persist}]]]
@@ -365,9 +365,8 @@
:right [react/view {:padding-horizontal 8} :right [react/view {:padding-horizontal 8}
[quo/button [quo/button
{:disabled (or (not @checked?) (not sufficient-funds?)) {:disabled (or (not @checked?) (not sufficient-funds?))
:on-press #(debounce/throttle-and-dispatch [::ens/register-name-pressed :on-press #(debounce/dispatch-and-chill [::ens/register-name-pressed address]
address] 2000)}
2000)}
(if sufficient-funds? (if sufficient-funds?
(i18n/label :t/ens-register) (i18n/label :t/ens-register)
(i18n/label :t/not-enough-snt))]]}]])))) (i18n/label :t/not-enough-snt))]]}]]))))
@@ -139,9 +139,9 @@
{:type :secondary {:type :secondary
:accessibility-label :create-group-chat-button :accessibility-label :create-group-chat-button
:disabled group-name-empty? :disabled group-name-empty?
:on-press #(debounce/throttle-and-dispatch [:group-chats.ui/create-pressed :on-press #(debounce/dispatch-and-chill [:group-chats.ui/create-pressed
group-name] group-name]
300)} 300)}
(i18n/label :t/create-group-chat)]}]]]))) (i18n/label :t/create-group-chat)]}]]])))
(defn searchable-contact-list (defn searchable-contact-list
@@ -6,7 +6,7 @@
[legacy.status-im.ui.screens.network.styles :as st] [legacy.status-im.ui.screens.network.styles :as st]
[legacy.status-im.ui.screens.network.views :as network-settings] [legacy.status-im.ui.screens.network.views :as network-settings]
[re-frame.core :as re-frame] [re-frame.core :as re-frame]
[utils.debounce :refer [throttle-and-dispatch]] [utils.debounce :refer [dispatch-and-chill]]
[utils.i18n :as i18n]) [utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views])) (:require-macros [legacy.status-im.utils.views :as views]))
@@ -25,7 +25,7 @@
:connected? connected?}] :connected? connected?}]
(when-not connected? (when-not connected?
[react/touchable-highlight [react/touchable-highlight
{:on-press #(throttle-and-dispatch [::network/connect-network-pressed id] 1000)} {:on-press #(dispatch-and-chill [::network/connect-network-pressed id] 1000)}
[react/view st/connect-button-container [react/view st/connect-button-container
[react/view [react/view
{:style st/connect-button {:style st/connect-button
@@ -109,7 +109,7 @@
(defn hide-sheet-and-dispatch-old (defn hide-sheet-and-dispatch-old
[event] [event]
(re-frame/dispatch [:bottom-sheet/hide-old]) (re-frame/dispatch [:bottom-sheet/hide-old])
(debounce/throttle-and-dispatch event 2000)) (debounce/dispatch-and-chill event 2000))
(defn invitation-sheet (defn invitation-sheet
[{:keys [id]} contact] [{:keys [id]} contact]
@@ -55,8 +55,7 @@
:on-change (fn [text] :on-change (fn [text]
(re-frame/dispatch [:wallet-legacy/search-recipient-filter-changed text]) (re-frame/dispatch [:wallet-legacy/search-recipient-filter-changed text])
(re-frame/dispatch [:set-in [:contacts/new-identity :state] :searching]) (re-frame/dispatch [:set-in [:contacts/new-identity :state] :searching])
(debounce/debounce-and-dispatch [:contacts/set-new-identity {:input text}] (debounce/debounce-and-dispatch [:contacts/set-new-identity text] 300))}]]))
300))}]]))
(defn section (defn section
[_ _ _] [_ _ _]
@@ -4,19 +4,14 @@
(def backgrounds #{:photo :blur}) (def backgrounds #{:photo :blur})
;; Note: We hardcode the :light theme for the background-color and apply an overlay when necessary, such (defn custom-color-type
;; as for dark themes and pressed states. This approach is taken because, for communities, we only have
;; one color available, which is the light theme version.
;; For more information, see the related issue: https://github.com/status-im/status-mobile/issues/16396
(defn- custom-color-type
[customization-color icon-only?] [customization-color icon-only?]
{:icon-color colors/white-opa-70 {:icon-color colors/white-opa-70
:label-color colors/white :label-color colors/white
:background-color (colors/resolve-color customization-color :light) :background-color (colors/custom-color customization-color 50)
:border-radius (when icon-only? 24) :border-radius (when icon-only? 24)})
:overlay-customization-color customization-color})
(defn- grey-photo (defn grey-photo
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-70 theme) {:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-70 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -29,7 +24,7 @@
theme)) theme))
:blur-type (if (= theme :light) :light :dark)}) :blur-type (if (= theme :light) :light :dark)})
(defn- grey-blur (defn grey-blur
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-70 theme) {:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-70 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -37,7 +32,7 @@
(colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 theme) (colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 theme)
(colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-5 theme))}) (colors/theme-colors colors/neutral-80-opa-5 colors/white-opa-5 theme))})
(defn- outline-blur (defn outline-blur
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 theme) {:icon-color (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -45,7 +40,7 @@
(colors/theme-colors colors/neutral-80-opa-20 colors/white-opa-20 theme) (colors/theme-colors colors/neutral-80-opa-20 colors/white-opa-20 theme)
(colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 theme))}) (colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 theme))})
(defn- grey (defn grey
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme) {:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -55,7 +50,7 @@
colors/neutral-90 colors/neutral-90
theme))}) theme))})
(defn- dark-grey (defn dark-grey
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme) {:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -63,7 +58,7 @@
(colors/theme-colors colors/neutral-30 colors/neutral-60 theme) (colors/theme-colors colors/neutral-30 colors/neutral-60 theme)
(colors/theme-colors colors/neutral-20 colors/neutral-90 theme))}) (colors/theme-colors colors/neutral-20 colors/neutral-90 theme))})
(defn- outline (defn outline
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme) {:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
@@ -71,32 +66,29 @@
(colors/theme-colors colors/neutral-40 colors/neutral-60 theme) (colors/theme-colors colors/neutral-40 colors/neutral-60 theme)
(colors/theme-colors colors/neutral-30 colors/neutral-70 theme))}) (colors/theme-colors colors/neutral-30 colors/neutral-70 theme))})
(defn- ghost (defn ghost
[theme pressed?] [theme pressed?]
{:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme) {:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)
:label-color (colors/theme-colors colors/neutral-100 colors/white theme) :label-color (colors/theme-colors colors/neutral-100 colors/white theme)
:background-color (when pressed? :background-color (when pressed?
(colors/theme-colors colors/neutral-10 colors/neutral-80 theme))}) (colors/theme-colors colors/neutral-10 colors/neutral-80 theme))})
(defn- black (defn black
[pressed?] [pressed?]
{:label-color colors/white {:label-color colors/white
:background-color (if pressed? colors/neutral-80 colors/neutral-95)}) :background-color (if pressed? colors/neutral-80 colors/neutral-95)})
(defn get-values (defn get-values
[{:keys [customization-color theme type background pressed? icon-only?]}] [{:keys [customization-color theme type background pressed? icon-only?]}]
(let [customization-color (get {:primary customization-color (cond
:positive :success (= type :primary) (custom-color-type customization-color icon-only?)
:danger :danger} (= type :positive) (custom-color-type customization-color icon-only?)
type)] (= type :danger) (custom-color-type customization-color icon-only?)
(cond (and (= :photo background) (= type :grey)) (grey-photo theme pressed?)
(contains? #{:primary :positive :danger} type) (custom-color-type customization-color (and (= :blur background) (= type :grey)) (grey-blur theme pressed?)
icon-only?) (and (= :blur background) (= type :outline)) (outline-blur theme pressed?)
(and (= :photo background) (= type :grey)) (grey-photo theme pressed?) (= type :grey) (grey theme pressed?)
(and (= :blur background) (= type :grey)) (grey-blur theme pressed?) (= type :dark-grey) (dark-grey theme pressed?)
(and (= :blur background) (= type :outline)) (outline-blur theme pressed?) (= type :outline) (outline theme pressed?)
(= type :grey) (grey theme pressed?) (= type :ghost) (ghost theme pressed?)
(= type :dark-grey) (dark-grey theme pressed?) (= type :black) (black pressed?)))
(= type :outline) (outline theme pressed?)
(= type :ghost) (ghost theme pressed?)
(= type :black) (black pressed?))))
+18 -16
View File
@@ -34,13 +34,16 @@
(fn (fn
[{:keys [on-press on-long-press disabled? type background size icon-left icon-right icon-top [{:keys [on-press on-long-press disabled? type background size icon-left icon-right icon-top
customization-color theme accessibility-label icon-only? container-style inner-style customization-color theme accessibility-label icon-only? container-style inner-style
pressed? on-press-in on-press-out allow-multiple-presses?] pressed? on-press-in on-press-out]
:or {type :primary :or {type :primary
size 40 size 40
customization-color (if (= type :primary) :blue nil)}} customization-color (cond (= type :primary) :blue
(= type :positive) :success
(= type :danger) :danger
:else nil)}}
children] children]
(let [{:keys [icon-color background-color label-color border-color blur-type (let [{:keys [icon-color background-color label-color border-color blur-type
blur-overlay-color border-radius overlay-customization-color]} blur-overlay-color border-radius]}
(button-properties/get-values {:customization-color customization-color (button-properties/get-values {:customization-color customization-color
:background background :background background
:type type :type type
@@ -49,17 +52,16 @@
:icon-only? icon-only?}) :icon-only? icon-only?})
icon-size (when (= 24 size) 12)] icon-size (when (= 24 size) 12)]
[rn/touchable-without-feedback [rn/touchable-without-feedback
{:disabled disabled? {:disabled disabled?
:accessibility-label accessibility-label :accessibility-label accessibility-label
:on-press-in (fn [] :on-press-in (fn []
(reset! pressed-state? true) (reset! pressed-state? true)
(when on-press-in (on-press-in))) (when on-press-in (on-press-in)))
:on-press-out (fn [] :on-press-out (fn []
(reset! pressed-state? nil) (reset! pressed-state? nil)
(when on-press-out (on-press-out))) (when on-press-out (on-press-out)))
:on-press on-press :on-press on-press
:allow-multiple-presses? allow-multiple-presses? :on-long-press on-long-press}
:on-long-press on-long-press}
[rn/view [rn/view
{:style (merge {:style (merge
(style/shape-style-container size border-radius) (style/shape-style-container size border-radius)
@@ -76,9 +78,9 @@
:icon-left icon-left :icon-left icon-left
:icon-right icon-right}) :icon-right icon-right})
inner-style)} inner-style)}
(when overlay-customization-color (when customization-color
[customization-colors/overlay [customization-colors/overlay
{:customization-color overlay-customization-color {:customization-color customization-color
:theme theme :theme theme
:pressed? (if pressed? pressed? @pressed-state?)}]) :pressed? (if pressed? pressed? @pressed-state?)}])
(when (= background :photo) (when (= background :photo)
@@ -15,12 +15,11 @@
[rn/view [rn/view
{:style style/container} {:style style/container}
[button/button [button/button
{:icon true {:icon true
:type :outline :type :outline
:accessibility-label :previous-month-button :accessibility-label :previous-month-button
:allow-multiple-presses? true :size 24
:size 24 :on-press #(on-change (utils/previous-month year month))}
:on-press #(on-change (utils/previous-month year month))}
:i/chevron-left] :i/chevron-left]
[text/text [text/text
{:weight :semi-bold {:weight :semi-bold
@@ -28,12 +27,11 @@
:style (style/text theme)} :style (style/text theme)}
(utils/format-month-year year month)] (utils/format-month-year year month)]
[button/button [button/button
{:icon true {:icon true
:accessibility-label :next-month-button :accessibility-label :next-month-button
:allow-multiple-presses? true :size 24
:size 24 :type :outline
:type :outline :on-press #(on-change (utils/next-month year month))}
:on-press #(on-change (utils/next-month year month))}
:i/chevron-right]])) :i/chevron-right]]))
(def view (theme/with-theme view-internal)) (def view (theme/with-theme view-internal))
+3 -4
View File
@@ -31,10 +31,9 @@
theme))] theme))]
[rn/pressable [rn/pressable
{:style (style/color-button hex-color selected? idx window-width) {:style (style/color-button hex-color selected? idx window-width)
:accessibility-label :color-picker-item :accessibility-label :color-picker-item
:allow-multiple-presses? true :on-press #(on-press color)}
:on-press #(on-press color)}
(if (and (= :feng-shui color) (not selected?)) (if (and (= :feng-shui color) (not selected?))
[feng-shui [feng-shui
(assoc props (assoc props
@@ -35,7 +35,7 @@
(when (and @ref (>= index 0)) (when (and @ref (>= index 0))
(some-> ^js @ref (some-> ^js @ref
(.scrollToIndex #js (.scrollToIndex #js
{:animated false {:animated true
:index index :index index
:viewPosition 0.5}))))) :viewPosition 0.5})))))
50))) 50)))
@@ -1,34 +0,0 @@
(ns quo.components.counter.collectible-counter.component-spec
(:require
[quo.components.counter.collectible-counter.view :as collectible-counter]
[test-helpers.component :as h]))
(defn render
[component]
(h/render-with-theme-provider component :dark))
(h/describe "collectible counter component"
(h/test "default render of component"
(render [collectible-counter/view {}])
(-> (h/expect (h/get-by-label-text :collectible-counter))
(h/is-truthy)))
(h/test "render with a string value"
(render [collectible-counter/view {:value "x500"}])
(-> (h/expect (h/get-by-text "x500"))
(h/is-truthy)))
(h/test "render with an integer value and default status"
(render [collectible-counter/view
{:value 100
:status :default}])
(-> (h/expect (h/get-by-text "100"))
(h/is-truthy)))
(h/test "render with all availiable props"
(render [collectible-counter/view
{:value "x100"
:status :error
:size :size-24}])
(-> (h/expect (h/get-by-text "x100"))
(h/is-truthy))))
@@ -1,57 +0,0 @@
(ns quo.components.counter.collectible-counter.style
(:require
[quo.foundations.colors :as colors]))
(defn- get-background-color
[{:keys [status theme]}]
(case status
:default (colors/theme-colors colors/white-opa-70 colors/neutral-95-opa-70 theme)
:error (colors/resolve-color :danger theme 10)
(colors/theme-colors colors/white-opa-70 colors/neutral-95-opa-70 theme)))
(defn- get-container-border-styles
[{:keys [status theme]}]
(when (= status :error)
{:border-color (colors/resolve-color :danger theme 20)
:border-width 1}))
(defn- get-container-styles-by-size
[{:keys [size]}]
(let [style-size-24 {:height 24
:padding-vertical 3
:padding-horizontal 8}
style-size-32 {:height 32
:padding-vertical 5
:padding-horizontal 12}]
(case size
:size-32 style-size-32
:size-24 style-size-24
style-size-32)))
(defn container
[props]
(merge {:align-self :flex-start
:flex-direcrion :row
:justify-content :center
:border-radius 999
:background-color (get-background-color props)}
(get-container-border-styles props)
(get-container-styles-by-size props)))
(defn- get-text-color
[{:keys [status theme]}]
(case status
:default (colors/theme-colors colors/neutral-100 colors/white theme)
:error (colors/resolve-color :danger theme)
(colors/theme-colors colors/neutral-100 colors/white theme)))
(defn get-text-size
[{:keys [size]}]
(case size
:size-32 :paragraph-1
:size-24 :paragraph-2
:paragraph-1))
(defn text
[props]
{:color (get-text-color props)})
@@ -1,39 +0,0 @@
(ns quo.components.counter.collectible-counter.view
(:require
[quo.components.counter.collectible-counter.style :as style]
[quo.components.markdown.text :as text]
[quo.theme]
[react-native.core :as rn]
[schema.core :as schema]))
(def ?schema
[:=>
[:catn
[:props
[:map {:closed true}
[:value {:optional true} [:maybe [:or :string :int]]]
[:status {:optional true} [:maybe :keyword]]
[:size {:optional true} [:maybe [:enum :size-32 :size-24]]]
[:accessibility-label {:optional true} [:maybe :keyword]]
[:theme :schema.common/theme]]]]
:any])
(defn- view-internal
[{:keys [value accessibility-label]
:as props}]
(let [default-props {:status :default
:size :size-32}
props (merge default-props props)]
[rn/view
{:accessible true
:accessibility-label (or accessibility-label :collectible-counter)
:style (style/container props)}
[text/text
{:weight :medium
:size (style/get-text-size props)
:style (style/text props)}
value]]))
(def view
(quo.theme/with-theme
(schema/instrument #'view-internal ?schema)))
@@ -3,7 +3,7 @@
(def container (def container
{:height 40 {:height 40
:flex-direction :row :flex-direction :row
:padding-horizontal 16 :padding-horizontal 20
:align-items :center}) :align-items :center})
(defn text (defn text
@@ -30,7 +30,7 @@
(defn circular-progress (defn circular-progress
[{:keys [color percentage]}] [{:keys [color percentage]}]
(let [strength-indicator-radius 7.5 (let [strength-indicator-radius 6.5
strength-indicator-circumference (* 2 Math/PI strength-indicator-radius)] strength-indicator-circumference (* 2 Math/PI strength-indicator-radius)]
[svg/svg [svg/svg
{:view-box "0 0 16 16" {:view-box "0 0 16 16"
@@ -63,10 +63,7 @@
:alert [icon/icon :i/alert :alert [icon/icon :i/alert
{:color color {:color color
:size 16}] :size 16}]
[rn/view [circular-progress {:color color :percentage percentage}])))
{:padding-left 4
:padding-right 2}
[circular-progress {:color color :percentage percentage}]])))
(defn view (defn view
"Options "Options
@@ -3,11 +3,9 @@
[quo.foundations.colors :as colors])) [quo.foundations.colors :as colors]))
(defn divider (defn divider
[theme blur?] [theme]
{:border-top-width 1 {:border-top-width 1
:border-top-color (if blur? :border-top-color (colors/theme-colors colors/neutral-10 colors/neutral-90 theme)
colors/white-opa-5
(colors/theme-colors colors/neutral-10 colors/neutral-90 theme))
:margin-top 8 :margin-top 8
:margin-bottom 7 :margin-bottom 7
:align-items :center :align-items :center
@@ -14,9 +14,9 @@
(colors/theme-colors colors/neutral-50 colors/neutral-40 theme))) (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)))
(defn- divider (defn- divider
[theme blur?] [theme]
[rn/view [rn/view
{:style (style/divider theme blur?) {:style (style/divider theme)
:accessible true :accessible true
:accessibility-label :divider}]) :accessibility-label :divider}])
@@ -45,7 +45,7 @@
blur?]}] blur?]}]
[:<> [:<>
(when add-divider? (when add-divider?
[divider theme blur?]) [divider theme])
[maybe-pressable disabled? [maybe-pressable disabled?
{:accessibility-label accessibility-label {:accessibility-label accessibility-label
:style (style/container {:sub-label sub-label :style (style/container {:sub-label sub-label
@@ -3,60 +3,34 @@
[quo.components.drawers.bottom-actions.view :as bottom-actions] [quo.components.drawers.bottom-actions.view :as bottom-actions]
[test-helpers.component :as h])) [test-helpers.component :as h]))
(defn- render
[component]
(h/render-with-theme-provider component :light))
(h/describe "bottom actions tests" (h/describe "bottom actions tests"
(h/test "default render with no description and single action button" (h/test "default render with no description and single action button"
(render [bottom-actions/view {:actions :one-action :button-one-label "Request to join"}]) (h/render [bottom-actions/view {:button-one-label "Request to join"}])
(h/is-truthy (h/get-by-text "Request to join"))) (h/is-truthy (h/get-by-text "Request to join")))
(h/test "render with description & 1 action" (h/test "render with description"
(render [bottom-actions/view (h/render [bottom-actions/view {:description "Sample description"}])
{:description :bottom (h/is-truthy (h/get-by-text "Sample description")))
:description-text "Sample description"
:actions :one-action
:button-one-label "Request to join"}])
(h/is-truthy (h/get-by-text "Sample description"))
(h/is-truthy (h/get-by-text "Request to join")))
(h/test "render with 2 actions" (h/test "render with 2 actions"
(let [button-one "Button One" (let [button-one "Button One"
button-two "Button Two"] button-two "Button Two"]
(render [bottom-actions/view (h/render [bottom-actions/view
{:actions :two-actions {:actions :2-actions
:button-one-label button-one :button-one-label button-one
:button-one-props {:icon-left :i/arrow-left} :button-one-props {:icon-left :i/arrow-left}
:button-two-label button-two}]) :button-two-label button-two}])
(h/is-truthy (h/get-by-text button-one)) (h/is-truthy (h/get-by-text button-one))
(h/is-truthy (h/get-by-label-text :icon)) (h/is-truthy (h/get-by-label-text :icon))
(h/is-truthy (h/get-by-text button-two)))) (h/is-truthy (h/get-by-text button-two))))
(h/test "render disabled button" (h/test "render disabled button"
(render [bottom-actions/view (h/render [bottom-actions/view
{:description :bottom {:description "Sample description"
:actions :one-action :button-one-props {:disabled? true}
:description-text "Sample description" :button-one-label "button"}])
:button-one-props {:disabled? true}
:button-one-label "button"}])
(h/is-disabled (h/get-by-label-text :button-one))) (h/is-disabled (h/get-by-label-text :button-one)))
(h/test "render with error & 1 action" (h/test "sane defaults"
(render [bottom-actions/view (h/render [bottom-actions/view {}])
{:description :top-error (h/is-truthy (h/get-by-label-text :button-one))))
:error-message "Sample error"
:actions :one-action
:button-one-label "Request to join"}])
(h/is-truthy (h/get-by-text "Sample error"))
(h/is-truthy (h/get-by-text "Request to join")))
(h/test "render with top description & 1 action"
(render [bottom-actions/view
{:description :top
:role :admin
:actions :one-action
:button-one-label "Request to join"}])
(h/is-truthy (h/get-by-text "Eligible to join as"))
(h/is-truthy (h/get-by-text "Admin"))
(h/is-truthy (h/get-by-text "Request to join"))))
@@ -2,58 +2,34 @@
(:require (:require
[quo.foundations.colors :as colors])) [quo.foundations.colors :as colors]))
(defn- text-color
[scroll? blur? theme]
(cond
scroll? (if blur?
colors/white-70-blur
(colors/theme-colors colors/neutral-80-opa-70
colors/white-opa-70
theme))
blur? colors/white-opa-40
:else (colors/theme-colors colors/neutral-50
colors/neutral-40
theme)))
(defn container
[scroll? blur? theme]
{:background-color (when-not (or scroll? blur?)
(colors/theme-colors colors/white colors/neutral-95 theme))})
(def buttons-container (def buttons-container
{:flex-direction :row {:flex-direction :row
:justify-content :space-around :justify-content :space-around
:padding-vertical 12 :padding-vertical 12
:gap 12
:padding-horizontal 20}) :padding-horizontal 20})
(def button-container (def button-container
{:flex 1}) {:flex 1})
(def description-top (def button-container-2-actions
{:flex-direction :row (assoc button-container :margin-right 12))
:align-items :center
:gap 5
:padding-top 12
:padding-bottom 4
:justify-content :center})
(defn description-top-text (defn description
[scroll? blur? theme] [theme scroll?]
{:color (text-color scroll? blur? theme)}) {:color (colors/theme-colors
(if scroll?
(defn description-bottom (colors/custom-color colors/neutral-80 70)
[scroll? blur? theme] colors/neutral-50)
{:color (text-color scroll? blur? theme) (if scroll?
colors/white-opa-70
colors/neutral-40)
theme)
:text-align :center :text-align :center
:padding-bottom 12
:padding-horizontal 40}) :padding-horizontal 40})
(def error-message (def scroll
{:flex-direction :row {:margin-top 21
:gap 4 :margin-horizontal 120
:justify-content :center :margin-bottom 8
:align-items :center :width 134
:padding-top 15 :height 5})
:padding-horizontal 20
:padding-bottom 7})
@@ -2,96 +2,55 @@
(:require (:require
[quo.components.buttons.button.view :as button] [quo.components.buttons.button.view :as button]
[quo.components.drawers.bottom-actions.style :as style] [quo.components.drawers.bottom-actions.style :as style]
[quo.components.icon :as icon]
[quo.components.markdown.text :as text] [quo.components.markdown.text :as text]
[quo.components.tags.context-tag.view :as context-tag]
[quo.foundations.colors :as colors]
[quo.theme :as quo.theme] [quo.theme :as quo.theme]
[react-native.core :as rn] [react-native.core :as rn]))
[schema.core :as schema]
[utils.i18n :as i18n]))
(def ?schema (def default-props
[:=> {:button-one-type :primary
[:catn :button-two-type :grey
[:props :customization-color :blue})
[:map {:closed true}
[:actions [:maybe [:enum :one-action :two-actions]]]
[:description {:optional true} [:maybe [:enum :top :bottom :top-error]]]
[:description-text {:optional true} [:maybe :string]]
[:error-message {:optional true} [:maybe :string]]
[:role {:optional true} [:maybe [:enum :admin :member :token-master :owner]]]
[:button-one-label {:optional true} [:maybe :string]]
[:button-two-label {:optional true} [:maybe :string]]
[:button-one-props {:optional true} [:maybe :map]]
[:button-two-props {:optional true} [:maybe :map]]
[:theme :schema.common/theme]
[:scroll? {:optional true} [:maybe :boolean]]
[:blur? {:optional true} [:maybe :boolean]]
[:container-style {:optional true} [:maybe :map]]]]]
:any])
(def ^:private role-icon
{:admin :i/gavel
:member :i/members
:token-master :i/token-master
:owner :i/crown})
(defn- view-internal (defn- view-internal
[{:keys [actions description description-text error-message role button-one-label button-two-label "Options:
blur? button-one-props button-two-props theme scroll? container-style]}]
[rn/view
{:style (merge (style/container scroll? blur? theme) container-style)}
(when (= description :top-error)
[rn/view {:style style/error-message}
[icon/icon
:i/alert
{:color (colors/theme-colors colors/danger-50 colors/danger-60 theme)
:size 16}]
[text/text
{:size :paragraph-2
:style {:color (colors/theme-colors colors/danger-50 colors/danger-60 theme)}}
error-message]])
(when (and (= description :top) role) :actions - keyword (default nil) - :1-action/:2-actions
[rn/view :description - string (default nil) - Description to display below the title
{:style style/description-top} :button-one-label - string (default nil) - Label for the first button
[text/text :button-two-label - string (default nil) - Label for the second button
{:size :paragraph-2 :button-one-props - map with props for button one
:style (style/description-top-text scroll? blur? theme)} :button-two-props - map with props for button two
(i18n/label :t/eligible-to-join-as)] :theme - :light/:dark
[context-tag/view :scroll? - bool (default false) - Whether the iOS Home Indicator should be rendered"
{:type :icon [props]
:size 24 (let [{:keys [actions description button-one-label button-two-label
:icon (role role-icon) button-one-props button-two-props theme scroll? customization-color container-style]}
:blur? blur? (merge default-props props)]
:context (i18n/label (keyword "t" role))}]]) [rn/view {:style container-style}
[rn/view {:style style/buttons-container}
[rn/view {:style style/buttons-container} (when (= actions :2-actions)
(when (= actions :two-actions) [button/button
(merge
{:size 40
:background (when scroll? :blur)
:container-style style/button-container-2-actions
:theme theme
:accessibility-label :button-two}
button-two-props)
button-two-label])
[button/button [button/button
(merge (merge
{:size 40 {:size 40
:background (when (or blur? scroll?) :blur)
:container-style style/button-container :container-style style/button-container
:background (when scroll? :blur)
:theme theme :theme theme
:accessibility-label :button-two} :accessibility-label :button-one
button-two-props) :customization-color customization-color}
button-two-label]) button-one-props)
[button/button button-one-label]]
(merge (when description
{:size 40 [text/text
:container-style style/button-container {:size :paragraph-2
:background (when (or blur? scroll?) :blur) :style (style/description theme scroll?)} description])]))
:theme theme
:accessibility-label :button-one}
button-one-props)
button-one-label]]
(when (= description :bottom)
[text/text
{:size :paragraph-2
:style (style/description-bottom scroll? blur? theme)} description-text])])
(def view (def view (quo.theme/with-theme view-internal))
(quo.theme/with-theme
(schema/instrument #'view-internal ?schema)))
@@ -3,110 +3,97 @@
[quo.core :as quo] [quo.core :as quo]
[test-helpers.component :as h])) [test-helpers.component :as h]))
(def ^:private theme :light)
(h/describe "drawer top tests" (h/describe "drawer top tests"
(h/test "component renders in default type" (h/test "component renders in default type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :default}] :type :default}])
theme)
(h/is-truthy (h/get-by-text "Title"))) (h/is-truthy (h/get-by-text "Title")))
(h/test "component renders in default + description type" (h/test "component renders in default + description type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :default :type :default
:description "Description"}] :description "Description"}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-text "Description"))) (h/is-truthy (h/get-by-text "Description")))
(h/test "component renders in info type" (h/test "component renders in info type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :info}] :type :info}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-label-text :info-icon))) (h/is-truthy (h/get-by-label-text :info-icon)))
(h/test "component renders in info + description type" (h/test "component renders in info + description type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:description "Description" :description "Description"
:type :info}] :type :info}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-text "Description")) (h/is-truthy (h/get-by-text "Description"))
(h/is-truthy (h/get-by-label-text :info-icon))) (h/is-truthy (h/get-by-label-text :info-icon)))
(h/test "component renders in context-tag type" (h/test "component renders in context-tag type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :context-tag :type :context-tag
:community-name "Coinbase"}] :community-name "Coinbase"}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-label-text :context-tag-wrapper))) (h/is-truthy (h/get-by-label-text :context-tag-wrapper)))
(h/test "component renders in context-tag + button type" (h/test "component renders in context-tag + button type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :context-tag :type :context-tag
:button-icon :i/placeholder :button-icon :i/placeholder
:community-name "Coinbase"}] :community-name "Coinbase"}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-label-text :button-icon)) (h/is-truthy (h/get-by-label-text :button-icon))
(h/is-truthy (h/get-by-label-text :context-tag-wrapper))) (h/is-truthy (h/get-by-label-text :context-tag-wrapper)))
(h/test "component renders in account type" (h/test "component renders in account type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:type :account :type :account
:account-avatar-emoji "🍿" :account-avatar-emoji "🍿"
:networks [{:name :ethereum :short-name "eth"}] :networks [{:name :ethereum :short-name "eth"}]
:description "0x62b...0a5" :description "0x62b...0a5"
:customization-color :purple}] :customization-color :purple}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-text "0x62b...0a5")) (h/is-truthy (h/get-by-text "0x62b...0a5"))
(h/is-truthy (h/get-by-label-text :account-avatar))) (h/is-truthy (h/get-by-label-text :account-avatar)))
(h/test "component renders in keypair type when keycard? is false" (h/test "component renders in keypair type when keycard? is false"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:keycard? false :keycard? false
:icon-avatar :i/placeholder :icon-avatar :i/placeholder
:type :keypair}] :type :keypair}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(-> (h/expect (h/get-by-translation-text :t/on-device)) (-> (h/expect (h/get-by-translation-text :t/on-device))
(.toBeTruthy))) (.toBeTruthy)))
(h/test "component renders in keypair type when keycard? is true" (h/test "component renders in keypair type when keycard? is true"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:keycard? true :keycard? true
:icon-avatar :i/placeholder :icon-avatar :i/placeholder
:type :keypair}] :type :keypair}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(-> (h/expect (h/get-by-translation-text :t/on-keycard)) (-> (h/expect (h/get-by-translation-text :t/on-keycard))
(.toBeTruthy))) (.toBeTruthy)))
(h/test "component renders in default-keypair type" (h/test "component renders in default-keypair type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:title "Title" {:title "Title"
:description "0x62b...0a5" :description "0x62b...0a5"
:type :default-keypair}] :type :default-keypair}])
theme)
(h/is-truthy (h/get-by-text "Title")) (h/is-truthy (h/get-by-text "Title"))
(h/is-truthy (h/get-by-label-text :default-keypair-text))) (h/is-truthy (h/get-by-label-text :default-keypair-text)))
(h/test "component renders in label type" (h/test "component renders in label type"
(h/render-with-theme-provider [quo/drawer-top (h/render [quo/drawer-top
{:label "label" {:label "label"
:type :label}] :type :label}])
theme)
(h/is-truthy (h/get-by-text "label")))) (h/is-truthy (h/get-by-text "label"))))
@@ -137,8 +137,7 @@
:description description}])) :description description}]))
(defn- right-icon (defn- right-icon
[{:keys [theme type on-button-press on-button-long-press button-disabled? button-icon button-type] [{:keys [theme type on-button-press on-button-long-press button-disabled? button-icon]}]
:or {button-type :primary}}]
(cond (cond
(= :info type) (= :info type)
[icons/icon [icons/icon
@@ -154,7 +153,7 @@
:on-press on-button-press :on-press on-button-press
:on-long-press on-button-long-press :on-long-press on-button-long-press
:disabled? button-disabled? :disabled? button-disabled?
:type button-type :type :primary
:size 24 :size 24
:icon-only? true} :icon-only? true}
button-icon])) button-icon]))
@@ -183,7 +182,7 @@
(defn- view-internal (defn- view-internal
[{:keys [title title-icon type theme description blur? community-name community-logo button-icon [{:keys [title title-icon type theme description blur? community-name community-logo button-icon
account-name emoji context-tag-type button-type account-name emoji
on-button-press on-button-press
on-button-long-press on-button-long-press
button-disabled? account-avatar-emoji account-avatar-type customization-color icon-avatar button-disabled? account-avatar-emoji account-avatar-type customization-color icon-avatar
@@ -215,14 +214,12 @@
:description description :description description
:community-name community-name :community-name community-name
:community-logo community-logo :community-logo community-logo
:context-tag-type context-tag-type
:customization-color customization-color :customization-color customization-color
:account-name account-name :account-name account-name
:emoji emoji}]] :emoji emoji}]]
[right-icon [right-icon
{:theme theme {:theme theme
:type type :type type
:button-type button-type
:on-button-press on-button-press :on-button-press on-button-press
:on-button-long-press on-button-long-press :on-button-long-press on-button-long-press
:button-disabled? button-disabled? :button-disabled? button-disabled?
@@ -6,21 +6,14 @@
[react-native.linear-gradient :as linear-gradient])) [react-native.linear-gradient :as linear-gradient]))
(defn- view-internal (defn- view-internal
[{:keys [customization-color opacity container-style height] [{:keys [customization-color opacity container-style height] :or {customization-color :blue}}]
:or {customization-color :blue}}] (let [color-top (colors/custom-color customization-color 50 20)
;; `when` added for safety, `linear-gradient` will break if `nil` is passed, color-bottom (colors/custom-color customization-color 50 0)]
;; the `:or` destructuring won't work because it's only applied when the [linear-gradient/linear-gradient
;; `:customization-color` key is non-existent. While deleting an account the key exists {:accessibility-label :gradient-cover
;; and has a `nil` value. :colors [color-top color-bottom]
(when customization-color :start {:x 0 :y 0}
(let [color-top (colors/resolve-color customization-color 50 20) :end {:x 0 :y 1}
color-bottom (colors/resolve-color customization-color 50 0)] :style (merge (style/root-container opacity height) container-style)}]))
[linear-gradient/linear-gradient
{:accessibility-label :gradient-cover
:colors [color-top color-bottom]
:start {:x 0 :y 0}
:end {:x 0 :y 1}
:style (merge (style/root-container opacity height)
container-style)}])))
(def view (quo.theme/with-theme view-internal)) (def view (quo.theme/with-theme view-internal))

Some files were not shown because too many files have changed in this diff Show More