Compare commits

...
66 Commits
Author SHA1 Message Date
ibrkhalil 3f3437bdfd version bump 2024-05-09 14:28:54 +03:00
ibrkhalil b69fe523f9 Version bump 2024-05-09 14:27:40 +03:00
Sean Hagstrom 3e5d758e92 Refactor image server uri helpers (#19271)
* tweak: refactor image-uri helpers

* fix: add `:primary` as customization color for profile images

primary is being used as the default color for accounts that were migrated without customization color to a default color
2024-05-09 11:01:49 +01:00
Omar Basem 7f40f410e7 fix: entering two zeros in a row in the 'Amount' field in wallet (#19911)
fix: entering two zeros in a row in the 'Amount' field in wallet
2024-05-09 12:23:17 +04:00
flexsurfer 497c95fd26 Fix "Offline" section in group chat members #19883 (#19913) 2024-05-08 18:19:56 +02:00
Omar Basem 604eaccbbf feat: Start bridge from asset drawer (#19860)
feat: Start bridge from asset drawer (#19860)
2024-05-08 16:31:38 +04:00
Brian Sztamfater 842dbbbd8d feat: add feature flag for swaps (#19920)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-08 08:59:01 -03:00
Parvesh Monu 10f5f9ec7d Implement navigation to profiles and chats from contact requests inside Activity Center (#19902) 2024-05-08 15:48:50 +05:30
Brian Sztamfater 07fb3610d1 chore: add wallet connect library (#19758)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-08 05:51:45 -03:00
Siddarth Kumar 43951b9dfd modify xcodewrapper to do a runtime version check (#19822)
fixes #19770

Devs are often unaware of the supported Xcode version and often run into weird build issues with either higher or lower Xcode versions.
We currently only support Xcode 15.1
This change ensures we convey that change when devs execute `make run-ios`
This commit also attempts to ensure `xcodebuild` command is wrapped with `XcodeWrapper`.

- iOS
- macOS

status: ready
2024-05-08 12:51:04 +05:30
Omar Basem 834bf612ac fix: settings item pressability (#19922)
fix: settings item pressability (#19922)
2024-05-08 10:42:15 +04:00
Lungu Cristian 161ba2713f Change password inside new settings (#19474)
* feat: added change-password screen

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: pw verification error not shown

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* feat: added changing password with confirmation and loading

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: adjusted flow

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: added minimum waiting time when loading

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved events to change-password

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: added styles where missing

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved header out

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved forms into separate namespaces

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: linter promesa alias issue

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* feat: added password-tips quo-component

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: validation message

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: removed bottom-sheet event

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* removed temp file

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed @seanstrom's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: address @ilmotta's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed @vkjr's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: buttom button alignment with keyboard

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: keyboard behavior

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: navigation to loader

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: use-theme usage

* fix: button alignment due to alert banner

---------

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>
2024-05-07 17:38:16 +03:00
Mohsen 245b3fcf57 [#19172] fix: new to status design issue (#19923) 2024-05-07 17:12:27 +03:00
John Ngei 90e5774dd6 updated invite friends banner image 2024-05-07 15:48:44 +02:00
codemaster be59785a1f fix: notification center blur (#19861) 2024-05-07 06:35:32 -07:00
flexsurfer 45129b8244 Bring the seedphrase backup flow to the new settings #19554 (#19887) 2024-05-07 13:44:31 +02:00
frank 0c6bb61ebe refactor_:remove part of node config for local pair sync (#19826)
https://github.com/status-im/status-go/compare/cba3ac57...f3f48654
2024-05-07 19:33:46 +08:00
Mohsen 7ec77db666 [#19195] fix: communities design issues (#19819) 2024-05-07 13:20:00 +03:00
mmilad75 b907881d59 Validation error not displayed for Incorrect eth address in "Sent To" page #19599 (#19862) 2024-05-06 18:08:56 +03:30
John Ngei 0d7c2684ee fix: border radius on syncing auth bottom sheet 2024-05-06 16:01:21 +02:00
Jamie Caprani 5802097f5f chore(wallet): feature flag graph and hide about action button (#19832) 2024-05-06 06:14:26 -07:00
Parvesh Monu 5fc9722992 hide not implemented comopser features (#19901) 2024-05-06 17:34:56 +05:30
Parvesh Monu 4eaf832b43 fix contact request message is not shown in the 1-1 chat (#19904) 2024-05-06 16:19:21 +05:30
flexsurfer a9b4d86b00 Patch "Show QR Code" functionality (#19893) 2024-05-06 11:58:13 +02:00
Yevheniia Berdnyk 8a24185ad6 e2e: fixes 3.05 2024-05-03 19:32:13 +03:00
Brian Sztamfater 355e144ef7 refactor: suggested routes rendering (#19768)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-03 13:18:14 -03:00
flexsurfer d8d1e030e4 Patch "Add nickname" functionality in home->Contacts #19875 (#19891) 2024-05-03 15:55:54 +02:00
Omar BasemandMohamed Javid 9187ec25c1 Wallet: activity items (#19847)
Wallet: activity items (#19847)

---------

Co-authored-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-05-03 17:26:24 +04:00
flexsurfer de29c6f7d9 Alignment of system messages in group chat #19886 (#19890) 2024-05-03 13:44:19 +02:00
flexsurfer e6ee2714d7 feature/hide-all-alert-under-not-implemented-flag (#19889) 2024-05-03 13:07:39 +02:00
Siddarth Kumar 25e3a56dba chore: pin cmake version (#19865)
On brand new ubuntu setup `make run-android` fails with :

```

Task :app:mergeExtDexDebug

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':react-native-reanimated:configureCMakeDebug[arm64-v8a]'.
[CXX1300] CMake '3.22.1' was not found in SDK, PATH, or by cmake.dir property.

BUILD FAILED in 2m 30s
673 actionable tasks: 673 executed

error: cannot unlink '/tmp/tmp-status-mobile-a094d218d/
nix-build-status-mobile-build-debug-android.drv-0/tmp.moQHI1tJWE/caches/8.4': Directory not empty
removed '/tmp/tmp-status-mobile-a094d218d/tmp.RpThXxcRZR'
make: *** [Makefile:278: run-android] Error 1
```

we do have `cmake` present in Android Shell and yet the build process is not able to find it.

This commit makes sure that we explicitly provide that reference.
2024-05-03 13:52:26 +05:30
Shivek Khurana 7b9f4983cb 🎏 Add wallet connect feature flag (#19866) 2024-05-02 20:34:01 +05:30
codemaster 94ab27bcbb fix: wrong color stroke in profile setting (#19815) 2024-05-02 05:45:43 -07:00
frank 041ceda95e feat: retry send raw messages (#19580)
https://github.com/status-im/status-go/compare/cba3ac57...22bea87b
2024-05-02 19:56:50 +08:00
flexsurfer 86c1dbd25d Add a setting to enable telemetry #19811 (#19858) 2024-05-02 06:31:27 +02:00
Omar Basem a094d218d5 Wallet: account screen jump to (#19732)
Wallet: account screen jump to (#19732)
2024-05-01 21:25:52 +04:00
Sean Hagstrom 3951b8a39c tweak: hide any not-implemented actions inside home (#19844) 2024-05-01 18:02:16 +01:00
Omar Basem 1757dc5d53 fix: keypiar name continue (#19859)
fix: keypiar name continue (#19859)
2024-05-01 20:08:00 +04:00
Omar Basem f942092a5e fix: wallet account back button (#19857)
fix: wallet account back button (#19857)
2024-05-01 19:56:03 +04:00
Omar Basem d4be3a6976 Fixes for composer (#19854)
Fixes for composer (#19854)
2024-05-01 16:59:13 +04:00
flexsurfer 6037fe80c4 More reagent atom regression #19812 (#19828) 2024-05-01 12:19:50 +02:00
Sean Hagstrom 6a1fdc5b08 Fix QR share screen for community channel (#19792)
* tweak: add support for displaying channel qr codes with quo/share-qr-code component

* chore: add channel qr-code example to quo preview components

* tweak: integrate common/qr-code component for sharing community channel qr-code

* tweak: add support for showing community channel avatar in share-qr-code header

* tweak: hide wallet tabs for channel qr-code

* tweak: integrate share handler for community channel qr-code

* fix: prevent accidentally rendering the community channel qr-code with nil while closing the share-qr modal

* tidy: extract navigate-back dispatch function

* tidy: use styles namespace

* tidy: use case statement to determine which qr-code components have a header

* tweak: check for share-qr-types that support headers

* tidy: extract navigate-back into static function

* fix: prevent community qr-code from glitching when closing modal
2024-04-30 16:10:53 +01:00
Parvesh Monu 17f6a72590 fix community category divider label margin (#19827) 2024-04-30 19:43:30 +05:30
Sean Hagstrom aaf5b72675 tidy: remove extra event handler for :communities/set-airdrop-address (#19829) 2024-04-30 14:18:50 +01:00
Sean HagstromandYevheniia Berdnyk a1490d414c Ensure users can share a community url (#19710)
* fix: ensure :communities/share-community-url-with-data is defined

* fix: ensure we show the share-sheet when pressing the community share-action

* fix: ensure we use the correct share-sheet title when sharing a community

* e2e: updated inviting contacts to community flow

* tweak: remove extra url message when sharing community url on android

* tweak: remove extra url message when sharing community channel url on android

* tidy: remove redundant event handler for sharing community url

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-04-30 13:44:14 +01:00
Omar Basem 8c26125e52 fix: "key pair" spacing (#19823)
fix: "key pair" spacing (#19823)
2024-04-30 14:30:57 +04:00
Siddarth Kumar 86fefc2e32 [iOS] enable new architecture for react-native (#19748)
This commit enables `Fabric` and `Hermes` for `iOS` and in my initial tests the app seemed to behave well.
We can't do this for Android yet because the blur view implementation is not ported to `Fabric` properly.
needed for https://github.com/status-im/status-mobile/issues/18138
2024-04-30 14:08:41 +05:30
Lungu Cristian d8e3934a05 fix: community permission context not passing community-id (#19669)
Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-04-30 10:00:36 +03:00
flexsurfer 65b0d1cd17 Feature/remove old screens and code (#19795) 2024-04-30 08:41:47 +02:00
Parvesh Monu b65ac2ab14 fix alert banner issues (#19773) 2024-04-29 21:56:41 +05:30
Jamie Caprani c00eb0d539 chore(wallet): add opensea link to collectible overview cta (#19579) 2024-04-29 09:09:36 -07:00
mmilad75 42e407fbcf Watch-only address balance should not be included in the overall balance by default #19657 (#19716) 2024-04-29 18:04:39 +03:30
mmilad75 e9c2d24cc3 disable button when no network is selected + fix schema errors (#19814) 2024-04-29 17:12:29 +03:30
codemaster d9aa885eb2 fix: reaction drawer issue (#19754) 2024-04-29 06:00:19 -07:00
mmilad75 bd192b0f7d fix issue (#19808) 2024-04-29 16:05:45 +03:30
Mohsen e8008d0aa9 [#19176] fix: onboarding illustration design issue (#19800) 2024-04-29 12:43:51 +03:00
Parvesh Monu 2ec6a3ed06 fix composer misses shadow and swipe rectangle element (#19805) 2024-04-26 20:02:08 +05:30
Siddarth Kumar 8fc6f4776b fix store nodes not being found on iOS (#19798)
https://github.com/status-im/status-go/compare/90b18d4f...b124e2b4

fixes #19736

Corresponding go PR https://github.com/status-im/status-go/pull/5093

This commit fixes DNS resolution inside status-go by forcing pure go resolver at build time.
Reference -> https://pkg.go.dev/net#hdr-Name_Resolution

Store nodes must be available on Android & iOS app.

- Android
- iOS

status: ready
2024-04-26 14:34:04 +02:00
Lungu Cristian cd54aa9b92 Add pairing/unpairing of devices (#19692)
* feat: added pairing/unpairing of synced devices

* feat: remove flatlists & add confirmation/toast
2024-04-26 13:24:52 +02:00
Omar Basem 8aa586fe6e Wallet: create account using recovery phrase (#19702)
Wallet: create account using recovery phrase (#19702)
2024-04-26 11:34:55 +04:00
Volodymyr Kozieiev 1e55827c4b Fix for "no routes found" on transaction confirmation page (#19789) 2024-04-25 17:21:37 +02:00
Ibrahem Khalil 03f813c957 Implement context action share community QR code (#19700) 2024-04-25 13:49:17 +02:00
Yevheniia Berdnyk 6d6766dce1 e2e: fix for wallet amount input 2024-04-25 12:11:47 +03:00
frank ce3d32dc0a refactor(local pair sync)_: move partial config to backend (#19753)
https://github.com/status-im/status-go/compare/cba3ac57...90b18d4f
2024-04-25 12:13:52 +08:00
Ajay Sivan 56ff84f475 Log revealed addresses in status-go (#19712) 2024-04-24 19:28:03 -07:00
Mohsen cdb39452d7 [#19303] fix: edit profile design feedbacks (#19562) 2024-04-24 20:56:32 +03:00
256 changed files with 6125 additions and 4800 deletions
+1
View File
@@ -36,3 +36,4 @@ TEST_STATEOFUS=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=0
ENABLE_ALERT_BANNER=0
+1
View File
@@ -37,3 +37,4 @@ TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=1
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
ENABLE_ALERT_BANNER=0
+1
View File
@@ -37,3 +37,4 @@ LOCAL_PAIRING_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=1
ENABLE_ALERT_BANNER=1
+1
View File
@@ -23,3 +23,4 @@ DATABASE_MANAGEMENT_ENABLED=1
DELETE_MESSAGE_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0
ENABLE_ALERT_BANNER=1
+8
View File
@@ -145,6 +145,14 @@ android {
jvmTarget = JavaVersion.VERSION_17
}
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
externalNativeBuild {
cmake {
// This version must match cmakeVersions inside nix/pkgs/android-sdk/compose.nix
version "3.22.1"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
+1 -1
View File
@@ -48,7 +48,7 @@ abstract_target 'Status' do
use_react_native!(
:path => config[:reactNativePath],
:fabric_enabled => flags[:fabric_enabled],
:hermes_enabled => false,
:hermes_enabled => true,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
+129 -69
View File
@@ -14,11 +14,15 @@ PODS:
- ReactCommon/turbomodule/core (= 0.73.5)
- fmt (6.2.1)
- glog (0.3.5)
- hermes-engine (0.73.5):
- hermes-engine/Pre-built (= 0.73.5)
- hermes-engine/Pre-built (0.73.5)
- HMSegmentedControl (1.5.6)
- Keycard (3.0.6):
- CryptoSwift
- secp256k1
- SSZipArchive
- libevent (2.1.12)
- libwebp (1.2.4):
- libwebp/demux (= 1.2.4)
- libwebp/mux (= 1.2.4)
@@ -44,6 +48,12 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCT-Folly/Futures (2022.05.16.00):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- libevent
- RCTRequired (0.73.5)
- RCTTypeSafety (0.73.5):
- FBLazyVector (= 0.73.5)
@@ -67,11 +77,11 @@ PODS:
- DoubleConversion
- FBReactNativeSpec
- glog
- hermes-engine
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-jsc
- React-jsi
- React-jsiexecutor
- React-NativeModulesApple
@@ -80,10 +90,11 @@ PODS:
- ReactCommon/turbomodule/core
- React-Core (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -93,10 +104,11 @@ PODS:
- Yoga
- React-Core/CoreModulesHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -106,9 +118,10 @@ PODS:
- Yoga
- React-Core/Default (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -118,11 +131,12 @@ PODS:
- Yoga
- React-Core/DevSupport (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-Core/RCTWebSocket (= 0.73.5)
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-jsinspector (= 0.73.5)
@@ -133,10 +147,11 @@ PODS:
- Yoga
- React-Core/RCTActionSheetHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -146,10 +161,11 @@ PODS:
- Yoga
- React-Core/RCTAnimationHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -159,10 +175,11 @@ PODS:
- Yoga
- React-Core/RCTBlobHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -172,10 +189,11 @@ PODS:
- Yoga
- React-Core/RCTImageHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -185,10 +203,11 @@ PODS:
- Yoga
- React-Core/RCTLinkingHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -198,10 +217,11 @@ PODS:
- Yoga
- React-Core/RCTNetworkHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -211,10 +231,11 @@ PODS:
- Yoga
- React-Core/RCTSettingsHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -224,10 +245,11 @@ PODS:
- Yoga
- React-Core/RCTTextHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -237,10 +259,11 @@ PODS:
- Yoga
- React-Core/RCTVibrationHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -250,10 +273,11 @@ PODS:
- Yoga
- React-Core/RCTWebSocket (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-cxxreact
- React-jsc
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -277,6 +301,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-debug (= 0.73.5)
@@ -290,6 +315,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -311,7 +337,6 @@ PODS:
- React-Fabric/textlayoutmanager (= 0.73.5)
- React-Fabric/uimanager (= 0.73.5)
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -323,6 +348,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -330,7 +356,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -342,6 +367,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -349,7 +375,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -361,6 +386,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -368,7 +394,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -380,6 +405,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -387,7 +413,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -399,6 +424,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -417,7 +443,6 @@ PODS:
- React-Fabric/components/unimplementedview (= 0.73.5)
- React-Fabric/components/view (= 0.73.5)
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -429,6 +454,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -436,7 +462,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -448,6 +473,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -455,7 +481,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -467,6 +492,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -474,7 +500,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -486,6 +511,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -493,7 +519,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -505,6 +530,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -512,7 +538,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -524,6 +549,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -531,7 +557,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -543,6 +568,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -550,7 +576,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -562,6 +587,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -569,7 +595,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -581,6 +606,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -588,7 +614,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -600,6 +625,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -607,7 +633,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -619,6 +644,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -626,7 +652,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -639,6 +664,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -646,7 +672,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -658,6 +683,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -665,7 +691,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -677,6 +702,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -684,7 +710,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -696,6 +721,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -703,7 +729,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -715,6 +740,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -722,7 +748,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -734,6 +759,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -741,7 +767,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -753,6 +778,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -760,7 +786,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -772,6 +797,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -780,7 +806,6 @@ PODS:
- React-debug
- React-Fabric/uimanager
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -792,6 +817,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -799,7 +825,6 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -811,13 +836,13 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired (= 0.73.5)
- RCTTypeSafety (= 0.73.5)
- React-Fabric
- React-graphics
- React-ImageManager
- React-jsc
- React-jsi
- React-jsiexecutor (= 0.73.5)
- React-logger
@@ -830,6 +855,18 @@ PODS:
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-utils
- React-hermes (0.73.5):
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- RCT-Folly/Futures (= 2022.05.16.00)
- React-cxxreact (= 0.73.5)
- React-jsi
- React-jsiexecutor (= 0.73.5)
- React-jsinspector (= 0.73.5)
- React-perflogger (= 0.73.5)
- React-ImageManager (0.73.5):
- glog
- RCT-Folly/Fabric
@@ -839,11 +876,6 @@ PODS:
- React-graphics
- React-rendererdebug
- React-utils
- React-jsc (0.73.5):
- React-jsc/Fabric (= 0.73.5)
- React-jsi (= 0.73.5)
- React-jsc/Fabric (0.73.5):
- React-jsi (= 0.73.5)
- React-jserrorhandler (0.73.5):
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-debug
@@ -854,11 +886,13 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-jsiexecutor (0.73.5):
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-cxxreact (= 0.73.5)
- React-jsi (= 0.73.5)
@@ -883,10 +917,16 @@ PODS:
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- react-native-compat (2.12.2):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- react-native-config (1.5.0):
- react-native-config/App (= 1.5.0)
- react-native-config/App (1.5.0):
- React-Core
- react-native-get-random-values (1.11.0):
- React-Core
- react-native-hole-view (3.0.0-alpha4):
- React-Core
- react-native-image-resizer (1.2.3):
@@ -913,10 +953,10 @@ PODS:
- React-nativeconfig (0.73.5)
- React-NativeModulesApple (0.73.5):
- glog
- hermes-engine
- React-callinvoker
- React-Core
- React-cxxreact
- React-jsc
- React-jsi
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
@@ -938,7 +978,7 @@ PODS:
- RCTTypeSafety
- React-Core
- React-CoreModules
- React-jsc
- React-hermes
- React-nativeconfig
- React-NativeModulesApple
- React-RCTFabric
@@ -947,6 +987,7 @@ PODS:
- React-runtimescheduler
- ReactCommon
- React-RCTBlob (0.73.5):
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Codegen
- React-Core/RCTBlobHeaders
@@ -957,6 +998,7 @@ PODS:
- ReactCommon
- React-RCTFabric (0.73.5):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-Core
- React-debug
@@ -964,7 +1006,6 @@ PODS:
- React-FabricImage
- React-graphics
- React-ImageManager
- React-jsc
- React-jsi
- React-nativeconfig
- React-RCTImage
@@ -1025,11 +1066,11 @@ PODS:
- React-jsi (= 0.73.5)
- React-runtimescheduler (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker
- React-cxxreact
- React-debug
- React-jsc
- React-jsi
- React-rendererdebug
- React-runtimeexecutor
@@ -1045,6 +1086,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1057,6 +1099,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1067,6 +1110,7 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1151,7 +1195,9 @@ DEPENDENCIES:
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- Keycard (from `https://github.com/status-im/Keycard.swift.git`)
- libevent (~> 2.1.12)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
@@ -1167,8 +1213,8 @@ DEPENDENCIES:
- React-Fabric (from `../node_modules/react-native/ReactCommon`)
- React-FabricImage (from `../node_modules/react-native/ReactCommon`)
- React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
- React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
- React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
- React-jsc (from `../node_modules/react-native/ReactCommon/jsc`)
- React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
@@ -1180,7 +1226,9 @@ DEPENDENCIES:
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
- "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)"
- "react-native-compat (from `../node_modules/@walletconnect/react-native-compat`)"
- react-native-config (from `../node_modules/react-native-config`)
- react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
- react-native-hole-view (from `../node_modules/react-native-hole-view`)
- react-native-image-resizer (from `../node_modules/react-native-image-resizer`)
- react-native-lottie-splash-screen (from `../node_modules/react-native-lottie-splash-screen`)
@@ -1238,6 +1286,7 @@ SPEC REPOS:
- CryptoSwift
- fmt
- HMSegmentedControl
- libevent
- libwebp
- SDWebImage
- SDWebImageWebPCoder
@@ -1258,6 +1307,9 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/React/FBReactNativeSpec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
:tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4
Keycard:
:git: https://github.com/status-im/Keycard.swift.git
RCT-Folly:
@@ -1286,10 +1338,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon"
React-graphics:
:path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
React-hermes:
:path: "../node_modules/react-native/ReactCommon/hermes"
React-ImageManager:
:path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
React-jsc:
:path: "../node_modules/react-native/ReactCommon/jsc"
React-jserrorhandler:
:path: "../node_modules/react-native/ReactCommon/jserrorhandler"
React-jsi:
@@ -1312,8 +1364,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-community/blur"
react-native-cameraroll:
:path: "../node_modules/@react-native-camera-roll/camera-roll"
react-native-compat:
:path: "../node_modules/@walletconnect/react-native-compat"
react-native-config:
:path: "../node_modules/react-native-config"
react-native-get-random-values:
:path: "../node_modules/react-native-get-random-values"
react-native-hole-view:
:path: "../node_modules/react-native-hole-view"
react-native-image-resizer:
@@ -1434,27 +1490,29 @@ SPEC CHECKSUMS:
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 530710e7949eb12c82670bd09e946becf50a3c2a
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87
RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c
React: 84221d5e0ce297bc57c4b6af539a62d812d89f10
React-callinvoker: 5d17577ecc7f784535ebedf3aad4bcbf8f4b5117
React-Codegen: 86ddd366e10277244cb665e680c9631c459876d1
React-Core: 89feaf0468bcfdfc09aace4a3dda48ffc20628f4
React-Codegen: 857e7984fc277aadde2a7a427288b6918ece7b2b
React-Core: 8e782e7e24c7843871a0d9c3c8d7c5b3ebb73832
React-CoreModules: 7875ee247e3e6e0e683b52cd1cdda1b71618bd55
React-cxxreact: 0f83bc025517476a7e009afd240e62b7cb99f110
React-cxxreact: 788cd771c6e94d44f8d472fdfae89b67226067ea
React-debug: 55c7f2b8463bfe85567c9f4ede904085601130c9
React-Fabric: ca74011a194b1783dc3270a504c240835d3cb983
React-FabricImage: 384372a69647c6e30ce64b56ebe33cc30341dfce
React-Fabric: 8cb43853496bb8032420edf62e7281c53109e682
React-FabricImage: fbdc0ef7ed58a87c77600017c19a751932de3e47
React-graphics: dc8307b615f14e13f1081ac23ea66697808bcd29
React-hermes: d9acaa4ebf2118d9bd8a541af8c620c467b356b6
React-ImageManager: 2a97ddc9b1f459121697d629cfbe69712997d76f
React-jsc: 899086c7f0ab7b6ab85873d55882c2aea8473cbf
React-jserrorhandler: b97b16674258ccaeff5a70047a097a140e76d12d
React-jsi: 60bc1fdca5f69162ab9d0c4623ea77538308a4c3
React-jsiexecutor: 5ae96903178c1fdb9f18b0367b3bb73e8f6641e1
React-jsi: 1d59d0a148c76641ac577729e0268bafa494152c
React-jsiexecutor: 262b66928ad948491d03fd328bb5b822cce94647
React-jsinspector: 32db5e364bcae8fca8cdf8891830636275add0c5
React-logger: 0331362115f0f5b392bd7ed14636d1a3ea612479
React-Mapbuffer: 7c35cd53a22d0be04d3f26f7881c7fb7dd230216
@@ -1463,7 +1521,9 @@ SPEC CHECKSUMS:
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
react-native-blur: 799045500f56146afc46245148080e7b7623cb75
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
react-native-compat: 84e00e8dcff9251278c0d48f2bce81f4502e3925
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
react-native-lottie-splash-screen: 4e1b1fd9d6633f9cd2106d6877eb5ba0147f3e2b
@@ -1476,13 +1536,13 @@ SPEC CHECKSUMS:
react-native-transparent-video: e484ad11ace8e5f62516e2c5e15efd3cb4df24b0
react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0
React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9
React-NativeModulesApple: 461b7a216dffdcfcae46afeba2e0859a78eef71e
React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f
React-perflogger: 0dd9f1725d55f8264b81efadd373fe1d9cca7dc2
React-RCTActionSheet: 05656d2102b0d0a2676d58bad4d80106af5367b2
React-RCTAnimation: 6c66beae98730fb7615df28caf651e295f2401e5
React-RCTAppDelegate: 0a5359f86586fc8fa2604dd86fab5899dbea57a9
React-RCTBlob: b377b7580098c6332d14cb09985dcff3eea29c26
React-RCTFabric: b45c27ec85755dbc95e8a7abccb9142a375ee22d
React-RCTAppDelegate: 891b80c596fffcb3f90431739495d606a9a0d610
React-RCTBlob: 8ecee445ec5fa9ed8a8621a136183c1045165100
React-RCTFabric: f291e06bc63fef26cdd105537bae5c6a8d3bdca8
React-RCTImage: 585b16465146cb839da02f3179ce7cb19d332642
React-RCTLinking: 09ba11f7df62946e7ddca1b51aa3bf47b230e008
React-RCTNetwork: e070f8d2fca60f1e9571936ce54d165e77129e76
@@ -1492,9 +1552,9 @@ SPEC CHECKSUMS:
React-rendererdebug: ee05480666415f7a76e6cf0a7a50363423f44809
React-rncore: 010565651e9cf2e4fac9517a348446789dd55e01
React-runtimeexecutor: 56f562a608056fb0c1711d900a992e26f375d817
React-runtimescheduler: 7b558337d22a47a270b5c99d8016b5ab743b3035
React-runtimescheduler: 814b644a5f456c7df1fba7bcd9914707152527c6
React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066
ReactCommon: dcc87812d79ce368cc41b7cf49fb624cf3c22b6b
ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af
ReactNativeAudioToolkit: de9610f323e855ac6574be8c99621f3d57c5df06
ReactNativeCameraKit: d95d3e19c514526a234d9f93c6db7e7f10eef9ea
ReactNativeNavigation: 46305e1026fa4cdcf0cfb3822932fc58d090668d
@@ -1520,6 +1580,6 @@ SPEC CHECKSUMS:
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7
PODFILE CHECKSUM: bb02c595a4aa4430da978b55da5440811cbd9d91
PODFILE CHECKSUM: 5dd4a5279260d370bcdf016158c825ceb404ee06
COCOAPODS: 1.13.0
+176 -111
View File
@@ -8,6 +8,8 @@
/* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C29909A975E0654116557F /* libPods-Status-StatusIm.a */; };
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */; };
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
@@ -35,7 +37,6 @@
3AAD2AD324A3A60E0075D594 /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
3AAD2AD424A3A60E0075D594 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
3ABC7AF8245FF85900612C45 /* InterStatus-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */; };
4A976A097386605EB7E85E28 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 804FB5E6B0FBBDB034E6CD09 /* libPods-Status-StatusIm-StatusImTests.a */; };
57C854A7993C47A3B1AECD32 /* Inter-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */; };
65F6941925780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
65F6941A25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
@@ -49,7 +50,6 @@
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
C0BA109CA441C3DB93714F1D /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA288D7C6590DC9ED1F8657F /* libPods-Status-StatusIm.a */; };
C14C5F8D29C0A149005C58A7 /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
C14C5F9129C0AD9C005C58A7 /* launch-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */; };
C14C5F9329C0ADB5005C58A7 /* launch-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9229C0ADB5005C58A7 /* launch-icon.png */; };
@@ -57,10 +57,10 @@
C1715FFB29C0BCE50088FA8B /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
C1715FFC29C0BCE80088FA8B /* launch-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9229C0ADB5005C58A7 /* launch-icon.png */; };
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B21D8695250033ED64 /* Statusgo.xcframework */; };
D0B4A2EA5E72EDB67CE6DA66 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C43A120FA22BB78FCC059 /* libPods-Status-StatusImPR.a */; };
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -114,12 +114,15 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
3DE83268BA3216610DFF6337 /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
@@ -129,31 +132,28 @@
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "UbuntuMono-Regular.ttf"; path = "../resources/fonts/UbuntuMono-Regular.ttf"; sourceTree = "<group>"; };
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
78655BCD07318E9885F5214B /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
804FB5E6B0FBBDB034E6CD09 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
857B0CA5528DF4E460CECF05 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
870C29BCADFAAEC7F7C0ADD0 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
94F1B9FD13C8504F50E31C94 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = "<group>"; };
B321D25F4493470980039457 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BoldItalic.otf"; path = "../resources/fonts/Inter-BoldItalic.otf"; sourceTree = "<group>"; };
B63C43A120FA22BB78FCC059 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@3x.png"; path = "StatusIm/launch-icon@3x.png"; sourceTree = "<group>"; };
C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@2x.png"; path = "StatusIm/launch-icon@2x.png"; sourceTree = "<group>"; };
C14C5F9229C0ADB5005C58A7 /* launch-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon.png"; path = "StatusIm/launch-icon.png"; sourceTree = "<group>"; };
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
D272F46F39D037EC0EAB65C8 /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
EA288D7C6590DC9ED1F8657F /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -161,7 +161,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4A976A097386605EB7E85E28 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -174,7 +174,7 @@
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
C0BA109CA441C3DB93714F1D /* libPods-Status-StatusIm.a in Frameworks */,
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -188,7 +188,7 @@
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
D0B4A2EA5E72EDB67CE6DA66 /* libPods-Status-StatusImPR.a in Frameworks */,
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -314,9 +314,9 @@
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
EA288D7C6590DC9ED1F8657F /* libPods-Status-StatusIm.a */,
804FB5E6B0FBBDB034E6CD09 /* libPods-Status-StatusIm-StatusImTests.a */,
B63C43A120FA22BB78FCC059 /* libPods-Status-StatusImPR.a */,
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */,
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */,
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -324,12 +324,12 @@
D0D5C8D06825D33BA2D2121E /* Pods */ = {
isa = PBXGroup;
children = (
857B0CA5528DF4E460CECF05 /* Pods-Status-StatusIm.debug.xcconfig */,
78655BCD07318E9885F5214B /* Pods-Status-StatusIm.release.xcconfig */,
870C29BCADFAAEC7F7C0ADD0 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
94F1B9FD13C8504F50E31C94 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
3DE83268BA3216610DFF6337 /* Pods-Status-StatusImPR.debug.xcconfig */,
D272F46F39D037EC0EAB65C8 /* Pods-Status-StatusImPR.release.xcconfig */,
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */,
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */,
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */,
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@@ -341,11 +341,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
buildPhases = (
53D1210C251AB35BB66F64D1 /* [CP] Check Pods Manifest.lock */,
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
2E8578589647F2D1AB7D69B0 /* [CP] Copy Pods Resources */,
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */,
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -361,14 +362,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
buildPhases = (
0792D7C164832E59371E617A /* [CP] Check Pods Manifest.lock */,
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
E3914A731DF919ED00EBB515 /* Run Script */,
70A851EF00039276F55A4FB3 /* [CP] Copy Pods Resources */,
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */,
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -383,14 +385,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
buildPhases = (
16ECB1DEB0091DFC0F3DED3C /* [CP] Check Pods Manifest.lock */,
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */,
3AAD2ABB24A3A60E0075D594 /* Sources */,
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
3AAD2AC924A3A60E0075D594 /* Resources */,
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
3AAD2AD724A3A60E0075D594 /* Run Script */,
C15E3DDA7B1E1CB5EDF76A1E /* [CP] Copy Pods Resources */,
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */,
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -544,51 +547,7 @@
shellPath = "/usr/bin/env sh";
shellScript = "set -o errexit\nexport NODE_BINARY=\"${NODE_BINARY:-node}\"\nexport NODE_ARGS=\"${NODE_ARGS:- --max-old-space-size=16384 }\"\n\n\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n";
};
0792D7C164832E59371E617A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
16ECB1DEB0091DFC0F3DED3C /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
2E8578589647F2D1AB7D69B0 /* [CP] Copy Pods Resources */ = {
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -612,6 +571,52 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
showEnvVarsInLog = 0;
};
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -640,7 +645,25 @@
shellPath = "/usr/bin/env sh";
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
};
53D1210C251AB35BB66F64D1 /* [CP] Check Pods Manifest.lock */ = {
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -662,31 +685,7 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
70A851EF00039276F55A4FB3 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
showEnvVarsInLog = 0;
};
C15E3DDA7B1E1CB5EDF76A1E /* [CP] Copy Pods Resources */ = {
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -710,6 +709,24 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
showEnvVarsInLog = 0;
};
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E3914A731DF919ED00EBB515 /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
@@ -724,6 +741,46 @@
shellPath = "/usr/bin/env sh";
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
};
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -771,7 +828,7 @@
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 870C29BCADFAAEC7F7C0ADD0 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
baseConfigurationReference = D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = .debug;
@@ -808,7 +865,7 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 94F1B9FD13C8504F50E31C94 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
baseConfigurationReference = 1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = "";
@@ -841,7 +898,7 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 857B0CA5528DF4E460CECF05 /* Pods-Status-StatusIm.debug.xcconfig */;
baseConfigurationReference = A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -923,7 +980,7 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 78655BCD07318E9885F5214B /* Pods-Status-StatusIm.release.xcconfig */;
baseConfigurationReference = 232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -998,7 +1055,7 @@
};
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3DE83268BA3216610DFF6337 /* Pods-Status-StatusImPR.debug.xcconfig */;
baseConfigurationReference = 7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -1078,7 +1135,7 @@
};
3AAD2ADB24A3A60E0075D594 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D272F46F39D037EC0EAB65C8 /* Pods-Status-StatusImPR.release.xcconfig */;
baseConfigurationReference = 7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -1228,18 +1285,22 @@
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "$(inherited)";
OTHER_CFLAGS = (
"$(inherited)",
" ",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
" ",
);
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
USE_HERMES = false;
USE_HERMES = true;
VALID_ARCHS = arm64;
"VALID_ARCHS[sdk=iphonesimulator*]" = x86_64;
};
@@ -1315,18 +1376,22 @@
);
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = NO;
OTHER_CFLAGS = "$(inherited)";
OTHER_CFLAGS = (
"$(inherited)",
" ",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
" ",
);
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
USE_HERMES = false;
USE_HERMES = true;
VALIDATE_PRODUCT = YES;
VALID_ARCHS = arm64;
};
@@ -47,7 +47,8 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
private fun updateConfig(jsonConfigString: String, absRootDirPath: String, keystoreDirPath: String): String {
val jsonConfig = JSONObject(jsonConfigString)
val dataDirPath = jsonConfig.getString("DataDir")
// when doing local pair syncing, backend will provide default data dir
val dataDirPath = jsonConfig.optString("DataDir","")
val logEnabled = jsonConfig.getBoolean("LogEnabled")
val gethLogFile = if (logEnabled) logManager.prepareLogsFile(reactContext) else null
val gethLogDirPath = gethLogFile?.parent
@@ -140,7 +141,6 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
updatedJsonConfigString
} catch (e: JSONException) {
Log.e(TAG, "updateConfig failed: ${e.message}")
System.exit(1)
""
}
}
@@ -66,6 +66,9 @@ RCT_EXPORT_METHOD(restoreAccountAndLogin:(NSString *)request) {
NSData *configData = [config dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *configJSON = [NSJSONSerialization JSONObjectWithData:configData options:NSJSONReadingMutableContainers error:nil];
NSString *relativeDataDir = [configJSON objectForKey:@"DataDir"];
if (relativeDataDir == nil) {
relativeDataDir = @"";
}
NSString *absDataDir = [rootUrl.path stringByAppendingString:relativeDataDir];
NSURL *absDataDirUrl = [NSURL fileURLWithPath:absDataDir];
NSString *keystoreDir = [@"/keystore/" stringByAppendingString:keyUID];
+56 -67
View File
@@ -8371,16 +8371,16 @@
},
{
"path": "commons-codec/commons-codec/1.16.1",
"path": "commons-codec/commons-codec/1.17.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-codec-1.16.1.pom": {
"sha1": "fdca64157d8fd070e24bd7d4ae9b8851d9ed9c0e",
"sha256": "sha256-uCbd2S+dfMZDcaAvoIMMFU1nyYNw6lSi0ZbnLrWQrSg="
"commons-codec-1.17.0.pom": {
"sha1": "00df1652d86779f44021a4c52a928d0792217eec",
"sha256": "sha256-wBxM2l5Aj0HtHYPkoKFwz1OAG2M4q6SfD5BHhrwSFPw="
},
"commons-codec-1.16.1.jar": {
"sha1": "47bd4d333fba53406f6c6c51884ddbca435c8862",
"sha256": "sha256-7Ie/tV8iy9GyHiGQ7toosrMS7SpDHuSfvcwBgS0EpeQ="
"commons-codec-1.17.0.jar": {
"sha1": "0dbe8eef6e14460e73da07f7b11bf994d6626355",
"sha256": "sha256-9wDegKwnDQNE/ep0aCAdi5yAXlxkgzHDYZ8u4GfM/Fk="
}
}
},
@@ -11511,16 +11511,16 @@
},
{
"path": "com/google/errorprone/error_prone_annotations/2.26.1",
"path": "com/google/errorprone/error_prone_annotations/2.27.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_annotations-2.26.1.pom": {
"sha1": "2e23702f7c5f6c85252ed22bf7e96b474fe48086",
"sha256": "sha256-rqfpkeLf3LR/X71QhYdTX3gCvLni/C1Ou1C+QbaE2p8="
"error_prone_annotations-2.27.1.pom": {
"sha1": "432107569fdae073842841c566ea1eea3b2f0a96",
"sha256": "sha256-TCN6vSm6OvOcp0TLSkHyRbX/oEXQNskkSvKrPKvKhTc="
},
"error_prone_annotations-2.26.1.jar": {
"sha1": "c1fde57694bdc14e8618899aaa6e857d9465d7de",
"sha256": "sha256-3iXy2aIVZSm9dl9R2O/fwN+nMB4E77nMdbfxDPXQ4Ps="
"error_prone_annotations-2.27.1.jar": {
"sha1": "a87dac4f79a6e5b1e55c629f16c754c53cbd50ec",
"sha256": "sha256-pIlbXbAkNhTZDOKixvgwYkkJwB4xWH2Ow+z1Hl5+dQY="
}
}
},
@@ -11647,12 +11647,12 @@
},
{
"path": "com/google/errorprone/error_prone_parent/2.26.1",
"path": "com/google/errorprone/error_prone_parent/2.27.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_parent-2.26.1.pom": {
"sha1": "b881c4c0f53eef367689790e18dc033d8a75bd52",
"sha256": "sha256-SmrQDTGwpa3Nmk9gUGXVtEX65KBMv4J+XRrBB34vgU0="
"error_prone_parent-2.27.1.pom": {
"sha1": "b00504c9994e0c16dc77d661b19421f1ffd179b4",
"sha256": "sha256-APlKPmg8fOr5lQFP/EB/INNycrFQ0mEbNVdLjOcYIjY="
}
}
},
@@ -15923,17 +15923,6 @@
}
},
{
"path": "org/apache/commons/commons-parent/66",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-parent-66.pom": {
"sha1": "24cf85c9d30c5ca5a2f48d806e93d8328b622a8c",
"sha256": "sha256-SP1tyEblax9AhmDRY+dTAPnjhLtjvkgqgIKiHXKo25w="
}
}
},
{
"path": "org/apache/commons/commons-parent/67",
"repo": "https://repo.maven.apache.org/maven2",
@@ -16691,20 +16680,20 @@
},
{
"path": "org/checkerframework/checker-qual/3.42.0",
"path": "org/checkerframework/checker-qual/3.43.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"checker-qual-3.42.0.pom": {
"sha1": "49d71d964f0ac5505caa5f996c8497c9462e9eeb",
"sha256": "sha256-v1/KqycvVMvPG753w72WPIIcmrrSBYcIvwvtPIdUlMo="
"checker-qual-3.43.0.pom": {
"sha1": "48ad8955d64547b84ef581361c29c030e56430cb",
"sha256": "sha256-kxO/U7Pv2KrKJm7qi5bjB5drZcCxZRDMbwIxn7rr7UM="
},
"checker-qual-3.42.0.jar": {
"sha1": "638ec33f363a94d41a4f03c3e7d3dcfba64e402d",
"sha256": "sha256-zK7dM68LeJTZ8vO2RPTRnkOSjjKQLmGsTRB3eDD1qsc="
"checker-qual-3.43.0.jar": {
"sha1": "9425eee39e56b116d2b998b7c2cebcbd11a3c98b",
"sha256": "sha256-P7wumPBYVMPfFt+auqlVuRsVs+ysM2IyCO1kJGQO8PY="
},
"checker-qual-3.42.0.module": {
"sha1": "022eca66f8300ceaa525ef4b3c81f8e88f1d1495",
"sha256": "sha256-4PpiK33mPq4RBH726RtMKtDx8OE8uQP/UggKR/V6V0Y="
"checker-qual-3.43.0.module": {
"sha1": "3020cf05cf20a5f6e2137e59291be76cd1252b83",
"sha256": "sha256-+BYzJyRauGJVMpSMcqkwVIzZfzTWw/6GD6auxaNNebQ="
}
}
},
@@ -19238,16 +19227,16 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC1",
"path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-reflect-2.0.0-RC1.pom": {
"sha1": "b08c97cfaffcdf60a6db35b13def6cde1aed6d31",
"sha256": "sha256-9NoPwtEYJp0xCTkijwRiV3ri4UFEdh0PojqTWH/nvpI="
"kotlin-reflect-2.0.0-RC2.pom": {
"sha1": "f59f0775b6c4874de09c44d692037fd8f3132bfd",
"sha256": "sha256-1aOhZnjByMuCwt0x6SO2i+pd0ka/rEv8T+nO3nUo6gM="
},
"kotlin-reflect-2.0.0-RC1.jar": {
"sha1": "3d4ec6ec94e86fd10957c78471f98373e899dd2e",
"sha256": "sha256-BsavyQLOwArroQNLg97ck3PaB6kJBpyLZDwq+mAvW5w="
"kotlin-reflect-2.0.0-RC2.jar": {
"sha1": "a416a6e9f3c00ba5f0c58091bbe20128117720ff",
"sha256": "sha256-VSmq3nuZWEmDRvXHvnD+3VIrYmg0FlJmaIJ9j3mNbaE="
}
}
},
@@ -20780,28 +20769,28 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC1",
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-stdlib-2.0.0-RC1.pom": {
"sha1": "acf44b7e30e2500a0e1fed7bfc0c9bc6cc8fe65e",
"sha256": "sha256-nVnonn+ye/SexoelpxZXCz8srOtUH95WNwKKAPXf86I="
"kotlin-stdlib-2.0.0-RC2.pom": {
"sha1": "a0173de9669d2b669a0a9331abc10eed854c7578",
"sha256": "sha256-P5+BoFtN2UXxa5nt5GUj/36Ts2zN2qRIKsbvj519M2g="
},
"kotlin-stdlib-2.0.0-RC1-all.jar": {
"sha1": "496ce100c4aa6dabf67dc1c0443076f42197a535",
"sha256": "sha256-aiXa9C5VAsj0YGF053MUD2Olq3z1Vj9CD849pASBoIo="
"kotlin-stdlib-2.0.0-RC2-all.jar": {
"sha1": "e6142a28b5fa6722cd811dd86278ad056784fa40",
"sha256": "sha256-MOBSIrwGf/+4lqMna18ePylFC/HZRh0noZzg78eTtc0="
},
"kotlin-stdlib-2.0.0-RC1-common.jar": {
"kotlin-stdlib-2.0.0-RC2-common.jar": {
"sha1": "281e03983850e590dcc0d2474758f2fa8dd0e96a",
"sha256": "sha256-EsHDu0lApPmVlUD/tc8uLl6brNtoywDEvSidFjm9HSc="
},
"kotlin-stdlib-2.0.0-RC1.jar": {
"sha1": "ad47aa314788daa709fe419d843fccc28a6c6edf",
"sha256": "sha256-u7LJuBPmGW+a+p+a3Ys5XuOEqxdjoIgOCE0pQiFPHDA="
"kotlin-stdlib-2.0.0-RC2.jar": {
"sha1": "504eb64ad16be7612c962dd198a511a809800d80",
"sha256": "sha256-nFMX9JplxBB9EJM5WG+LfW95ehOyI0zMR5CGQZDpQVo="
},
"kotlin-stdlib-2.0.0-RC1.module": {
"sha1": "d59c1362007ed529e61cabb999c5fba72ce232d2",
"sha256": "sha256-NZ7bRyR/SM+y/HVTWPsjAXt0sN1GUsynslWbvCKMu30="
"kotlin-stdlib-2.0.0-RC2.module": {
"sha1": "ec60b751c2b289581aed1cf553d477048a890cc4",
"sha256": "sha256-18U/l65G+3O8wy1oZbKJ+MSv8fv3yvfaXIllxukU+wg="
}
}
},
@@ -21081,16 +21070,16 @@
},
{
"path": "org/junit/junit-bom/5.10.2",
"path": "org/junit/junit-bom/5.11.0-M1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"junit-bom-5.10.2.pom": {
"sha1": "b25ed98a5bd08cdda60e569cf22822a760e76019",
"sha256": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg="
"junit-bom-5.11.0-M1.pom": {
"sha1": "afec72e7b7df3cd97c3fe53164c3f5dfc6a0ff94",
"sha256": "sha256-tQl19cuoYgSr2j3Nbwl6+Rn+IuIe9pR43WuRn2x0DYU="
},
"junit-bom-5.10.2.module": {
"sha1": "ce536748a853ae6ac09e7815fce0678a96cff778",
"sha256": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo="
"junit-bom-5.11.0-M1.module": {
"sha1": "8824de265f75444b83779557736d03b4c8fac3f7",
"sha256": "sha256-j2MviWXptvQGnj1YueomuaW8dqmOibQyM3d6zm2tsjc="
}
}
},
+7 -8
View File
@@ -523,7 +523,7 @@ https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-cod
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.16.1/commons-codec-1.16.1.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.0/commons-codec-1.17.0.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.16.1/commons-io-2.16.1.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
@@ -711,7 +711,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotatio
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.26.1/error_prone_annotations-2.26.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.1/error_prone_annotations-2.27.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
@@ -723,7 +723,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.9.0/error_prone_parent-2.9.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.26.1/error_prone_parent-2.26.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.1/error_prone_parent-2.27.1.pom
https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
@@ -1034,7 +1034,6 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/common
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/commons-parent-42.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/commons-parent-48.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/66/commons-parent-66.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/67/commons-parent-67.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/69/commons-parent-69.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
@@ -1091,7 +1090,7 @@ https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.1/che
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.42.0/checker-qual-3.42.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.43.0/checker-qual-3.43.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
@@ -1248,7 +1247,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.20/kotlin-reflect-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.22/kotlin-reflect-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC1/kotlin-reflect-2.0.0-RC1.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC2/kotlin-reflect-2.0.0-RC2.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.8.0/kotlin-scripting-common-1.8.0.pom
@@ -1350,7 +1349,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.20-R
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.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/2.0.0-RC1/kotlin-stdlib-2.0.0-RC1.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC2/kotlin-stdlib-2.0.0-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.22/kotlin-tooling-core-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom
@@ -1369,7 +1368,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trov
https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.pom
https://repo.maven.apache.org/maven2/org/json/json/20240303/json-20240303.pom
https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.13.1/jsoup-1.13.1.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.2/junit-bom-5.10.2.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.11.0-M1/junit-bom-5.11.0-M1.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8.1/stax-ex-1.8.1.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.pom
+2
View File
@@ -16,6 +16,7 @@ react-native-dialogs
react-native-fast-image
react-native-fs
react-native-gesture-handler
react-native-get-random-values
react-native-hole-view
react-native-image-crop-picker
react-native-image-resizer
@@ -35,3 +36,4 @@ react-native-status-keycard
react-native-svg
react-native-transparent-video
react-native-webview
walletconnect_react-native-compat
+2
View File
@@ -7,6 +7,8 @@ let
manifestLock = "ios/Pods/Manifest.lock";
in mkShell {
buildInputs = [ cocoapods ];
# https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md#enable-new-architecture-for-ios
RCT_NEW_ARCH_ENABLED = 1;
shellHook = ''
pushd "$STATUS_MOBILE_HOME" > /dev/null
{
+2 -3
View File
@@ -56,9 +56,8 @@ in {
ruby = super.ruby_3_1;
yarn = super.yarn.override { nodejs = super.nodejs-18_x; };
openjdk = super.openjdk11_headless;
xcodeWrapper = super.xcodeenv.composeXcodeWrapper {
version = "15.0";
allowHigher = true;
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
versions = ["15.1"];
};
go = super.go_1_20;
clang = super.clang_15;
+1
View File
@@ -16,6 +16,7 @@ androidenv.composeAndroidPackages {
platformToolsVersion = "33.0.3";
buildToolsVersions = [ "34.0.0" ];
platformVersions = [ "34" ];
# This version must match cmake version inside android/app/build.gradle
cmakeVersions = [ "3.22.1" ];
ndkVersion = "25.2.9519653";
includeNDK = true;
@@ -0,0 +1,50 @@
{ stdenv, lib, writeShellScriptBin }:
{ versions ? [ "15.1" ]
, xcodeBaseDir ? "/Applications/Xcode.app" }:
assert stdenv.isDarwin;
let
xcodebuildPath = "${xcodeBaseDir}/Contents/Developer/usr/bin/xcodebuild";
xcodebuildWrapper = writeShellScriptBin "xcodebuild" ''
currentVer="$(${xcodebuildPath} -version | awk 'NR==1{print $2}')"
wrapperVers=(${lib.concatStringsSep " " versions})
for ver in "''${wrapperVers[@]}"; do
if [[ "$currentVer" == "$ver" ]]; then
# here exec replaces the shell without creating a new process
# https://www.gnu.org/software/bash/manual/bash.html#index-exec
exec "${xcodebuildPath}" "$@"
fi
done
echo "The installed Xcode version ($currentVer) does not match any of the allowed versions: ${lib.concatStringsSep ", " versions}"
echo "Please update your local Xcode installation to match one of the allowed versions"
exit 1
'';
in
stdenv.mkDerivation {
pname = "xcode-wrapper-plus";
version = lib.concatStringsSep "," versions;
# Fails in sandbox. Use `--option sandbox relaxed` or `--option sandbox false`.
__noChroot = true;
buildCommand = ''
mkdir -p $out/bin
cd $out/bin
ln -s "${xcodebuildWrapper}/bin/xcode-select"
ln -s /usr/bin/security
ln -s /usr/bin/codesign
ln -s /usr/bin/xcrun
ln -s /usr/bin/plutil
ln -s /usr/bin/clang
ln -s /usr/bin/lipo
ln -s /usr/bin/file
ln -s /usr/bin/rev
ln -s "${xcodebuildWrapper}/bin/xcodebuild"
ln -s "${xcodeBaseDir}/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator"
cd ..
ln -s "${xcodeBaseDir}/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs"
'';
}
+6
View File
@@ -11,6 +11,12 @@ buildGoPackage {
phases = ["unpackPhase" "configurePhase" "buildPhase"];
# https://pkg.go.dev/net#hdr-Name_Resolution
# https://github.com/status-im/status-mobile/issues/19736
# https://github.com/status-im/status-mobile/issues/19581
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
preBuild = ''
pushd go/src/$goPackagePath
go run cmd/library/*.go > $NIX_BUILD_TOP/main.go
+6 -1
View File
@@ -38,10 +38,15 @@ in buildGoPackage {
# Ensure XCode is present for iOS, instead of failing at the end of the build.
preConfigure = optionalString isIOS enforceXCodeAvailable;
# https://pkg.go.dev/net#hdr-Name_Resolution
# https://github.com/status-im/status-mobile/issues/19736
# https://github.com/status-im/status-mobile/issues/19581
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
buildPhase = ''
runHook preBuild
echo -e "\nBuilding $pname for: ${concatStringsSep "," targets}"
gomobile bind \
${concatStringsSep " " goBuildFlags} \
-ldflags="$ldflags" \
+7
View File
@@ -8,6 +8,8 @@
"preinstall": "scripts/check-nix-shell.sh && make status-go-library"
},
"dependencies": {
"@ethersproject/shims": "^5.7.0",
"@json-rpc-tools/utils": "^1.7.6",
"@react-native-async-storage/async-storage": "1.19.3",
"@react-native-camera-roll/camera-roll": "7.5.2",
"@react-native-clipboard/clipboard": "1.13.2",
@@ -18,11 +20,15 @@
"@react-native-community/netinfo": "^4.4.0",
"@react-native-community/push-notification-ios": "^1.4.1",
"@react-native-community/slider": "^3.0.0",
"@walletconnect/react-native-compat": "^2.12.2",
"@walletconnect/web3wallet": "^1.11.2",
"base-64": "^1.0.0",
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status",
"chance": "^1.1.0",
"emojilib": "^2.4.0",
"eth-phishing-detect": "^1.2.0",
"ethers": "5.7.2",
"fast-text-encoding": "^1.0.6",
"form-data": "^4.0.0",
"functional-red-black-tree": "^1.0.1",
"i18n-js": "^3.3.0",
@@ -41,6 +47,7 @@
"react-native-fast-image": "^8.5.11",
"react-native-fs": "^2.14.1",
"react-native-gesture-handler": "2.14.1",
"react-native-get-random-values": "^1.11.0",
"react-native-gifted-charts": "^1.3.2",
"react-native-hole-view": "^3.0.0-alpha4",
"react-native-image-crop-picker": "0.40.0",
+37
View File
@@ -0,0 +1,37 @@
--- /tmp/tmp-status-mobile-ca53bf738/tmp.QcO69SAqs7/CameraRollModule.java 2024-04-19 14:02:42.746932000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java 2024-04-19 14:03:51.776866113 +0200
@@ -677,7 +677,7 @@
WritableArray subTypes = Arguments.createArray();
node.putArray("subTypes", subTypes);
-
+
if (includeSourceType) {
node.putString("sourceType", "UserLibrary");
} else {
@@ -685,7 +685,7 @@
}
WritableArray group_name = Arguments.createArray();
-
+
if (includeAlbums) {
group_name.pushString(media.getString(groupNameIndex));
}
@@ -1089,6 +1089,16 @@
promise.reject("CameraRoll:getPhotoThumbnail", "getPhotoThumbnail is not supported on Android");
}
+ @ReactMethod
+ public void getPhotosCountiOS(String arg, Promise promise) {
+ promise.reject("CameraRoll:getPhotosCountiOS", "getPhotosCountiOS is not supported on Android");
+ }
+
+ @ReactMethod
+ public void getFavoritesiOS(String arg, Promise promise) {
+ promise.reject("CameraRoll:getFavoritesiOS", "getFavoritesiOS is not supported on Android");
+ }
+
public void addListener(String eventName) {}
public void removeListeners(double count) {}
}
@@ -0,0 +1,16 @@
--- /tmp/tmp-status-mobile-ca53bf738/tmp.Ay8Xen8Mmn/NativeCameraRollModuleSpec.java 2024-04-19 12:10:05.789750000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/android/src/paper/java/com/reactnativecommunity/cameraroll/NativeCameraRollModuleSpec.java 2024-04-19 12:12:27.231493426 +0200
@@ -50,4 +50,13 @@
@ReactMethod
@DoNotStrip
public abstract void getPhotoThumbnail(String internalID, ReadableMap options, Promise promise);
+
+ @ReactMethod
+ @DoNotStrip
+ public abstract void getPhotosCountiOS(String arg, Promise promise);
+
+ @ReactMethod
+ @DoNotStrip
+ public abstract void getFavoritesiOS(String arg, Promise promise);
+
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 61 KiB

+2 -1
View File
@@ -148,7 +148,8 @@
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_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"}
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
status-im.config/WALLET_CONNECT_PROJECT_ID #shadow/env "WALLET_CONNECT_PROJECT_ID"}
:compiler-options
{;; needed because we override require and it
;; messes with source-map which reports callstack
-18
View File
@@ -1,18 +0,0 @@
(ns legacy.status-im.currency.core
(:require
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
[utils.re-frame :as rf]))
(defn get-currency
[db]
(get-in db [:profile/profile :currency] :usd))
(rf/defn set-currency
{:events [:wallet-legacy.settings.ui/currency-selected]}
[{:keys [db] :as cofx} currency]
(rf/merge cofx
(multiaccounts.update/multiaccount-update
:currency
currency
;; on changing currency, we should fetch tokens prices again
{:on-success #(rf/dispatch [:wallet/get-wallet-token])})))
@@ -1,21 +0,0 @@
(ns legacy.status-im.currency.core-test
(:require
[cljs.test :refer-macros [deftest is]]
[legacy.status-im.currency.core :as models]))
(deftest get-currency
(is (= :usd (models/get-currency {:profile/profile {:currency :usd}})))
(is (= :usd (models/get-currency {:profile/profile {:not-empty "would throw an error if was empty"}})))
(is (= :aud (models/get-currency {:profile/profile {:currency :aud}}))))
(deftest set-currency
(let [cofx (models/set-currency {:db {:profile/profile {:not-empty
"would throw an error if was empty"}}}
:usd)]
(is (= :usd (get-in cofx [:db :profile/profile :currency]))))
(is
(= :jpy
(get-in (models/set-currency {:db {:profile/profile {:not-empty
"would throw an error if was empty"}}}
:jpy)
[:db :profile/profile :currency]))))
+2 -2
View File
@@ -5,7 +5,6 @@
legacy.status-im.browser.core
legacy.status-im.browser.permissions
legacy.status-im.chat.models.loading
legacy.status-im.currency.core
legacy.status-im.data-store.chats
legacy.status-im.data-store.switcher-cards
legacy.status-im.data-store.visibility-status-updates
@@ -185,7 +184,8 @@
(= :chat view-id)
{:effects.async-storage/set {:chat-id (get-in cofx [:db :current-chat-id])
:key-uid (get-in cofx [:db :profile/profile :key-uid])}
:db (assoc db :screens/was-focused-once? true)}
:db (assoc db :screens/was-focused-once? true)
:dispatch [:alert-banners/unhide]}
(not (get db :screens/was-focused-once?))
{:db (assoc db :screens/was-focused-once? true)})))
+1 -163
View File
@@ -1,86 +1,7 @@
(ns legacy.status-im.node.core
(:require
[clojure.string :as string]
[legacy.status-im.utils.deprecated-types :as types]
[react-native.platform :as platform]
[status-im.config :as config]
[utils.ethereum.chain :as chain]))
(defn- add-log-level
[config log-level]
(if (empty? log-level)
(assoc config
:MaxPeers 20
:MaxPendingPeers 20
:LogLevel "ERROR"
:LogEnabled false)
(assoc config
:MaxPeers 20
:MaxPendingPeers 20
:LogLevel log-level
:LogEnabled true)))
(defn get-network-genesis-hash-prefix
"returns the hex representation of the first 8 bytes of
a network's genesis hash"
[network]
(case network
1 "d4e56740f876aef8"
3 "41941023680923e0"
4 "6341fd3daf94b748"
nil))
(defn get-les-topic
"returns discovery v5 topic derived from genesis of the provided network"
[network]
(let [les-discovery-identifier "LES2@"
hash-prefix (get-network-genesis-hash-prefix network)]
(when hash-prefix
(str les-discovery-identifier hash-prefix))))
(defn get-topics
[network]
(let [les-topic (get-les-topic network)]
(cond-> {"whisper" {:Min 2 :Max 2}}
les-topic (assoc les-topic {:Min 2 :Max 2}))))
(defn- get-base-node-config
[config]
(cond-> (assoc config
:Name
"StatusIM")
config/dev-build?
(assoc :ListenAddr ":0"
:DataDir (str (:DataDir config) "_dev"))))
(def wakuv2-default-config
{:DiscoveryLimit 20
:EnableDiscV5 true
:Host "0.0.0.0"
:AutoUpdate true
;; Temporary fix until https://github.com/status-im/status-go/issues/3024 is resolved
:Nameserver "8.8.8.8"
:PeerExchange true
:Port 0
:UDPPort 0
:LightClient false})
(def login-node-config
{:WalletConfig (cond-> {:Enabled true}
(not= config/opensea-api-key "")
(assoc :OpenseaAPIKey config/opensea-api-key))
:WakuV2Config wakuv2-default-config})
(defn- get-login-node-config
[config]
(merge config login-node-config))
(defn- pick-nodes
"Picks `limit` different nodes randomly from the list of nodes
if there is more than `limit` nodes in the list, otherwise return the list
of nodes"
[limit nodes]
(take limit (shuffle nodes)))
[status-im.config :as config]))
(defn fleets
[{:keys [custom-fleets]}]
@@ -94,86 +15,3 @@
(keyword (get-in db
[:profile/profile :fleet]
config/fleet)))
(defn get-current-fleet
[db]
(get (fleets db)
(current-fleet-key db)))
(defn- wakuv2-enabled?
[fleet]
(let [ks (keys fleet)]
(some #(string/includes? (str %) "waku") ks)))
(defn get-multiaccount-node-config
[{:keys [profile/profile :networks/current-network]
:as db}]
(let [wakuv2-config (get profile :wakuv2-config {})
fleet-key (current-fleet-key db)
current-fleet (get-current-fleet db)
wakuv2-enabled (wakuv2-enabled? current-fleet)
waku-nodes (get config/waku-nodes-config fleet-key)
rendezvous-nodes (pick-nodes 3 (vals (:rendezvous current-fleet)))
{:keys [installation-id log-level
waku-bloom-filter-mode]}
profile]
(cond-> {:NetworkId (chain/chain-keyword->chain-id :mainnet)
:DataDir "/ethereum/mainnet_rpc"
:UpstreamConfig {:Enabled true
:URL config/mainnet-rpc-url}}
:always
(get-base-node-config)
:always
(get-login-node-config)
current-fleet
(assoc :NoDiscovery wakuv2-enabled
:Rendezvous (if wakuv2-enabled false (boolean (seq rendezvous-nodes)))
:ClusterConfig {:Enabled true
:Fleet (name fleet-key)
:DiscV5BootstrapNodes
(if wakuv2-enabled
waku-nodes
[])
:TrustedMailServers
(if wakuv2-enabled [] (pick-nodes 6 (vals (:mail current-fleet))))
:StaticNodes
(if wakuv2-enabled
[]
(into (pick-nodes 2
(vals (:whisper current-fleet)))
(vals (:static current-fleet))))
:RendezvousNodes (if wakuv2-enabled [] rendezvous-nodes)
:WakuNodes (or waku-nodes [])})
:always
(assoc :LocalNotificationsConfig {:Enabled true}
:KeycardPairingDataFile "/ethereum/mainnet_rpc/keycard/pairings.json"
:BrowsersConfig {:Enabled true}
:PermissionsConfig {:Enabled true}
:MailserversConfig {:Enabled true}
:EnableNTPSync true
:WakuConfig
{:Enabled (not wakuv2-enabled)
:BloomFilterMode waku-bloom-filter-mode
:LightClient true
:MinimumPoW 0.000001}
:WakuV2Config (merge (assoc wakuv2-config :Enabled wakuv2-enabled)
wakuv2-default-config)
:ShhextConfig
{:BackupDisabledDataDir (if platform/android? "/../no_backup" "/")
:InstallationID installation-id
:MaxMessageDeliveryAttempts config/max-message-delivery-attempts
:MailServerConfirmations config/mailserver-confirmations-enabled?
:VerifyTransactionURL config/verify-transaction-url
:VerifyENSURL config/verify-ens-url
:VerifyENSContractAddress config/verify-ens-contract-address
:VerifyTransactionChainID config/verify-transaction-chain-id
:DataSyncEnabled true
:PFSEnabled true}
:RequireTopics (get-topics current-network)
:StatusAccountsConfig {:Enabled true})
:always
(add-log-level log-level))))
@@ -12,7 +12,8 @@
[re-frame.core :as re-frame.core]
[react-native.core :as rn]
[status-im.contexts.profile.utils :as profile.utils]
[utils.ens.core :as utils.ens]))
[utils.ens.core :as utils.ens]
[utils.image-server :as image-server]))
;;TODO REWORK THIS NAMESPACE
@@ -156,9 +157,11 @@
(styles/default-chat-icon-text size)
(styles/emoji-chat-icon-text size))}
override-styles)
photo-path (if (:fn photo-path)
img-config (:config photo-path)
photo-path (if img-config
;; temp support new media server avatar for old component
{:uri ((:fn photo-path)
{:uri (image-server/get-image-uri
img-config
{:size size
:full-name name
:font-size (get-in styles [:default-chat-icon-text :font-size])
@@ -151,7 +151,7 @@
{:title (i18n/label :t/settings)
:accessibility-label "settings"
:theme :accent
:on-press #(hide-sheet-and-dispatch [:navigate-to :sync-settings])
:on-press #(hide-sheet-and-dispatch [:navigate-to :legacy-sync-settings])
:icon :main-icons/settings}]
(when mobile
[:<>
@@ -223,25 +223,28 @@
(defn show-image-picker
([images-fn]
(show-image-picker images-fn nil))
(show-image-picker images-fn nil nil))
([images-fn
{:keys [media-type]
:or {media-type "any"}
:as props}]
:as props}
finally-callback]
(-> ^js image-picker
(.openPicker (clj->js (merge {:mediaType media-type}
props)))
(.then images-fn)
(.catch show-access-error))))
(.catch show-access-error)
(.finally finally-callback))))
(defn show-image-picker-camera
([images-fn]
(show-image-picker-camera images-fn nil))
([images-fn props]
(show-image-picker-camera images-fn nil nil))
([images-fn props finally-callback]
(-> ^js image-picker
(.openCamera (clj->js props))
(.then images-fn)
(.catch show-access-error))))
(.catch show-access-error)
(.finally finally-callback))))
;; Clipboard
@@ -5,11 +5,9 @@
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.webview :refer [webview]]
[re-frame.core :as re-frame]
[status-im.constants :refer
[principles-link privacy-policy-link terms-of-service-link]]
[utils.i18n :as i18n])
[quo.core :as quo]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :as views]))
(views/defview about-app
@@ -17,44 +15,38 @@
(views/letsubs [app-version [:get-app-short-version]
commit-hash [:get-commit-hash]
node-version [:get-app-node-version]]
[react/scroll-view
[list.item/list-item
{:size :small
:title (i18n/label :t/privacy-policy)
:accessibility-label :privacy-policy
:on-press
#(re-frame/dispatch [:navigate-to :privacy-policy])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/terms-of-service)
:accessibility-label :terms-of-service
:on-press #(re-frame/dispatch [:navigate-to :terms-of-service])
:chevron true}]
[copyable-text/copyable-text-view
{:copied-text app-version}
[list.item/list-item
{:size :small
:accessibility-label :app-version
:title (i18n/label :t/version)
:accessory :text
:accessory-text app-version}]]
[copyable-text/copyable-text-view
{:copied-text commit-hash}
[list.item/list-item
{:size :small
:accessibility-label :commit-hash
:title (i18n/label :t/app-commit)
:accessory :text
:accessory-text commit-hash}]]
[copyable-text/copyable-text-view
{:copied-text node-version}
[list.item/list-item
{:size :small
:accessibility-label :node-version
:title (i18n/label :t/node-version)
:accessory :text
:accessory-text node-version}]]]))
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/about-app)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view
[copyable-text/copyable-text-view
{:copied-text app-version}
[list.item/list-item
{:size :small
:accessibility-label :app-version
:title (i18n/label :t/version)
:accessory :text
:accessory-text app-version}]]
[copyable-text/copyable-text-view
{:copied-text commit-hash}
[list.item/list-item
{:size :small
:accessibility-label :commit-hash
:title (i18n/label :t/app-commit)
:accessory :text
:accessory-text commit-hash}]]
[copyable-text/copyable-text-view
{:copied-text node-version}
[list.item/list-item
{:size :small
:accessibility-label :node-version
:title (i18n/label :t/node-version)
:accessory :text
:accessory-text node-version}]]]]))
(views/defview learn-more-sheet
[]
@@ -73,21 +65,3 @@
(def learn-more
{:content learn-more-sheet})
(views/defview privacy-policy
[]
[webview
{:source {:uri privacy-policy-link}
:java-script-enabled true}])
(views/defview tos
[]
[webview
{:source {:uri terms-of-service-link}
:java-script-enabled true}])
(views/defview principles
[]
[webview
{:source {:uri principles-link}
:java-script-enabled true}])
@@ -1,10 +1,12 @@
(ns legacy.status-im.ui.screens.advanced-settings.views
(:require
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n])
[utils.i18n :as i18n]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn hide-sheet-and-dispatch
@@ -14,10 +16,9 @@
(defn- normal-mode-settings-data
[{:keys [current-log-level
telemetry-enabled?
light-client-enabled?
transactions-management-enabled?
current-fleet
webview-debug
test-networks-enabled?
is-goerli-enabled?
peer-syncing-enabled?]}]
@@ -27,7 +28,7 @@
:title (i18n/label :t/log-level)
:accessibility-label :log-level-settings-button
:on-press
#(re-frame/dispatch [:open-modal :log-level-settings])
#(re-frame/dispatch [:open-modal :legacy-:og-level-settings])
:accessory :text
:accessory-text current-log-level
:chevron true}
@@ -59,6 +60,14 @@
:on-press
#(re-frame/dispatch [:open-modal :peers-stats])
:chevron true}
{:size :small
:title "Telemetry"
:accessibility-label :telemetry-enabled
:container-margin-bottom 8
:on-press
#(re-frame/dispatch [:profile.settings/toggle-telemetry])
:accessory :switch
:active telemetry-enabled?}
{:size :small
:title (i18n/label :t/light-client-enabled)
:accessibility-label :light-client-enabled
@@ -68,25 +77,6 @@
[:wakuv2.ui/toggle-light-client (not light-client-enabled?)])
:accessory :switch
:active light-client-enabled?}
{:size :small
:title (i18n/label :t/transactions-management-enabled)
:accessibility-label :transactions-management-enabled
:container-margin-bottom 8
:on-press
#(re-frame/dispatch
[:multiaccounts.ui/switch-transactions-management-enabled
(not transactions-management-enabled?)])
:accessory :switch
:active transactions-management-enabled?}
{:size :small
:title "Webview debug"
:accessibility-label :webview-debug-switch
:container-margin-bottom 8
:on-press
#(re-frame/dispatch
[:profile.settings/change-webview-debug (not webview-debug)])
:accessory :switch
:active webview-debug}
{:size :small
:title "Testnet mode"
:accessibility-label :test-networks-enabled
@@ -110,13 +100,7 @@
:on-press
#(re-frame/dispatch [:profile.settings/toggle-peer-syncing])
:accessory :switch
:active peer-syncing-enabled?}
{:size :small
:title (i18n/label :t/set-currency)
:accessibility-label :wallet-change-currency
:on-press #(hide-sheet-and-dispatch
[:open-modal :currency-settings])
:chevron true}]))
:active peer-syncing-enabled?}]))
(defn- flat-list-data
[options]
@@ -125,29 +109,34 @@
(defn- render-item
[props]
(if (= (:type props) :section-header)
[quo/list-header (:title props)]
[components/list-header (:title props)]
[list.item/list-item props]))
(views/defview advanced-settings
[]
(views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?]
is-goerli-enabled? [:profile/is-goerli-enabled?]
light-client-enabled? [:profile/light-client-enabled?]
webview-debug [:profile/webview-debug]
transactions-management-enabled? [:wallet-legacy/transactions-management-enabled?]
current-log-level [:log-level/current-log-level]
current-fleet [:fleets/current-fleet]
peer-syncing-enabled? [:profile/peer-syncing-enabled?]]
[list/flat-list
{:data (flat-list-data
{:current-log-level current-log-level
:transactions-management-enabled? transactions-management-enabled?
:light-client-enabled? light-client-enabled?
:current-fleet current-fleet
:dev-mode? false
:webview-debug webview-debug
:test-networks-enabled? test-networks-enabled?
:is-goerli-enabled? is-goerli-enabled?
:peer-syncing-enabled? peer-syncing-enabled?})
:key-fn (fn [_ i] (str i))
:render-fn render-item}]))
(views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?]
is-goerli-enabled? [:profile/is-goerli-enabled?]
light-client-enabled? [:profile/light-client-enabled?]
telemetry-enabled? [:profile/telemetry-enabled?]
current-log-level [:log-level/current-log-level]
current-fleet [:fleets/current-fleet]
peer-syncing-enabled? [:profile/peer-syncing-enabled?]]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/advanced)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data (flat-list-data
{:current-log-level current-log-level
:telemetry-enabled? telemetry-enabled?
:light-client-enabled? light-client-enabled?
:current-fleet current-fleet
:dev-mode? false
:test-networks-enabled? test-networks-enabled?
:is-goerli-enabled? is-goerli-enabled?
:peer-syncing-enabled? peer-syncing-enabled?})
:key-fn (fn [_ i] (str i))
:render-fn render-item}]]))
@@ -3,10 +3,12 @@
(:require
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn button
[label icon theme selected?]
@@ -24,7 +26,13 @@
[]
(views/letsubs [{:keys [appearance]} [:profile/profile]]
[:<>
[quo/list-header (i18n/label :t/preference)]
[quo/page-nav
{:type :title
:title (i18n/label :t/appearance)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[components/list-header (i18n/label :t/preference)]
[react/view
{:flex-direction :row
:padding-horizontal 8
+15 -11
View File
@@ -1,23 +1,27 @@
(ns legacy.status-im.ui.screens.bug-report
(:require
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.components.core :as component]
[quo.core :as quo]
[re-frame.core :as re-frame]
[react-native.core :as react-native]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn bug-report
[]
(let [{:keys [description steps]} @(re-frame/subscribe [:bug-report/details])]
[react-native/view {:style {:flex 1}}
[topbar/topbar
{:title (i18n/label :t/bug-report)
:modal? true}]
[quo/page-nav
{:type :title
:title (i18n/label :t/bug-report)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react-native/view
{:style {:flex 1
:padding-top 8
:padding-horizontal 16}}
[quo/text-input
[component/text-input
{:label (i18n/label :t/bug-report-description)
:default-value description
:placeholder (i18n/label :t/bug-report-description-placeholder)
@@ -26,7 +30,7 @@
:error @(re-frame/subscribe [:bug-report/description-error])
:accessibility-label :bug-report-description
:on-change-text #(re-frame/dispatch [:logging/report-details :description %])}]
[quo/text-input
[component/text-input
{:label (i18n/label :t/bug-report-steps)
:default-value steps
:placeholder (i18n/label :t/bug-report-steps-placeholder)
@@ -34,7 +38,7 @@
:multiline true
:accessibility-label :bug-report-steps
:on-change-text #(re-frame/dispatch [:logging/report-details :steps %])}]
[quo/button
[component/button
{:type :primary
:accessibility-label :bug-report-submit
:theme :accent
@@ -43,8 +47,8 @@
[react-native/view
{:style {:margin-vertical 16
:align-items :center}}
[quo/text (i18n/label :t/or)]]
[quo/button
[component/text (i18n/label :t/or)]]
[component/button
{:type :primary
:accessibility-label :bug-report-submit-gh-issue
:theme :accent
@@ -60,7 +60,10 @@
(conj
acc
[rn/view
{:style {:background-color colors/primary-50-opa-10 :border-radius 6 :padding-horizontal 3}}
{:style {:background-color colors/primary-50-opa-10
:border-radius 6
:padding-horizontal 3
:margin-top -3}}
[rn/text
{:style (merge {:color (if (system-text? content-type) quo.colors/black colors/primary-50)}
(if (system-text? content-type) typography/font-regular typography/font-medium))
@@ -1,76 +0,0 @@
(ns legacy.status-im.ui.screens.contacts-list.views
(:require
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon.screen]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.invite.views :as invite]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list.views]
[legacy.status-im.ui.components.react :as react]
[re-frame.core :as re-frame]
[status-im.contexts.profile.utils :as profile.utils]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :refer [defview letsubs]]))
(defn contacts-list-item
[{:keys [public-key] :as contact}]
(let [{:keys [primary-name secondary-name customization-color]} contact]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon.screen/profile-photo-plus-dot-view
{:public-key public-key
:full-name primary-name
:customization-color (or customization-color :primary)
:photo-path (profile.utils/photo contact)}]
:chevron true
:on-press #(re-frame/dispatch [:chat.ui/show-profile public-key])}]))
(defn add-new-contact
[]
[list.item/list-item
{:icon :main-icons/add
:theme :accent
:title (i18n/label :t/add-new-contact)
:accessibility-label :add-new-contact-button
:on-press #(re-frame/dispatch [:open-modal :new-contact])}])
(defview contacts-list
[]
(letsubs [blocked-contacts-count [:contacts/blocked-count]
sorted-contacts [:contacts/sorted-contacts]]
[react/scroll-view {:flex 1}
[add-new-contact]
(when (pos? blocked-contacts-count)
[react/view {:margin-vertical 16}
[list.item/list-item
{:title (i18n/label :t/blocked-users)
:icon :main-icons/cancel
:theme :negative
:accessibility-label :blocked-users-list-button
:chevron true
:accessory :text
:accessory-text blocked-contacts-count
:on-press #(re-frame/dispatch [:navigate-to :blocked-users-list])}]])
(if (seq sorted-contacts)
[list.views/flat-list
{:data sorted-contacts
:key-fn :address
:render-fn contacts-list-item}]
[react/view
{:align-items :center
:flex 1
:justify-content :center}
[react/text {:style {:color colors/gray :margin-vertical 24}}
(i18n/label :t/you-dont-have-contacts)]
[invite/button]])]))
(defview blocked-users-list
[]
(letsubs [blocked-contacts [:contacts/blocked]]
[list.views/flat-list
{:data blocked-contacts
:key-fn :address
:render-fn contacts-list-item
:default-separator? true
:enableEmptySections true
:keyboard-should-persist-taps :always}]))
@@ -1,14 +0,0 @@
(ns legacy.status-im.ui.screens.currency-settings.styles
(:require
[legacy.status-im.utils.styles :as styles]))
(styles/def currency-item
{:flex-direction :row
:justify-content :space-between
:align-items :center
:padding-horizontal 16
:ios {:height 64}
:android {:height 56}})
(def currency-name-text
{:typography :title})
@@ -1,54 +0,0 @@
(ns legacy.status-im.ui.screens.currency-settings.views
(:require-macros [legacy.status-im.utils.views :as views])
(:require
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.search-input.view :as search-input]
[legacy.status-im.ui.screens.currency-settings.styles :as styles]
[re-frame.core :as re-frame]
[reagent.core :as reagent]))
(defonce search-active? (reagent/atom false))
(defn render-currency
[{:keys [id code display-name]} _ _ current-currency-id]
(let [selected? (= id current-currency-id)]
[react/touchable-highlight
{:on-press #(re-frame/dispatch [:wallet-legacy.settings.ui/currency-selected id])
:accessibility-label :currency-item}
[react/view styles/currency-item
[react/text {:style styles/currency-name-text}
(str display-name " (" code ")")]
(when selected?
[icons/icon :main-icons/check {:color :active}])]]))
(views/defview currency-settings
[]
(views/letsubs [currency-id [:wallet-legacy/settings-currency]
{:keys [currencies search-filter]} [:wallet-legacy/search-filtered-currencies]]
{:component-will-unmount #(do
(re-frame/dispatch [:search/currency-filter-changed nil])
(reset! search-active? false))}
[:<>
[react/view {:flex 1}
[react/view
{:padding-horizontal 16
:padding-vertical 10}
[search-input/search-input-old
{:search-active? search-active?
:search-filter search-filter
:on-cancel #(re-frame/dispatch [:search/currency-filter-changed nil])
:on-focus (fn [search-filter]
(when-not search-filter
(re-frame/dispatch [:search/currency-filter-changed ""])))
:on-change (fn [text]
(re-frame/dispatch [:search/currency-filter-changed text]))}]]
[list/flat-list
{:data (->> currencies
vals
(sort #(compare (:code %1) (:code %2))))
:key-fn :code
:render-data currency-id
:render-fn render-currency
:keyboard-should-persist-taps :always}]]]))
@@ -1,770 +0,0 @@
(ns legacy.status-im.ui.screens.ens.views
(:require
[clojure.string :as string]
[legacy.status-im.ens.core :as ens]
[legacy.status-im.ethereum.tokens :as tokens]
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.checkbox.view :as checkbox]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.chat.utils :as chat.utils]
[legacy.status-im.ui.screens.profile.components.views :as profile.components]
[legacy.status-im.utils.utils :as utils]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.config :as config]
[utils.address :as address]
[utils.debounce :as debounce]
[utils.ens.core :as utils.ens]
[utils.ens.stateofus :as stateofus]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- link
[{:keys [on-press]} label]
[react/touchable-opacity
{:on-press on-press
:style {:justify-content :center}}
[react/text {:style {:color colors/blue}}
label]])
(defn- section
[{:keys [title content]}]
[react/view
{:style {:margin-horizontal 16
:align-items :flex-start}}
[react/text {:style {:color colors/gray :font-size 15}}
title]
[react/view
{:margin-top 8
:padding-horizontal 16
:padding-vertical 12
:border-width 1
:border-radius 12
:border-color colors/gray-lighter}
[quo/text {:monospace true}
content]]])
(defn- domain-label
[custom-domain?]
(if custom-domain?
(i18n/label :t/ens-custom-domain)
(str "." stateofus/domain)))
(defn- domain-switch-label
[custom-domain?]
(if custom-domain?
(i18n/label :t/ens-want-domain)
(i18n/label :t/ens-want-custom-domain)))
(defn- big-blue-icon
[state]
[react/view
{:style {:margin-top 68
:margin-bottom 24
:width 60
:height 60
:border-radius 30
:background-color colors/blue
:align-items :center
:justify-content :center}}
[icons/icon
(case state
(:available :connected :connected-with-different-key :owned)
:main-icons/check
(:taken :error)
:main-icons/cancel
:main-icons/username)
{:color colors/white-persist}]])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; SEARCH SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- icon-wrapper
[color icon]
[react/view
{:style {:margin-right 16
:margin-top 11
:width 32
:height 32
:border-radius 25
:align-items :center
:justify-content :center
:background-color color}}
icon])
(defn- input-icon
[state]
(case state
:searching
[icon-wrapper colors/gray
[react/activity-indicator {:color colors/white-persist}]]
(:available :connected :connected-with-different-key :owned)
[react/touchable-highlight
{:on-press #(debounce/throttle-and-dispatch [::ens/input-submitted] 3000)}
[icon-wrapper colors/blue
[icons/icon :main-icons/arrow-right {:color colors/white-persist}]]]
[icon-wrapper colors/gray
[icons/icon :main-icons/arrow-right {:color colors/white-persist}]]))
(defn help-message-text-element
([label]
[react/text
{:style {:flex 1
:margin-top 16
:margin-horizontal 16
:font-size 14
:text-align :center}}
(i18n/label label)])
([label second-label]
[react/nested-text
{:style {:flex 1
:margin-top 16
:margin-horizontal 16
:font-size 14
:text-align :center}}
(i18n/label label) " "
[{:style {:font-weight "700"}}
(i18n/label second-label)]]))
(defn help-message
[state custom-domain?]
(case state
:already-added
[help-message-text-element :t/ens-username-already-added]
:available
[help-message-text-element :t/ens-username-available]
:owned
[help-message-text-element
:t/ens-username-owned
:t/ens-username-owned-continue]
:connected
[help-message-text-element
:t/ens-username-connected
:t/ens-username-connected-continue]
:connected-with-different-key
[help-message-text-element
:t/ens-username-owned
:t/ens-username-connected-with-different-key]
:invalid-ens
[help-message-text-element
:t/ens-username-owned
:t/ens-username-registration-invalid]
(if custom-domain?
(case state
:too-short
[help-message-text-element :t/ens-custom-username-hints]
:invalid
[help-message-text-element :t/ens-custom-username-hints]
:taken
[help-message-text-element :t/ens-custom-username-taken]
[react/text ""])
(case state
:too-short
[help-message-text-element :t/ens-username-hints]
:invalid
[help-message-text-element :t/ens-username-invalid]
:taken
[help-message-text-element :t/ens-username-taken]
[react/text ""]))))
(defn- username-input
[_ _ _]
(let [input-ref (atom nil)]
(fn [_ state placeholder]
[react/view {:flex-direction :row :justify-content :center}
;;NOTE required so that the keyboards shows up when navigating back from checkout screen
;; TODO: navigation-events were deprecated
;; [:> navigation/navigation-events
;; {:on-did-focus
;; (fn []
;; (.focus ^js @input-ref))}]
;;NOTE setting the key as placeholder forces the component to remount
;;when the placeholder changes, this prevents the placeholder from
;;disappearing when switching between stateofus and custom domain
^{:key placeholder}
[react/text-input
{:ref #(reset! input-ref %)
:on-change-text #(do
(re-frame/dispatch [:set-in [:ens/registration :state] :searching])
(debounce/debounce-and-dispatch [::ens/set-username-candidate %]
600))
:on-submit-editing #(re-frame/dispatch [::ens/input-submitted])
:auto-capitalize :none
:auto-complete-type "off"
:auto-focus true
:auto-correct false
:default-value ""
:text-align :center
:placeholder placeholder
:placeholder-text-color colors/text-gray
:style {:flex 1
:font-size 22
:padding-left 48}}]
[input-icon state]])))
(views/defview search
[]
(views/letsubs [{:keys [state custom-domain? username]}
[:ens/search-screen]]
[react/keyboard-avoiding-view {:flex 1}
[react/scroll-view
{:style {:flex 1}
;;NOTE required so that switching custom-domain works on first tap and persists keyboard
;;instead of dismissing keyboard and requiring two taps
:keyboard-should-persist-taps :always}
[react/view {:style {:flex 1}}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[big-blue-icon state]
[username-input username state
(if custom-domain?
"vitalik94.domain.eth"
"vitalik94")]
[react/view
{:style {:height 36
:align-items :center
:justify-content :space-between
:padding-horizontal 12
:margin-top 24
:margin-horizontal 16
:border-color colors/gray-lighter
:border-radius 20
:border-width 1
:flex-direction :row}}
[react/text
{:style {:font-size 13
:typography :main-medium}}
(domain-label custom-domain?)]
[react/view {:flex 1 :min-width 24}]
[react/touchable-highlight {:on-press #(re-frame/dispatch [::ens/switch-domain-type])}
[react/text
{:style {:color colors/blue
:font-size 12
:typography :main-medium}
:number-of-lines 2}
(domain-switch-label custom-domain?)]]]]
[help-message state custom-domain?]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; CHECKOUT SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- agreement
[checked contract]
[react/view
{:flex-direction :row
:margin-left 26 ;; 10 for checkbox + 16
:margin-right 16
:margin-top 14
:align-items :flex-start
:justify-content :center}
[checkbox/checkbox
{:checked? @checked
:style {:padding 0}
:on-value-change #(reset! checked %)}]
[react/nested-text {:style {:margin-left 10}}
(i18n/label :t/ens-agree-to)
[{:style {:color colors/blue}
:on-press #(re-frame/dispatch [:navigate-to :ens-terms {:contract contract}])}
(i18n/label :t/ens-terms-registration)]
"\n"
(i18n/label :t/ens-understand)]])
(defn render-account
[address]
(let [account @(re-frame/subscribe [:account-by-address address])]
[list.item/list-item
{:icon [chat-icon/custom-icon-view-list (:name account) (:color account)]
:title (:name account)
:subtitle (utils/get-shortened-checksum-address (:address account))
:chevron true
:on-press #(js/alert "funcitonality no longer supported")}]))
(defn- registration
[checked contract address public-key]
[react/view {:style {:flex 1 :margin-top 24}}
[react/text {:style {:color colors/gray :font-size 15 :margin-horizontal 16}}
(i18n/label :t/wallet)]
[render-account address]
[react/view {:style {:margin-top 14}}
[section
{:title (i18n/label :t/key)
:content public-key}]]
[agreement checked contract]])
(defn checkout
[]
(let [checked? (reagent/atom false)]
(fn []
(let [{:keys [username address custom-domain? public-key
chain amount-label sufficient-funds?]}
@(re-frame/subscribe [:ens/checkout-screen])]
[react/keyboard-avoiding-view {:flex 1}
[react/scroll-view {:style {:flex 1}}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[big-blue-icon nil]
[react/text
{:text-align :center
:style {:flex 1
:font-size 22
:padding-horizontal 48}}
username]
[react/view
{:style {:height 36
:align-items :center
:justify-content :space-between
:padding-horizontal 12
:margin-top 24
:margin-horizontal 16
:border-color colors/gray-lighter
:border-radius 20
:border-width 1
:flex-direction :row}}
[react/text
{:style {:font-size 13
:typography :main-medium}}
(domain-label custom-domain?)]
[react/view {:flex 1 :min-width 24}]]]
[registration
checked?
(when (or (not= chain :goerli) config/test-stateofus?)
(stateofus/get-cached-registrar chain))
address
public-key]]
[toolbar/toolbar
{:show-border? true
:size :large
:left [react/view {:flex-direction :row :align-items :center}
[react/image
{:source tokens/snt-icon-source
:style {:width 36 :height 36}}]
[react/view {:flex-direction :column :margin 8}
[react/text {:style {:font-size 15}}
amount-label]
[react/text {:style {:color colors/gray :font-size 15}}
(i18n/label :t/ens-deposit)]]]
:right [react/view {:padding-horizontal 8}
[quo/button
{:disabled (or (not @checked?) (not sufficient-funds?))
:on-press #(debounce/throttle-and-dispatch [::ens/register-name-pressed
address]
2000)}
(if sufficient-funds?
(i18n/label :t/ens-register)
(i18n/label :t/not-enough-snt))]]}]]))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; CONFIRMATION SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- finalized-icon
[state]
(case state
:registration-failed
[react/view
{:style {:width 40
:height 40
:border-radius 30
:background-color colors/red-light
:align-items :center
:justify-content :center}}
[icons/icon :main-icons/warning {:color colors/red}]]
[react/view
{:style {:width 40
:height 40
:border-radius 30
:background-color colors/gray-lighter
:align-items :center
:justify-content :center}}
[icons/icon :main-icons/check {:color colors/blue}]]))
(defn- final-state-label
[state username]
(case state
:available
(i18n/label :t/ens-username-registration-confirmation
{:username (stateofus/username-with-domain username)})
:connected-with-different-key
(i18n/label :t/ens-username-connection-confirmation
{:username (stateofus/username-with-domain username)})
:connected
(i18n/label :t/ens-saved-title)
;;NOTE: this state can't be reached atm
:registration-failed
(i18n/label :t/ens-registration-failed-title)
nil))
(defn- final-state-details
[state username]
(case state
:available
[react/text {:style {:color colors/gray :font-size 15 :text-align :center}}
(i18n/label :t/ens-username-you-can-follow-progress)]
:connected-with-different-key
[react/text {:style {:color colors/gray :font-size 15 :text-align :center}}
(i18n/label :t/ens-username-you-can-follow-progress)]
:connected
[react/nested-text
{:style {:font-size 15 :text-align :center}}
(stateofus/username-with-domain username)
[{:style {:color colors/gray}}
(i18n/label :t/ens-saved)]]
;;NOTE: this state can't be reached atm
:registration-failed
[react/text {:style {:color colors/gray :font-size 14}}
(i18n/label :t/ens-registration-failed)]
nil))
(views/defview confirmation
[]
(views/letsubs [{:keys [state username]} [:ens/confirmation-screen]]
[react/keyboard-avoiding-view {:flex 1}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[finalized-icon state]
[react/text
{:style {:typography :header
:margin-top 32
:margin-horizontal 32
:text-align :center}}
(final-state-label state username)]
[react/view
{:align-items :center
:margin-horizontal 32
:margin-top 12
:margin-bottom 20
:justify-content :center}
[final-state-details state username]]
(if (= state :registration-failed)
[react/view
[quo/button {:on-press #(re-frame/dispatch [::ens/retry-pressed])}
(i18n/label :t/retry)]
[quo/button {:on-press #(re-frame/dispatch [::ens/cancel-pressed])}
(i18n/label :t/cancel)]]
[quo/button {:on-press #(re-frame/dispatch [::ens/got-it-pressed])}
(i18n/label :t/ens-got-it)])]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; TERMS SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- term-point
[content]
[react/view {:style {:flex 1 :margin-top 24 :margin-horizontal 16 :flex-direction :row}}
[react/view {:style {:width 16 :margin-top 8}}
[react/view {:style {:background-color colors/gray :width 4 :height 4 :border-radius 25}}]]
[react/text {:style {:flex 1 :font-size 15}}
content]])
(defn- etherscan-url
[address]
(str "https://etherscan.io/address/" address))
(views/defview terms
[]
(views/letsubs [{:keys [contract]} [:get-screen-params :ens-terms]]
[react/scroll-view {:style {:flex 1}}
[react/view
{:style {:height 136
:background-color colors/gray-lighter
:justify-content :center
:align-items :center}}
[react/text {:style {:text-align :center :typography :header :letter-spacing -0.275}}
(i18n/label :t/ens-terms-header)]]
[react/view
[term-point
(i18n/label :t/ens-terms-point-1)]
[term-point
(i18n/label :t/ens-terms-point-2)]
[term-point
(i18n/label :t/ens-terms-point-3)]
[term-point
(i18n/label :t/ens-terms-point-4)]
[term-point
(i18n/label :t/ens-terms-point-5)]
[term-point
(i18n/label :t/ens-terms-point-6)]
[term-point
(i18n/label :t/ens-terms-point-7)]]
[react/view
[react/text {:style {:font-size 15 :margin-top 24 :margin-horizontal 16 :font-weight "700"}}
(i18n/label :t/ens-terms-point-8)]
[term-point
(i18n/label :t/ens-terms-point-9 {:address contract})]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link {:on-press #(.openURL ^js react/linking (etherscan-url contract))}
(i18n/label :t/etherscan-lookup)]]
[term-point
(i18n/label :t/ens-terms-point-10)]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link
{:on-press #(.openURL ^js react/linking (etherscan-url (:mainnet utils.ens/ens-registries)))}
(i18n/label :t/etherscan-lookup)]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; NAME DETAILS SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def release-instructions-link "https://our.status.im/managing-your-ens-name-in-v1/")
(defn open-release-instructions-link!
[]
(.openURL ^js react/linking release-instructions-link))
(views/defview name-details
[]
(views/letsubs [{:keys [name address custom-domain? public-key
expiration-date releasable? pending?]}
[:ens.name/screen]]
[react/view {:style {:flex 1}}
[topbar/topbar {:title name}]
[react/scroll-view {:style {:flex 1}}
(when-not custom-domain?
[react/view {:style {:flex 1 :margin-horizontal 16}}
[react/view {:flex-direction :row :align-items :center :margin-top 20}
[react/view {:style {:margin-right 16}}
[components.common/logo
{:size 40
:icon-size 16}]]
[react/text {:style {:typography :title}}
(if pending?
(i18n/label :t/ens-transaction-pending)
(str (i18n/label :t/ens-10-SNT) ", deposit unlocked"))]]])
[react/view {:style {:margin-top 22}}
(when-not pending?
[section
{:title (i18n/label :t/wallet-address)
:content (address/normalized-hex address)}])
(when-not pending?
[react/view {:style {:margin-top 14}}
[section
{:title (i18n/label :t/key)
:content public-key}]])
[react/view {:style {:margin-top 16 :margin-bottom 32}}
;;TODO this is temporary fix for accounts with failed txs we still need this for regular ens
;;names (not pending) but we need to detach public key in the contract
(when pending?
[list.item/list-item
{:title (i18n/label :t/ens-remove-username)
;:subtext (i18n/label :t/ens-remove-hints)
:icon :main-icons/close
:theme :negative
:on-press #(re-frame/dispatch [::ens/remove-username name])}])
(when (and (not custom-domain?) (not pending?))
[react/view {:style {:margin-top 18}}
[list.item/list-item
{:title (i18n/label :t/ens-release-username)
:theme :accent
:disabled (not releasable?)
:subtitle (when (and expiration-date
(not releasable?))
(i18n/label :t/ens-locked
{:date expiration-date}))
:icon :main-icons/delete
:on-press #(open-release-instructions-link!)}]])]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; WELCOME SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- welcome-item
[{:keys [icon-label title]} content]
[react/view
{:style {:flex 1
:margin-top 24
:margin-left 16
:flex-direction :row}}
[react/view
{:style {:height 40
:width 40
:border-radius 25
:border-width 1
:border-color colors/gray-lighter
:align-items :center
:justify-content :center}}
[react/text {:style {:typography :title}}
icon-label]]
[react/view
{:style {:flex 1
:margin-horizontal 16}}
[react/text
{:style {:font-size 15
:typography :main-semibold}}
title]
content]])
(defn- welcome
[]
(let [name (:name @(re-frame/subscribe [:profile/profile]))]
[react/view {:style {:flex 1}}
[react/scroll-view {:content-container-style {:align-items :center}}
[react/image
{:source (resources/get-theme-image :ens-header)
:style {:margin-top 32}}]
[react/text {:style {:margin-top 32 :margin-bottom 8 :typography :header}}
(i18n/label :t/ens-get-name)]
[react/text
{:style {:margin-top 8
:margin-bottom 24
:color colors/gray
:font-size 15
:margin-horizontal 16
:text-align :center}}
(i18n/label :t/ens-welcome-hints)]
[welcome-item {:icon-label "1" :title (i18n/label :t/ens-welcome-point-customize-title)}
[react/view {:flex-direction :row}
[react/text
{:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-customize {:name name})]]]
[welcome-item {:icon-label "2" :title (i18n/label :t/ens-welcome-point-simplify-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-simplify)]]
[welcome-item {:icon-label "3" :title (i18n/label :t/ens-welcome-point-receive-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-receive)]]
[welcome-item {:icon-label "4" :title (i18n/label :t/ens-welcome-point-register-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-register)]]
[welcome-item {:icon-label "@" :title (i18n/label :t/ens-welcome-point-verify-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-verify)]]
[react/text
{:style
{:margin-top 16 :text-align :center :color colors/gray :typography :caption :padding-bottom 96}}
(i18n/label :t/ens-powered-by)]]
[toolbar/toolbar
{:show-border? true
:right [quo/button
{:on-press #(re-frame/dispatch [::ens/get-started-pressed])
:type :secondary
:after :main-icons/next}
(i18n/label :t/get-started)]}]]))
(defn- name-item
[{:keys [name action subtitle]}]
(let [stateofus-username (stateofus/username name)
s (or stateofus-username name)]
[list.item/list-item
(merge {:title s
:subtitle (if subtitle
subtitle
(when stateofus-username stateofus/domain))
:icon :main-icons/username}
(when action
{:on-press action}))]))
(defn- name-list
[names preferred-name]
[react/view {:style {:flex 1 :margin-top 16}}
[react/view {:style {:margin-horizontal 16 :align-items :center :justify-content :center}}
[react/nested-text
{:style {:color colors/gray}}
(i18n/label :t/ens-displayed-with)
[{:style {:color colors/black :text-align :center}}
(str "\n@" preferred-name)]]]
[react/view {:style {:flex 1 :margin-top 8}}
(for [name names]
(let [action #(do (re-frame/dispatch [::ens/save-preferred-name name])
(re-frame/dispatch [:bottom-sheet/hide-old]))
stateofus-username (stateofus/username name)
s (or stateofus-username name)]
^{:key name}
[list.item/list-item
{:accessibility-label (if (= name preferred-name)
:primary-username
:not-primary-username)
:title s
:subtitle (when stateofus-username stateofus/domain)
:icon :main-icons/username
:on-press action
:accessory :radio
:active (= name preferred-name)}]))]])
(views/defview in-progress-registrations
[registrations]
[react/view {:style {:margin-top 8}}
(for [[tx-hash {:keys [state username]}] registrations
:when (or (= state :submitted) (= state :failure))]
^{:key tx-hash}
[name-item
{:name username
:action (when-not (= state :submitted)
#(re-frame/dispatch [:ens/clear-registration tx-hash]))
:subtitle (case state
:submitted (i18n/label :t/ens-registration-in-progress)
:failure (i18n/label :t/ens-registration-failure)
nil)}])])
(views/defview my-name
[]
(views/letsubs [contact-name [:multiaccount/preferred-name]]
(when-not (string/blank? contact-name)
(chat.utils/format-author-old {:primary-name
(str "@"
(or (stateofus/username contact-name)
contact-name))}))))
(views/defview registered
[names {:keys [preferred-name]} _ registrations]
[react/view {:style {:flex 1}}
[react/scroll-view
[react/view {:style {:margin-top 8}}
[list.item/list-item
{:title (i18n/label :t/ens-add-username)
:theme :accent
:on-press #(re-frame/dispatch [::ens/add-username-pressed])
:icon :main-icons/add}]]
[react/view {:style {:margin-top 22 :margin-bottom 8}}
[react/text {:style {:color colors/gray :margin-horizontal 16}}
(i18n/label :t/ens-your-usernames)]
(when registrations
[in-progress-registrations registrations])
(if (seq names)
[react/view {:style {:margin-top 8}}
(for [name names]
^{:key name}
[name-item
{:name name
:action #(re-frame/dispatch [::ens/navigate-to-name name])}])]
[react/text
{:style {:color colors/gray
:font-size 15
:margin-horizontal 16}}
(i18n/label :t/ens-no-usernames)])]
[react/view {:style {:padding-vertical 22 :border-color colors/gray-lighter :border-top-width 1}}
(when (> (count names) 1)
[react/view
[react/text {:style {:color colors/gray :margin-horizontal 16}}
(i18n/label :t/ens-chat-settings)]
[profile.components/settings-item
{:label-kw :ens-primary-username
:value preferred-name
:action-fn #(re-frame/dispatch [:show-bottom-sheet
{:content
(fn [] (name-list names preferred-name))}])}]])]]])
(views/defview main
[]
(views/letsubs [{:keys [names profile/profile show? registrations]} [:ens.main/screen]]
[react/keyboard-avoiding-view {:style {:flex 1}}
(if (or (seq names) registrations)
[registered names profile show? registrations]
[welcome])]))
@@ -3,7 +3,9 @@
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[utils.i18n :as i18n]))
[quo.core :as quo]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(def messages
[{:title :t/account-title
@@ -56,10 +58,17 @@
(map (fn [[k v]]
{:title k
:data v})))]
[list/section-list
{:contentContainerStyle {:padding-horizontal 16
:padding-bottom 16}
:stickySectionHeadersEnabled true
:sections sections
:render-fn render-element
:render-section-header-fn render-section-header}]))
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/glossary)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/section-list
{:contentContainerStyle {:padding-horizontal 16
:padding-bottom 16}
:stickySectionHeadersEnabled true
:sections sections
:render-fn render-element
:render-section-header-fn render-section-header}]]))
@@ -1,32 +0,0 @@
(ns legacy.status-im.ui.screens.group.styles
(:require
[legacy.status-im.ui.components.colors :as colors]))
(def group-container
{:flex 1
:flex-direction :column})
(defn no-contact-text
[]
{:margin-bottom 20
:margin-horizontal 50
:text-align :center
:color colors/gray})
(def no-contacts
{:flex 1
:justify-content :center
:align-items :center})
(defn search-container
[]
{:border-bottom-color colors/gray-lighter
:border-bottom-width 1
:padding-horizontal 16
:padding-vertical 10})
(defn members-title
[]
{:color colors/gray
:margin-top 14
:margin-bottom 4})
@@ -1,196 +0,0 @@
(ns legacy.status-im.ui.screens.group.views
(:require
[clojure.string :as string]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.invite.views :as invite]
[legacy.status-im.ui.components.keyboard-avoid-presentation :as kb-presentation]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.search-input.view :as search]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.group.styles :as styles]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.constants :as constants]
[utils.debounce :as debounce]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- render-contact
[row]
(let [{:keys [primary-name secondary-name]} row]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon/contact-icon-contacts-tab row]}]))
(defn- on-toggle-participant
[allow-new-users? checked? public-key]
(cond
checked?
(re-frame/dispatch [:deselect-participant public-key allow-new-users?])
;; Only allow new users if not reached the maximum
(and (not checked?)
allow-new-users?)
(re-frame/dispatch [:select-participant public-key allow-new-users?])))
(defn- toggle-item
[]
(fn [allow-new-users? subs-name {:keys [public-key] :as contact} on-toggle]
(let [contact-selected? @(re-frame/subscribe [subs-name public-key])
{:keys [primary-name secondary-name]} contact]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon/contact-icon-contacts-tab contact]
:on-press #(on-toggle allow-new-users? contact-selected? public-key)
:active contact-selected?
:accessory :checkbox}])))
(defn- group-toggle-participant
[contact _ _ allow-new-users?]
[toggle-item allow-new-users? :is-participant-selected? contact on-toggle-participant])
(defn toggle-list
[{:keys [contacts render-fn render-data]}]
[list/flat-list
{:data contacts
:key-fn :public-key
:render-data render-data
:render-fn render-fn
:keyboard-should-persist-taps :always}])
(defn no-contacts-view
[{:keys [no-contacts]}]
[react/view {:style styles/no-contacts}
[react/text
{:style (styles/no-contact-text)}
no-contacts]
[invite/button]])
(defn filter-contacts
[filter-text contacts]
(let [lower-filter-text (string/lower-case (str filter-text))
filter-fn (fn [{:keys [name alias nickname]}]
(or
(string/includes? (string/lower-case (str name)) lower-filter-text)
(string/includes? (string/lower-case (str alias)) lower-filter-text)
(when nickname
(string/includes? (string/lower-case (str nickname))
lower-filter-text))))]
(if filter-text
(filter filter-fn contacts)
contacts)))
;; Set name of new group-chat
(views/defview new-group
[]
(views/letsubs [contacts [:selected-group-contacts]
group-name [:new-chat-name]]
(let [group-name-empty? (not (and (string? group-name) (not-empty group-name)))]
[react/keyboard-avoiding-view
{:style styles/group-container
:ignore-offset true}
[react/view {:flex 1}
[topbar/topbar
{:use-insets false
:title (i18n/label :t/new-group-chat)
:subtitle (i18n/label :t/group-chat-members-count
{:selected (inc (count contacts))
:max constants/max-group-chat-participants})}]
[react/view
{:style {:padding-top 16
:flex 1}}
[react/view {:style {:padding-horizontal 16}}
[quo/text-input
{:auto-focus true
:on-change-text #(re-frame/dispatch [:set :new-chat-name %])
:default-value group-name
:placeholder (i18n/label :t/set-a-topic)
:accessibility-label :chat-name-input}]
[react/text {:style (styles/members-title)}
(i18n/label :t/members-title)]]
[react/view
{:style {:margin-top 8
:flex 1}}
[list/flat-list
{:data contacts
:key-fn :address
:render-fn render-contact
:bounces false
:keyboard-should-persist-taps :always
:enable-empty-sections true}]]]
[toolbar/toolbar
{:show-border? true
:left
[quo/button
{:type :secondary
:before :main-icon/back
:accessibility-label :previous-button
:on-press #(re-frame/dispatch [:navigate-back])}
(i18n/label :t/back)]
:right
[quo/button
{:type :secondary
:accessibility-label :create-group-chat-button
:disabled group-name-empty?
:on-press #(debounce/throttle-and-dispatch [:group-chats.ui/create-pressed
group-name]
300)}
(i18n/label :t/create-group-chat)]}]]])))
(defn searchable-contact-list
[]
(let [search-value (reagent/atom nil)]
(fn [{:keys [contacts no-contacts-label toggle-fn allow-new-users?]}]
[react/view {:style {:flex 1}}
[react/view {:style (styles/search-container)}
[search/search-input-old
{:on-cancel #(reset! search-value nil)
:on-change #(reset! search-value %)}]]
[react/view
{:style {:flex 1
:padding-vertical 8}}
(if (seq contacts)
[toggle-list
{:contacts (filter-contacts @search-value contacts)
:render-data allow-new-users?
:render-fn toggle-fn}]
[no-contacts-view {:no-contacts no-contacts-label}])]])))
;; Add participants to existing group chat
(views/defview add-participants-toggle-list
[]
(views/letsubs [contacts [:contacts/all-contacts-not-in-current-chat]
current-chat [:chats/current-chat]
selected-contacts-count [:selected-participants-count]]
(let [current-participants-count (count (:contacts current-chat))]
[kb-presentation/keyboard-avoiding-view {:style styles/group-container}
[topbar/topbar
{:use-insets false
:border-bottom false
:title (i18n/label :t/add-members)
:subtitle (i18n/label :t/group-chat-members-count
{:selected (+ current-participants-count selected-contacts-count)
:max constants/max-group-chat-participants})}]
[searchable-contact-list
{:contacts contacts
:no-contacts-label (i18n/label :t/group-chat-all-contacts-invited)
:toggle-fn group-toggle-participant
:allow-new-users? (< (+ current-participants-count
selected-contacts-count)
constants/max-group-chat-participants)}]
[toolbar/toolbar
{:show-border? true
:center
[quo/button
{:type :secondary
:accessibility-label :next-button
:disabled (zero? selected-contacts-count)
:on-press #(re-frame/dispatch [:group-chats.ui/add-members-pressed])}
(i18n/label :t/add)]}]])))
@@ -2,34 +2,33 @@
(:require
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.constants :as constants]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(def data
[{:size :small
:title (i18n/label :t/faq)
:accessibility-label :faq-button
:on-press
#(.openURL ^js react/linking constants/faq)
:chevron true}
{:size :small
:title (i18n/label :t/glossary)
[{:size :small
:title (i18n/label :t/glossary)
:accessibility-label :glossary-button
:on-press
#(re-frame/dispatch [:navigate-to :glossary])
:chevron true}
{:size :small
:title (i18n/label :t/submit-bug)
:on-press #(re-frame/dispatch [:open-modal :glossary])
:chevron true}
{:size :small
:title (i18n/label :t/submit-bug)
:accessibility-label :submit-bug-button
:on-press
#(re-frame/dispatch [:open-modal :bug-report])
:chevron true}])
:on-press #(re-frame/dispatch [:open-modal :bug-report])
:chevron true}])
(defn help-center
[]
[list/flat-list
{:data data
:key-fn (fn [_ i] (str i))
:render-fn list.item/list-item}])
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/need-help)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data data
:key-fn (fn [_ i] (str i))
:render-fn list.item/list-item}]])
@@ -2,14 +2,16 @@
(:require-macros [legacy.status-im.utils.views :as views])
(:require
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.link-previews-settings.styles :as styles]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.contexts.chat.messenger.messages.link-preview.events]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn prepare-urls-items-data
[link-previews-enabled-sites]
@@ -29,18 +31,24 @@
link-previews-enabled-sites [:link-preview/enabled-sites]]
(let [all-enabled (= (count link-previews-whitelist) (count link-previews-enabled-sites))]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/chat-link-previews)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/image
{:source (resources/get-theme-image :unfurl)
:style styles/link-preview-settings-image}]
[quo/text {:style {:margin 16}}
[components/text {:style {:margin 16}}
(i18n/label :t/you-can-choose-preview-websites)]
[quo/separator {:style {:margin-vertical 8}}]
[components/separator {:style {:margin-vertical 8}}]
[react/view styles/whitelist-container
[quo/list-header (i18n/label :t/websites)]
[components/list-header (i18n/label :t/websites)]
(when (> (count link-previews-whitelist) 1)
[quo/button
[components/button
{:on-press #(re-frame/dispatch [:chat.ui/enable-all-link-previews
link-previews-whitelist
(not all-enabled)])
@@ -4,7 +4,10 @@
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.log-level-settings.styles :as styles]
[re-frame.core :as re-frame])
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- log-level-icon
@@ -46,9 +49,16 @@
(views/defview log-level-settings
[]
(views/letsubs [current-log-level [:log-level/current-log-level]]
[list/flat-list
{:data log-levels
:default-separator? false
:key-fn :name
:render-data current-log-level
:render-fn render-row}]))
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/log-level-settings)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data log-levels
:default-separator? false
:key-fn :name
:render-data current-log-level
:render-fn render-row}]]))
@@ -1,9 +1,10 @@
(ns legacy.status-im.ui.screens.notifications-settings.views
(:require
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[react-native.platform :as platform]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
@@ -22,10 +23,10 @@
:active notifications-enabled?
:on-press #(rf/dispatch [:push-notifications/switch (not notifications-enabled?)])
:accessory :switch}]
[quo/separator
[components/separator
{:color (:ui-02 @colors/theme)
:style {:margin-vertical 8}}]
[quo/list-header (i18n/label :t/notifications-preferences)]
[components/list-header (i18n/label :t/notifications-preferences)]
[list.item/list-item
{:size :small
:title (i18n/label :t/notifications-non-contacts)
@@ -61,9 +62,16 @@
(defn notifications-settings
[]
[react/scroll-view
{:style {:flex 1}
:content-container-style {:padding-vertical 8}}
(if platform/ios?
[notifications-settings-ios]
[notifications-settings-android])])
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/notification-settings)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view
{:style {:flex 1}
:content-container-style {:padding-vertical 8}}
(if platform/ios?
[notifications-settings-ios]
[notifications-settings-android])]])
@@ -5,7 +5,6 @@
[legacy.status-im.ui.components.animation :as anim]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.profile.user.views :as profile.user]
[legacy.status-im.ui.screens.reset-password.views :as reset-password.views]
[re-frame.core :as re-frame]
[react-native.platform :as platform]
@@ -127,9 +126,6 @@
(vector? view)
view
(= :share-chat-key view)
[profile.user/share-chat-key]
(= :password-reset-popover view)
[reset-password.views/reset-password-popover]
@@ -2,20 +2,21 @@
(:require
[legacy.status-im.multiaccounts.reset-password.core :as reset-password]
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[react-native.platform :as platform]
[status-im.config :as config]
[status-im.constants :as constants]
[utils.i18n :as i18n])
[utils.i18n :as i18n]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn separator
[]
[quo/separator {:style {:margin-vertical 8}}])
[components/separator {:style {:margin-vertical 8}}])
(def titles
{constants/profile-pictures-visibility-contacts-only (i18n/label :t/recent-recipients)
@@ -27,8 +28,7 @@
(views/defview privacy-and-security
[]
(views/letsubs [{:keys [mnemonic
preview-privacy?
(views/letsubs [{:keys [preview-privacy?
messages-from-contacts-only
webview-allow-permission-requests?
opensea-enabled?
@@ -36,110 +36,107 @@
[:profile/profile]
has-picture [:profile/has-picture]
profile-pictures-show-to [:multiaccount/profile-pictures-show-to]]
[react/scroll-view {:padding-vertical 8}
[quo/list-header (i18n/label :t/security)]
[list.item/list-item
{:size :small
:title (i18n/label :t/back-up-seed-phrase)
:accessibility-label :back-up-recovery-phrase-button
:disabled (not mnemonic)
:chevron (boolean mnemonic)
:accessory (when mnemonic [components.common/counter {:size 22} 1])
:on-press #(re-frame/dispatch [:navigate-to :backup-seed])}]
[separator]
[quo/list-header (i18n/label :t/privacy)]
[list.item/list-item
{:size :small
:title (i18n/label :t/set-dapp-access-permissions)
:on-press #(re-frame/dispatch [:navigate-to :dapps-permissions])
:accessibility-label :dapps-permissions-button
:chevron true}]
[list.item/list-item
{:size :small
:title (if platform/android?
(i18n/label :t/hide-content-when-switching-apps)
(i18n/label :t/hide-content-when-switching-apps-ios))
:container-margin-bottom 8
:active preview-privacy?
:accessory :switch
:on-press #(re-frame/dispatch
[:profile.settings/change-preview-privacy
((complement boolean) preview-privacy?)])}]
(when config/collectibles-enabled?
[list.item/list-item
{:size :small
:title (i18n/label :t/display-collectibles)
:container-margin-bottom 8
:active opensea-enabled?
:accessory :switch
:on-press #(re-frame/dispatch
[::multiaccounts.update/toggle-opensea-nfts-visiblity
(not opensea-enabled?)])}])
[list.item/list-item
{:size :small
:title (i18n/label :t/chat-link-previews)
:chevron true
:on-press #(re-frame/dispatch [:navigate-to :link-previews-settings])
:accessibility-label :chat-link-previews}]
[list.item/list-item
{:size :small
:title (i18n/label :t/accept-new-chats-from)
:chevron true
:accessory :text
:accessory-text (i18n/label (if messages-from-contacts-only
:t/contacts
:t/anyone))
:on-press #(re-frame/dispatch [:navigate-to :messages-from-contacts-only])
:accessibility-label :accept-new-chats-from}]
[list.item/list-item
{:size :small
:title (i18n/label :t/reset-password)
:chevron true
:accessory :text
:on-press #(do
(re-frame/dispatch [::reset-password/clear-form-vals])
(re-frame/dispatch [:navigate-to :reset-password]))
:accessibility-label :reset-password}]
(when platform/android?
[list.item/list-item
{:size :small
:title (i18n/label :t/webview-camera-permission-requests)
:active webview-allow-permission-requests?
:accessory :switch
:subtitle (i18n/label :t/webview-camera-permission-requests-subtitle)
:subtitle-max-lines 2
:on-press #(re-frame/dispatch
[:profile.settings/profile-update
:webview-allow-permission-requests?
((complement boolean) webview-allow-permission-requests?)])}])
[separator]
[quo/list-header (i18n/label :t/privacy-photos)]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures)
:accessibility-label :show-profile-pictures
:accessory :text
:accessory-text (get titles profile-pictures-visibility)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures-to)
:disabled (not has-picture)
:accessibility-label :show-profile-pictures-to
:accessory :text
:accessory-text (get titles profile-pictures-show-to)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic-show-to])
:chevron true}]
[:<>
[quo/page-nav
{:type :no-title
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view {:padding-vertical 8}
[components/list-header (i18n/label :t/privacy)]
[list.item/list-item
{:size :small
:title (i18n/label :t/set-dapp-access-permissions)
:on-press #(re-frame/dispatch [:navigate-to :dapps-permissions])
:accessibility-label :dapps-permissions-button
:chevron true}]
[list.item/list-item
{:size :small
:title (if platform/android?
(i18n/label :t/hide-content-when-switching-apps)
(i18n/label :t/hide-content-when-switching-apps-ios))
:container-margin-bottom 8
:active preview-privacy?
:accessory :switch
:on-press #(re-frame/dispatch
[:profile.settings/change-preview-privacy
((complement boolean) preview-privacy?)])}]
(when config/collectibles-enabled?
[list.item/list-item
{:size :small
:title (i18n/label :t/display-collectibles)
:container-margin-bottom 8
:active opensea-enabled?
:accessory :switch
:on-press #(re-frame/dispatch
[::multiaccounts.update/toggle-opensea-nfts-visiblity
(not opensea-enabled?)])}])
[list.item/list-item
{:size :small
:title (i18n/label :t/chat-link-previews)
:chevron true
:on-press #(re-frame/dispatch [:open-modal :legacy-link-previews-settings])
:accessibility-label :chat-link-previews}]
[list.item/list-item
{:size :small
:title (i18n/label :t/accept-new-chats-from)
:chevron true
:accessory :text
:accessory-text (i18n/label (if messages-from-contacts-only
:t/contacts
:t/anyone))
:on-press #(re-frame/dispatch [:navigate-to :messages-from-contacts-only])
:accessibility-label :accept-new-chats-from}]
[list.item/list-item
{:size :small
:title (i18n/label :t/reset-password)
:chevron true
:accessory :text
:on-press #(do
(re-frame/dispatch [::reset-password/clear-form-vals])
(re-frame/dispatch [:navigate-to :reset-password]))
:accessibility-label :reset-password}]
(when platform/android?
[list.item/list-item
{:size :small
:title (i18n/label :t/webview-camera-permission-requests)
:active webview-allow-permission-requests?
:accessory :switch
:subtitle (i18n/label :t/webview-camera-permission-requests-subtitle)
:subtitle-max-lines 2
:on-press #(re-frame/dispatch
[:profile.settings/profile-update
:webview-allow-permission-requests?
((complement boolean) webview-allow-permission-requests?)])}])
[separator]
[components/list-header (i18n/label :t/privacy-photos)]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures)
:accessibility-label :show-profile-pictures
:accessory :text
:accessory-text (get titles profile-pictures-visibility)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures-to)
:disabled (not has-picture)
:accessibility-label :show-profile-pictures-to
:accessory :text
:accessory-text (get titles profile-pictures-show-to)
:on-press #(re-frame/dispatch [:navigate-to
:privacy-and-security-profile-pic-show-to])
:chevron true}]
[separator]
[list.item/list-item
{:size :small
:theme :negative
:title (i18n/label :t/delete-my-profile)
:on-press #(re-frame/dispatch [:navigate-to :delete-profile])
:accessibility-label :dapps-permissions-button
:chevron true}]]))
[separator]
[list.item/list-item
{:size :small
:theme :negative
:title (i18n/label :t/delete-my-profile)
:on-press #(re-frame/dispatch [:navigate-to :delete-profile])
:accessibility-label :dapps-permissions-button
:chevron true}]]]))
(defn ppst-radio-item
[id value]
@@ -158,7 +155,7 @@
[ppst-radio-item constants/profile-pictures-show-to-none profile-pictures-show-to]
[react/view {:style {:margin-horizontal 16}}
[quo/text {:color :secondary}
[components/text {:color :secondary}
(i18n/label :t/privacy-show-to-warning)]]]))
(defn ppvf-radio-item
@@ -1,26 +0,0 @@
(ns legacy.status-im.ui.screens.profile.contact.styles
(:require
[legacy.status-im.ui.components.colors :as colors]))
(def block-action-label
{:color colors/red
:margin-top 26
:margin-bottom 50
:margin-left 16})
(def contact-profile-details-container
{:padding-top 26})
(def contact-profile-detail-share-icon
{:color colors/gray-transparent-40})
(defn updates-descr-cont
[]
{:border-width 1
:border-color colors/gray-lighter
:border-top-right-radius 16
:border-bottom-left-radius 16
:border-top-left-radius 16
:border-bottom-right-radius 4
:padding-horizontal 12
:padding-vertical 6})
@@ -1,227 +0,0 @@
(ns legacy.status-im.ui.screens.profile.contact.views
(:require
[clojure.string :as string]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.keyboard-avoid-presentation :as kb-presentation]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.profile-header.view :as profile-header]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.profile.components.sheets :as sheets]
[quo.components.avatars.user-avatar.style :as user-avatar.style]
[quo.theme]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.constants :as constants]
[status-im.contexts.profile.utils :as profile.utils]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn actions
[{:keys [public-key added? blocked? ens-name mutual?] :as profile} muted?]
(concat [{:label (i18n/label :t/chat)
:icon :main-icons/message
:disabled (not mutual?)
:action #(re-frame/dispatch [:chat.ui/start-chat
public-key
ens-name])
:accessibility-label :start-conversation-button}]
(if added?
[{:label (i18n/label :t/remove-from-contacts)
:icon :main-icons/remove-contact
:selected true
:accessibility-label :in-contacts-button
:action #(re-frame/dispatch [:contact.ui/remove-contact-pressed profile])}]
[{:label (i18n/label :t/add-to-contacts)
:icon :main-icons/add-contact
:disabled blocked?
:accessibility-label :add-to-contacts-button
:action (when-not blocked?
(fn []
(re-frame/dispatch [:contact.ui/send-contact-request
public-key])))}])
[{:label (i18n/label (if (or muted? blocked?) :t/unmute :t/mute))
:icon :main-icons/notification
:accessibility-label :mute-chat
:selected muted?
:disabled blocked?
:action (when-not blocked?
#(re-frame/dispatch [:chat.ui/mute public-key (not muted?)
(when-not muted?
constants/mute-till-unmuted)]))}]
[{:label (i18n/label (if blocked? :t/unblock :t/block))
:negative true
:selected blocked?
:icon :main-icons/cancel
:action (if blocked?
#(re-frame/dispatch [:contact/unblock-contact public-key])
#(re-frame/dispatch [:show-popover
{:view sheets/block-contact
:prevent-closing? true
:public-key public-key}]))
:accessibility-label (if blocked?
:unblock-contact
:block-contact)}]))
(defn pin-settings
[public-key pin-count]
[list.item/list-item
{:title (i18n/label :t/pinned-messages)
:size :small
:accessibility-label :pinned-messages-item
:accessory :text
:accessory-text pin-count
:disabled (zero? pin-count)
:on-press #(rf/dispatch [:pin-message/show-pins-bottom-sheet public-key])
:chevron true}])
(defn nickname-settings
[{:keys [nickname]}]
[list.item/list-item
{:title (i18n/label :t/nickname)
:size :small
:accessibility-label :profile-nickname-item
:accessory :text
:accessory-text (or nickname (i18n/label :t/none))
:on-press #(re-frame/dispatch [:open-modal :nickname])
:chevron true}])
(defn save-nickname
[public-key nickname]
(re-frame/dispatch [:contacts/update-nickname public-key nickname])
(re-frame/dispatch [:navigate-back]))
(defn valid-nickname?
[nickname]
(not (string/blank? nickname)))
(defn- nickname-input
[nickname entered-nickname public-key]
[quo/text-input
{:on-change-text #(reset! entered-nickname %)
:on-submit-editing #(when (valid-nickname? @entered-nickname)
(save-nickname public-key @entered-nickname))
:auto-capitalize :none
:auto-focus false
:max-length constants/profile-name-max-length
:accessibility-label :nickname-input
:default-value nickname
:placeholder (i18n/label :t/nickname)
:return-key-type :done
:auto-correct false}])
(defn nickname-view
[]
(let [{:keys [public-key nickname] :as profile} (rf/sub [:contacts/current-contact])
entered-nickname (reagent/atom nickname)]
(fn []
[kb-presentation/keyboard-avoiding-view
{:style {:flex 1}
:ignore-offset true}
[topbar/topbar
{:title (i18n/label :t/nickname)
:subtitle (profile.utils/displayed-name profile)
:modal? true}]
[react/view {:flex 1 :padding 16}
[react/text {:style {:color colors/gray :margin-bottom 16}}
(i18n/label :t/nickname-description)]
[nickname-input nickname entered-nickname public-key]
[react/text
{:style {:align-self :flex-end
:margin-top 16
:color colors/gray}}
(str (count @entered-nickname) " / " constants/profile-name-max-length)]]
[toolbar/toolbar
{:show-border? true
:center
[quo/button
{:type :secondary
:on-press #(save-nickname public-key @entered-nickname)}
(i18n/label :t/done)]}]])))
(defn button-item
[{:keys [icon label action selected disabled negative]}]
[react/touchable-highlight
{:on-press action
:disabled disabled
:style {:flex 1}
:accessibility-label (str label "-item-button")}
[react/view {:flex 1 :align-items :center}
[list.item/icon-column
{:icon icon
:size :small
:icon-bg-color (if disabled
colors/gray-lighter
(if negative
(if selected colors/red colors/red-light)
(if selected colors/blue colors/blue-light)))
:icon-color (if disabled
colors/gray
(if negative
(if selected colors/white colors/red)
(if selected colors/white colors/blue)))}]
[react/text
{:style {:text-align :center
:color (if disabled
colors/gray
(if negative colors/red colors/blue))
:font-size 12
:line-height 16
:margin-top 6}
:number-of-lines 2}
label]]])
(defn profile-view
[]
(let [{:keys [public-key
secondary-name
name
ens-verified
customization-color
compressed-key]
:as profile} @(re-frame/subscribe [:contacts/current-contact])
muted? @(re-frame/subscribe [:chats/muted public-key])
customization-color (or customization-color :primary)
theme @(re-frame/subscribe [:theme])
on-share #(re-frame/dispatch [:show-popover
(merge
{:view :share-chat-key
:address (or compressed-key
public-key)}
(when (and ens-verified name)
{:ens-name name}))])]
(when profile
[:<>
[quo/header
{:right-accessories [{:icon :main-icons/share
:accessibility-label :share-button
:on-press on-share}]
:left-accessories [{:icon :main-icons/close
:accessibility-label :back-button
:on-press #(re-frame/dispatch [:navigate-back])}]}]
[:<>
[(profile-header/extended-header
{:on-press on-share
:bottom-separator false
:title (profile.utils/displayed-name profile)
:color (user-avatar.style/customization-color customization-color theme)
:photo (profile.utils/photo profile)
:monospace (not ens-verified)
:subtitle secondary-name
:compressed-key compressed-key
:public-key public-key})]
[react/view
{:height 1 :background-color colors/gray-lighter :margin-top 8}]
[nickname-settings profile]
[react/view {:height 1 :background-color colors/gray-lighter}]
[react/view
{:padding-top 17
:flex-direction :row
:align-items :stretch
:flex 1}
(for [{:keys [label] :as action} (actions profile muted?)
:when label]
^{:key label}
[button-item action])]]])))
@@ -1,233 +0,0 @@
(ns legacy.status-im.ui.screens.profile.group-chat.views
(:require
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.profile-header.view :as profile-header]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.chat.photos :as photos]
[legacy.status-im.ui.screens.chat.utils :as chat.utils]
[legacy.status-im.ui.screens.profile.components.styles :as profile.components.styles]
[re-frame.core :as re-frame]
[status-im.constants :as constants]
[status-im.contexts.profile.utils :as profile.utils]
[utils.debounce :as debounce]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :refer [defview letsubs]]))
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn member-sheet
[chat-id member us-admin?]
[react/view
[list.item/list-item
{:theme :accent
:icon [chat-icon/contact-icon-contacts-tab member]
:title (profile.utils/displayed-name member)
:subtitle (i18n/label :t/view-profile)
:accessibility-label :view-chat-details-button
:chevron true
:on-press #(hide-sheet-and-dispatch
[:chat.ui/show-profile
(:public-key member)])}]
(when (and us-admin? (not (:admin? member)))
[list.item/list-item
{:theme :accent
:title (i18n/label :t/make-admin)
:accessibility-label :make-admin
:icon :main-icons/make-admin
:on-press #(hide-sheet-and-dispatch [:group-chats.ui/make-admin-pressed
chat-id (:public-key member)])}])
(when-not (:admin? member)
[list.item/list-item
{:theme :accent
:title (i18n/label :t/remove-from-chat)
:accessibility-label :remove-from-chat
:icon :main-icons/remove-contact
:on-press #(hide-sheet-and-dispatch
[:group-chats.ui/remove-member-pressed chat-id
(:public-key member)])}])])
(defn render-member
[{:keys [public-key] :as member} _ _ {:keys [chat-id admin? current-user-identity]}]
(let [{:keys [secondary-name]} member]
[list.item/list-item
(merge
{:title (profile.utils/displayed-name member)
:subtitle secondary-name
:accessibility-label :member-item
:icon [chat-icon/contact-icon-contacts-tab member]
:on-press (when (not= public-key current-user-identity)
#(re-frame/dispatch [:chat.ui/show-profile public-key]))}
(when (:admin? member)
{:accessory :text
:accessory-text (i18n/label :t/group-chat-admin)})
(when (and admin?
(not (:admin? member))
(not= public-key current-user-identity))
{:accessory [quo/button
{:on-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
{:content (fn []
[member-sheet chat-id member admin?])}])
:type :icon
:theme :icon
:accessibility-label :menu-option}
:main-icons/more]}))]))
(defview chat-group-members-view
[chat-id admin? current-user-identity]
(letsubs [members [:contacts/current-chat-contacts]]
(when (seq members)
[list/flat-list
{:data members
:key-fn :address
:render-data {:chat-id chat-id
:admin? admin?
:current-user-identity current-user-identity}
:render-fn render-member}])))
(defn members-list
[{:keys [chat-id admin? current-pk allow-adding-members?]}]
[react/view
[quo/list-header (i18n/label :t/members-title)]
(when allow-adding-members?
[list.item/list-item
{:title (i18n/label :t/add-members)
:icon :main-icons/add-contact
:theme :accent
:on-press #(re-frame/dispatch [:open-modal :add-participants-toggle-list])}])
[chat-group-members-view chat-id admin? current-pk]])
(defn hide-sheet-and-dispatch-old
[event]
(re-frame/dispatch [:bottom-sheet/hide-old])
(debounce/throttle-and-dispatch event 2000))
(defn invitation-sheet
[{:keys [id]} contact]
(let [members @(re-frame/subscribe [:contacts/current-chat-contacts])
allow-adding-members? (< (count members) constants/max-group-chat-participants)]
[react/view
[react/view {:margin-bottom 8 :margin-right 16}
[react/view {:padding-left 72}
(chat.utils/format-author-old contact)]
[react/view {:flex-direction :row :align-items :flex-end}
[react/view {:padding-left 16 :padding-top 4}
[photos/photo (profile.utils/photo contact) {:size 36}]]]]
[list.item/list-item
{:theme :accent
:disabled (not allow-adding-members?)
:title (i18n/label :t/accept)
:subtitle (when-not allow-adding-members? (i18n/label :t/members-limit-reached))
:accessibility-label :accept-invitation-button
:icon :main-icons/checkmark-circle
:on-press #(hide-sheet-and-dispatch-old
[:group-chats.ui/add-members-from-invitation id (:public-key contact)])}]
[list.item/list-item
{:theme :negative
:title (i18n/label :t/decline)
:accessibility-label :decline-invitation-button
:icon :main-icons/cancel
:on-press #(hide-sheet-and-dispatch-old [:send-group-chat-membership-rejection
id])}]]))
(defn contacts-list-item
[{:keys [from] :as invitation}]
(let [contact (or @(re-frame/subscribe [:contacts/contact-by-identity from])
{:public-key from})]
[list.item/list-item
{:title (profile.utils/displayed-name contact)
:icon [chat-icon/contact-icon-contacts-tab contact]
:on-press #(re-frame/dispatch [:show-bottom-sheet
{:content (fn []
[invitation-sheet invitation contact])}])}]))
(defview group-chat-invite
[]
(letsubs [{:keys [chat-id]} [:chats/current-chat]]
(let [invitations @(re-frame/subscribe [:group-chat/pending-invitations-by-chat-id chat-id])]
[react/view {:flex 1}
[topbar/topbar {:title (i18n/label :t/group-invite)}]
[react/scroll-view {:flex 1}
[react/view {:margin-top 26}
(if (seq invitations)
[list/flat-list
{:data invitations
:key-fn :id
:render-fn contacts-list-item}]
[react/text
{:style {:color colors/gray
:margin-top 28
:text-align :center
:padding-horizontal 16}}
(i18n/label :t/empty-pending-invitations-descr)])]]])))
(defview group-chat-profile
[]
(letsubs [{:keys [admins chat-id member? chat-name color contacts] :as current-chat}
[:chats/current-chat]
members [:contacts/current-chat-contacts]
current-pk [:multiaccount/public-key]
pinned-messages [:chats/pinned chat-id]]
(when current-chat
(let [admin? (get admins current-pk)
allow-adding-members? (and admin?
member?
(< (count members) constants/max-group-chat-participants))]
[react/view profile.components.styles/profile
[quo/animated-header
{:use-insets true
:left-accessories [{:icon :main-icons/arrow-left
:accessibility-label :back-button
:on-press #(re-frame/dispatch [:navigate-back])}]
:right-accessories (when (and admin? member?)
[{:icon :icons/edit
:accessibility-label :edit-button
:on-press #(re-frame/dispatch [:open-modal
:edit-group-chat-name])}])
:extended-header (profile-header/extended-header
{:title chat-name
:color color
:subtitle (i18n/label :t/members-count {:count (count contacts)})
:subtitle-icon :icons/tiny-group})}
[react/view profile.components.styles/profile-form
(when admin?
[list.item/list-item
{:chevron true
:title (i18n/label :t/membership-requests)
:accessibility-label :invite-chat-button
:icon :main-icons/share
:accessory (let [invitations
(count @(re-frame/subscribe
[:group-chat/pending-invitations-by-chat-id
chat-id]))]
(when (pos? invitations)
[components.common/counter {:size 22} invitations]))
:on-press #(re-frame/dispatch [:navigate-to :group-chat-invite])}])
[list.item/list-item
{:title (i18n/label :t/pinned-messages)
:icon :main-icons/pin
:accessory :text
:accessory-text (count pinned-messages)
:chevron true
:on-press #(re-frame/dispatch [:pin-message/show-pins-bottom-sheet chat-id])}]
(when member?
[list.item/list-item
{:theme :negative
:title (i18n/label :t/leave-chat)
:accessibility-label :leave-chat-button
:icon :main-icons/arrow-left
:on-press #(re-frame/dispatch [:group-chats.ui/leave-chat-pressed chat-id])}])
[members-list
{:chat-id chat-id
:admin? admin?
:current-pk current-pk
:allow-adding-members? allow-adding-members?}]]]]))))
@@ -12,8 +12,12 @@
[legacy.status-im.ui.screens.profile.seed.styles :as styles]
[legacy.status-im.utils.utils :as utils]
[re-frame.core :as re-frame]
[react-native.core :as rn]
[react-native.platform :as platform]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(def steps-numbers
{:intro 1
@@ -153,13 +157,17 @@
[quo/button {:on-press #(re-frame/dispatch [:navigate-back])}
(i18n/label :t/ok-got-it)]]])
(defview backup-seed
(defn backup-seed
[]
(letsubs [current-multiaccount [:profile/profile]
{:keys [step first-word second-word error word]} [:my-profile/recovery]]
[react/keyboard-avoiding-view
{:style {:flex 1}
:ignore-offset true}
(let [current-multiaccount (rf/sub [:profile/profile])
{:keys [step first-word
second-word error word]} (rf/sub [:my-profile/recovery])
footer-container-padding (+ (safe-area/get-top)
(rf/sub [:alert-banners/top-margin])
20)]
[rn/keyboard-avoiding-view
{:style {:flex 1}
:keyboard-vertical-offset (if platform/ios? footer-container-padding 0)}
[topbar/topbar
{:title (i18n/label :t/backup-recovery-phrase)
:subtitle (i18n/label :t/step-i-of-n {:step (steps-numbers step) :number 3})
@@ -3,9 +3,11 @@
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[re-frame.core :as re-frame]
[react-native.platform :as platform]
[status-im.config :as config]
[status-im.contexts.profile.settings.events]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(def crop-size 1000)
(def crop-opts
@@ -17,16 +19,22 @@
(defn pick-pic
[]
(re-frame/dispatch [:bottom-sheet/hide-old])
(when platform/ios?
(rf/dispatch [:alert-banners/hide]))
(react/show-image-picker
#(re-frame/dispatch [:profile.settings/save-profile-picture (.-path ^js %) 0 0 crop-size crop-size])
crop-opts))
crop-opts
#(rf/dispatch [:alert-banners/unhide])))
(defn take-pic
[]
(re-frame/dispatch [:bottom-sheet/hide-old])
(when platform/ios?
(rf/dispatch [:alert-banners/hide]))
(react/show-image-picker-camera
#(re-frame/dispatch [:profile.settings/save-profile-picture (.-path ^js %) 0 0 crop-size crop-size])
crop-opts))
crop-opts
#(rf/dispatch [:alert-banners/unhide])))
(defn bottom-sheet
[has-picture]
@@ -1,230 +1,37 @@
(ns legacy.status-im.ui.screens.profile.user.views
(:require
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.copyable-text :as copyable-text]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list-selection :as list-selection]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.profile-header.view :as profile-header]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.spacing :as spacing]
[legacy.status-im.ui.screens.profile.user.edit-picture :as edit]
[legacy.status-im.ui.screens.profile.user.styles :as styles]
[legacy.status-im.ui.screens.profile.visibility-status.views :as visibility-status]
[legacy.status-im.utils.utils :as utils]
[quo.components.avatars.user-avatar.style :as user-avatar.style]
[quo.core :as quo]
[quo.theme]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.common.qr-codes.view :as qr-codes]
[status-im.config :as config]
[status-im.contexts.profile.utils :as profile.utils]
[utils.ens.stateofus :as stateofus]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(views/defview share-chat-key
[]
(views/letsubs [{:keys [address ens-name]} [:popover/popover]
{:keys [universal-profile-url]} [:profile/profile]
width (reagent/atom nil)]
[react/view {:on-layout #(reset! width (-> ^js % .-nativeEvent .-layout .-width))}
[react/view {:style {:padding-top 16 :padding-horizontal 16}}
(when @width
[qr-codes/qr-code
{:url address
:size (- @width 32)}])
(when ens-name
[react/view
[copyable-text/copyable-text-view
{:label :t/ens-username
:container-style {:margin-top 12 :margin-bottom 4}
:copied-text ens-name}
[quo/text
{:monospace true
:accessibility-label :ens-username}
ens-name]]
[react/view
{:height 1
:margin-top 12
:margin-horizontal -16
:background-color colors/gray-lighter}]])
[copyable-text/copyable-text-view
{:label :t/chat-key
:container-style {:margin-top 12 :margin-bottom 4}
:copied-text address}
[quo/text
{:number-of-lines 1
:ellipsize-mode :middle
:accessibility-label :chat-key
:monospace true}
address]]]
[react/view styles/share-link-button
[quo/button
{:on-press (fn []
(re-frame/dispatch [:hide-popover])
(js/setTimeout
#(list-selection/open-share {:message universal-profile-url})
250))
:accessibility-label :share-my-contact-code-button}
(i18n/label :t/share-link)]]]))
[react-native.core :as rn]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn content
[]
(let [{:keys [preferred-name
mnemonic]}
@(re-frame/subscribe [:profile/profile])
active-contacts-count @(re-frame/subscribe [:contacts/active-count])
chain @(re-frame/subscribe [:chain-keyword])
registrar (when (or (not= chain :goerli) config/test-stateofus?)
(stateofus/get-cached-registrar chain))
local-pairing-mode-enabled? config/local-pairing-mode-enabled?]
[:<>
[visibility-status/visibility-status-button
visibility-status/calculate-button-height-and-dispatch-popover]
[quo/separator {:style {:margin-top (:tiny spacing/spacing)}}]
[list.item/list-item
(cond-> {:title (or (when registrar preferred-name)
(i18n/label :t/ens-usernames))
:subtitle (if registrar
(if preferred-name
(i18n/label :t/ens-your-your-name)
(i18n/label :t/ens-usernames-details))
(i18n/label :t/ens-network-restriction))
:subtitle-max-lines (if registrar
(if preferred-name 1 2)
1)
:accessibility-label :ens-button
:container-margin-top 8
:disabled (not registrar)
:chevron true
:icon :main-icons/username}
registrar
(assoc :on-press #(re-frame/dispatch [:open-modal :ens-main registrar])))]
[list.item/list-item
{:title (i18n/label :t/contacts)
:icon :main-icons/in-contacts
:accessibility-label :contacts-button
:accessory :text
:accessory-text (if (pos? active-contacts-count)
(str active-contacts-count)
(i18n/label :t/none))
:chevron true
:on-press #(re-frame/dispatch [:open-modal :contacts-list])}]
[react/view {:padding-top 16}
[quo/list-header (i18n/label :t/settings)]]
[list.item/list-item
{:icon :main-icons/security
:title (i18n/label :t/privacy-and-security)
:accessibility-label :privacy-and-security-settings-button
:chevron true
:accessory (when mnemonic
[components.common/counter {:size 22} 1])
:on-press #(re-frame/dispatch [:open-modal :privacy-and-security])}]
(when config/quo-preview-enabled?
[list.item/list-item
{:icon :main-icons/appearance
:title "Quo Preview"
:accessibility-label :appearance-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :quo-preview])}])
(when config/quo-preview-enabled?
[list.item/list-item
{:icon :main-icons/appearance
:title "Status IM Components"
:accessibility-label :status-im-common-components
:chevron true
:on-press #(re-frame/dispatch [:open-modal :status-im-preview])}])
[list.item/list-item
{:icon :main-icons/appearance
:title (i18n/label :t/appearance)
:accessibility-label :appearance-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :appearance])}]
[list.item/list-item
{:icon :main-icons/notification
:title (i18n/label :t/notifications)
:accessibility-label :notifications-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :notifications])}]
[list.item/list-item
{:icon :main-icons/mobile
:title (i18n/label :t/sync-settings)
:accessibility-label :sync-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :sync-settings])}]
[list.item/list-item
{:icon :main-icons/settings-advanced
:title (i18n/label :t/advanced)
:accessibility-label :advanced-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :advanced-settings])}]
[list.item/list-item
{:icon :main-icons/help
:title (i18n/label :t/need-help)
:accessibility-label :help-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :help-center])}]
[list.item/list-item
{:icon :main-icons/info
:title (i18n/label :t/about-app)
:accessibility-label :about-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :about-app])}]
(when local-pairing-mode-enabled?
[list.item/list-item
{:icon :i/mobile
:title (i18n/label :t/syncing)
:accessibility-label :syncing
:chevron true
:on-press #(re-frame/dispatch [:open-modal :settings-syncing])}])
[react/view {:padding-vertical 24}
[list.item/list-item
{:icon :main-icons/log-out
:title (i18n/label :t/sign-out)
:accessibility-label :log-out-button
:theme :negative
:on-press
#(re-frame/dispatch [:multiaccounts.logout.ui/logout-pressed])}]]]))
[rn/scroll-view {:flex 1}
[components/list-header "Legacy settings"]
[list.item/list-item
{:icon :main-icons/security
:title (i18n/label :t/privacy-and-security)
:accessibility-label :privacy-and-security-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :legacy-privacy-and-security])}]
[list.item/list-item
{:icon :main-icons/mobile
:title (i18n/label :t/sync-settings)
:accessibility-label :sync-settings-button
:chevron true
:on-press #(re-frame/dispatch [:open-modal :legacy-sync-settings])}]])
(defn my-profile
(defn legacy-settings
[]
(fn []
(let [{:keys [public-key
compressed-key
ens-verified
preferred-name
key-uid]
:as profile}
@(re-frame/subscribe [:profile/profile-with-image])
customization-color (or (:color @(re-frame/subscribe [:onboarding/profile]))
@(re-frame/subscribe [:profile/customization-color key-uid]))
theme @(re-frame/subscribe [:theme])
on-share #(re-frame/dispatch [:show-popover
{:view :share-chat-key
:address (or compressed-key
public-key)
:ens-name preferred-name}])
has-picture @(re-frame/subscribe [:profile/has-picture])]
[react/view {:flex 1}
[quo/animated-header
{:right-accessories [{:accessibility-label :share-header-button
:icon :main-icons/share
:on-press on-share}]
:left-accessories [{:accessibility-label :close-header-button
:icon :main-icons/close
:on-press #(re-frame/dispatch [:navigate-back])}]
:use-insets true
:extended-header (profile-header/extended-header
{:on-press on-share
:on-edit #(re-frame/dispatch [:show-bottom-sheet
{:content (edit/bottom-sheet
has-picture)}])
:color (user-avatar.style/customization-color customization-color
theme)
:title (profile.utils/displayed-name profile)
:photo (profile.utils/photo profile)
:monospace (not ens-verified)
:subtitle (utils/get-shortened-address (or compressed-key public-key))})}
[content]]])))
[:<>
[quo/page-nav
{:type :no-title
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[content]])
@@ -1,11 +0,0 @@
(ns legacy.status-im.ui.screens.qr-scanner.styles)
(def viewfinder-port
{:position :absolute
:left 0
:top 0
:bottom 0
:right 0
:align-items :center
:justify-content :center
:flex 1})
@@ -1,128 +0,0 @@
(ns legacy.status-im.ui.screens.qr-scanner.views
(:require
[clojure.string :as string]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.qr-scanner.styles :as styles]
[re-frame.core :as re-frame]
[react-native.camera-kit :as camera-kit]
[react-native.core :as rn]
[reagent.core :as reagent]
[status-im.config :as config]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn get-qr-code-data
[^js event]
(when-let [data (-> event .-nativeEvent .-codeStringValue)]
(string/trim data)))
(defn- topbar
[_ {:keys [title] :as opts}]
[topbar/topbar
{:background colors/black-persist
:use-insets true
:border-bottom false
:navigation :none
:left-component [quo/button
{:type :secondary
:on-press #(re-frame/dispatch [:qr-scanner.callback/scan-qr-code-cancel opts])}
[quo/text {:style {:color colors/white-persist}}
(i18n/label :t/cancel)]]
:title-component [quo/text
{:style {:color colors/white-persist}
:weight :bold
:number-of-lines 1
:align :center
:size :large}
(or title (i18n/label :t/scan-qr-code))]}])
(defn qr-test-view
[opts]
(let [text-value (atom "")]
[react/view
{:flex 1
:align-items :center
:justify-content :center}
[react/text-input
{:multiline true
:style {:color colors/white-persist}
:on-change-text #(reset! text-value %)}]
[react/view {:flex-direction :row}
[quo/button
{:on-press #(re-frame/dispatch [:qr-scanner.callback/scan-qr-code-cancel opts])}
"Cancel"]
[quo/button
{:on-press #(re-frame/dispatch
[:qr-scanner.callback/scan-qr-code-success opts
(when-let [text @text-value]
(-> text string/trim (string/replace #"^Ethereum:" "ethereum:")))])}
"Ok"]]]))
(defn corner
[border1 border2 corner-radius]
[react/view
{:style (assoc {:border-color colors/white-persist :width 60 :height 60}
border1
5
border2
5
corner-radius
32)}])
(defn- viewfinder
[size]
[react/view {:style styles/viewfinder-port}
[react/view {:width size :height size :justify-content :space-between}
[react/view {:flex-direction :row :justify-content :space-between}
[corner :border-top-width :border-left-width :border-top-left-radius]
[corner :border-top-width :border-right-width :border-top-right-radius]]
[react/view {:flex-direction :row :justify-content :space-between}
[corner :border-bottom-width :border-left-width :border-bottom-left-radius]
[corner :border-bottom-width :border-right-width :border-bottom-right-radius]]]])
(defn on-barcode-read
[opts data]
(re-frame/dispatch [:qr-scanner.callback/scan-qr-code-success opts (get-qr-code-data data)]))
(defn- navigate-back-handler
[]
(re-frame/dispatch [:navigate-back])
true)
(defn f-qr-scanner
[]
(let [read-once? (reagent/atom false)
{:keys [height width]} (rf/sub [:dimensions/window])
camera-flashlight (rf/sub [:wallet-legacy.send/camera-flashlight])
opts (rf/sub [:get-screen-params])
camera-ref (reagent/atom nil)]
[react/view
{:flex 1
:background-color colors/black-persist}
[topbar camera-flashlight opts]
(if config/qr-test-menu-enabled?
[qr-test-view opts]
[react/view {:flex 1}
[react/with-activity-indicator
{}
[camera-kit/camera
{:ref #(reset! camera-ref %)
:style {:flex 1}
:camera-type camera-kit/camera-type-back
:zoom-mode :off
:scan-barcode true
:on-read-code #(when-not @read-once?
(reset! read-once? true)
(on-barcode-read opts %))}]]
[viewfinder (int (* 2 (/ (min height width) 3)))]])]))
(defn qr-scanner
[]
(reagent/create-class
{:display-name "qr-scanner"
:component-did-mount #(rn/hw-back-add-listener navigate-back-handler)
:component-will-unmount #(rn/hw-back-remove-listener navigate-back-handler)
:reagent-render f-qr-scanner}))
+73 -192
View File
@@ -5,18 +5,13 @@
[legacy.status-im.ui.screens.advanced-settings.views :as advanced-settings]
[legacy.status-im.ui.screens.appearance.views :as appearance]
[legacy.status-im.ui.screens.backup-settings.view :as backup-settings]
[legacy.status-im.ui.screens.browser.bookmarks.views :as bookmarks]
[legacy.status-im.ui.screens.bug-report :as bug-report]
[legacy.status-im.ui.screens.communities.invite :as communities.invite]
[legacy.status-im.ui.screens.communities.members :as members]
[legacy.status-im.ui.screens.contacts-list.views :as contacts-list]
[legacy.status-im.ui.screens.currency-settings.views :as currency-settings]
[legacy.status-im.ui.screens.dapps-permissions.views :as dapps-permissions]
[legacy.status-im.ui.screens.default-sync-period-settings.view :as default-sync-period-settings]
[legacy.status-im.ui.screens.ens.views :as ens]
[legacy.status-im.ui.screens.fleet-settings.views :as fleet-settings]
[legacy.status-im.ui.screens.glossary.view :as glossary]
[legacy.status-im.ui.screens.group.views :as group-chat]
[legacy.status-im.ui.screens.help-center.views :as help-center]
[legacy.status-im.ui.screens.link-previews-settings.views :as link-previews-settings]
[legacy.status-im.ui.screens.log-level-settings.views :as log-level-settings]
@@ -30,18 +25,15 @@
[legacy.status-im.ui.screens.privacy-and-security-settings.messages-from-contacts-only :as
messages-from-contacts-only]
[legacy.status-im.ui.screens.privacy-and-security-settings.views :as privacy-and-security]
[legacy.status-im.ui.screens.profile.contact.views :as contact]
[legacy.status-im.ui.screens.profile.group-chat.views :as profile.group-chat]
[legacy.status-im.ui.screens.profile.seed.views :as profile.seed]
[legacy.status-im.ui.screens.profile.user.views :as profile.user]
[legacy.status-im.ui.screens.progress.views :as progress]
[legacy.status-im.ui.screens.qr-scanner.views :as qr-scanner]
[legacy.status-im.ui.screens.reset-password.views :as reset-password]
[legacy.status-im.ui.screens.rpc-usage-info :as rpc-usage-info]
[legacy.status-im.ui.screens.stickers.views :as stickers]
[legacy.status-im.ui.screens.sync-settings.views :as sync-settings]
[legacy.status-im.ui.screens.wakuv2-settings.edit-node.views :as edit-wakuv2-node]
[legacy.status-im.ui.screens.wakuv2-settings.views :as wakuv2-settings]
[react-native.platform :as platform]
[utils.i18n :as i18n]))
(defn topbar-options
@@ -59,79 +51,92 @@
(defn screens
[]
[;;INTRO, ONBOARDING, LOGIN
[;;PROGRESS
{:name :progress
:options {:insets {:top? true}}
:component progress/progress}
;;CHAT
{:name :group-chat-invite
;;TODO parameter in the event
:options {:insets {:top? true}}
:component profile.group-chat/group-chat-invite}
;;COMMUNITY
{:name :legacy-community-members
;;TODO custom subtitle
:options {:insets {:top? true}}
:component members/legacy-members-container}
{:name :stickers
:options {:insets {:top? true}
:topBar (topbar-options :t/sticker-market)}
:component stickers/packs}
{:name :legacy-invite-people-community
:options {:insets {:bottom? true :top? true}}
:component communities.invite/legacy-invite}
{:name :stickers-pack
:options {:insets {:top? true}}
:component stickers/pack}
;;SETTINGS
{:name :legacy-notifications
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component notifications-settings/notifications-settings}
{:name :currency-settings
:options {:topBar (topbar-options :t/main-currency)
:insets {:top? true}}
:component currency-settings/currency-settings}
{:name :legacy-appearance
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component appearance/appearance-view}
;;PROFILE
;; ADVANCED
{:name :legacy-advanced-settings
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component advanced-settings/advanced-settings}
{:name :my-profile
:options {:topBar {:visible false}}
:component profile.user/my-profile}
{:name :contacts-list
:options {:topBar (topbar-options :t/contacts)
:insets {:top? true}}
:component contacts-list/contacts-list}
{:name :ens-main
:options {:topBar (topbar-options :t/ens-usernames)
:insets {:top? true}}
:component ens/main}
{:name :ens-search
:options {:topBar (topbar-options :t/ens-your-username)
:insets {:top? true}}
:component ens/search}
{:name :ens-checkout
:options {:topBar (topbar-options :t/ens-your-username)
:insets {:top? true}}
:component ens/checkout}
{:name :ens-confirmation
:options {:topBar (topbar-options :t/ens-your-username)
:insets {:top? true}}
:component ens/confirmation}
{:name :ens-terms
:options {:topBar (topbar-options :t/ens-terms-registration)
:insets {:top? true}}
:component ens/terms}
{:name :ens-name-details
;;TODO dynamic title
:options {:insets {:top? true}}
:component ens/name-details}
{:name :blocked-users-list
:options {:topBar (topbar-options :t/blocked-users)
:insets {:top? true}}
:component contacts-list/blocked-users-list}
{:name :legacy-:og-level-settings
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component log-level-settings/log-level-settings}
;; LEGACY SETTINGS
{:name :legacy-settings
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component profile.user/legacy-settings}
;; PRIVACY AND SECURITY
{:name :legacy-privacy-and-security
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component privacy-and-security/privacy-and-security}
{:name :legacy-link-previews-settings
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component link-previews-settings/link-previews-settings}
;; SYNC
{:name :legacy-sync-settings
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component sync-settings/sync-settings}
;; ABOUT
{:name :about-app
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component about-app/about-app}
;; STATUS HELP
{:name :help-center
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component help-center/help-center}
{:name :glossary
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component glossary/glossary}
{:name :bug-report
:options {:topBar {:visible false}
:insets {:top? platform/android?}}
:component bug-report/bug-report}
;; OTHER
{:name :wakuv2-settings
;;TODO dynamic title
:options {:insets {:top? true}}
:component wakuv2-settings/wakuv2-settings}
{:name :edit-wakuv2-node
;;TODO dynamic title
:options {:insets {:top? true}}
:component edit-wakuv2-node/edit-node}
{:name :installations
@@ -139,29 +144,19 @@
:insets {:top? true}}
:component pairing/installations}
{:name :offline-messaging-settings
;;TODO dynamic title
:options {:insets {:top? true}}
:component offline-messaging-settings/offline-messaging-settings}
{:name :edit-mailserver
;;TODO dynamic title
:options {:insets {:top? true}}
:component edit-mailserver/edit-mailserver}
{:name :dapps-permissions
:options {:topBar (topbar-options :t/dapps-permissions)
:insets {:top? true}}
:component dapps-permissions/dapps-permissions}
{:name :privacy-and-security
:options {:topBar (topbar-options :t/privacy-and-security)
:insets {:top? true}}
:component privacy-and-security/privacy-and-security}
{:name :messages-from-contacts-only
:options {:topBar (topbar-options :t/accept-new-chats-from)
:insets {:top? true}}
:component messages-from-contacts-only/messages-from-contacts-only-view}
{:name :appearance
:options {:topBar (topbar-options :t/appearance)
:insets {:top? true}}
:component appearance/appearance-view}
{:name :privacy-and-security-profile-pic-show-to
:options {:topbar (topbar-options :t/show-profile-pictures-to)
:insets {:top? true}}
@@ -170,44 +165,7 @@
:options {:topBar (topbar-options :t/show-profile-pictures)
:insets {:top? true}}
:component privacy-and-security/profile-pic}
{:name :notifications
:options {:topBar (topbar-options :t/notification-settings)
:insets {:top? true}}
:component notifications-settings/notifications-settings}
{:name :sync-settings
:options {:topBar (topbar-options :t/sync-settings)
:insets {:top? true}}
:component sync-settings/sync-settings}
{:name :advanced-settings
:options {:topBar (topbar-options :t/advanced)
:insets {:top? true}}
:component advanced-settings/advanced-settings}
{:name :help-center
:options {:topBar (topbar-options :t/need-help)
:insets {:top? true}}
:component help-center/help-center}
{:name :glossary
:options {:topBar (topbar-options :t/glossary)
:insets {:top? true}}
:component glossary/glossary}
{:name :about-app
:options {:topBar (topbar-options :t/about-app)
:insets {:top? true}}
:component about-app/about-app}
{:name :privacy-policy
:options {:topBar (topbar-options :t/privacy-policy)
:insets {:top? true}}
:component about-app/privacy-policy}
{:name :terms-of-service
:options {:topBar (topbar-options :t/terms-of-service)
:insets {:top? true}}
:component about-app/tos}
{:name :principles
:options {:topBar (topbar-options :t/principles)
:insets {:top? true}}
:component about-app/principles}
{:name :manage-dapps-permissions
;;TODO dynamic title
:options {:insets {:top? true}}
:component dapps-permissions/manage}
{:name :rpc-usage-info
@@ -218,10 +176,6 @@
:options {:topBar (topbar-options :t/peers-stats)
:insets {:top? true}}
:component peers-stats/peers-stats}
{:name :log-level-settings
:options {:topBar (topbar-options :t/log-level-settings)
:insets {:top? true}}
:component log-level-settings/log-level-settings}
{:name :fleet-settings
:options {:topBar (topbar-options :t/fleet-settings)
:insets {:top? true}}
@@ -235,8 +189,7 @@
:insets {:top? true}}
:component backup-settings/backup-settings}
{:name :backup-seed
;;TODO dynamic navigation
:options {:insets {:top? true}}
:options {:insets {:top? platform/android? :bottom? true}}
:component profile.seed/backup-seed}
{:name :reset-password
:options {:topBar (topbar-options :t/reset-password)
@@ -248,76 +201,4 @@
{:name :default-sync-period-settings
:options {:topBar (topbar-options :t/default-sync-period)
:insets {:top? true}}
:component default-sync-period-settings/default-sync-period-settings}
;;MODALS
;[Chat] Link preview settings
{:name :link-previews-settings
:options {:topBar (topbar-options :t/chat-link-previews)
:insets {:top? true}}
:component link-previews-settings/link-previews-settings}
;[Chat] Edit nickname
{:name :nickname
;;TODO dyn subtitle
:options {:topBar {:visible false}
:insets {:bottom? true
:top? true}}
:component contact/nickname-view}
;[Group chat] Add participants
{:name :add-participants-toggle-list
:on-focus [:group/add-participants-toggle-list]
;;TODO dyn subtitle
:options {:topBar {:visible false}
:insets {:bottom? true
:top? true}}
:component group-chat/add-participants-toggle-list}
;[Communities] Invite people
{:name :legacy-invite-people-community
;;TODO dyn title
:options {:insets {:bottom? true
:top? true}}
:component communities.invite/legacy-invite}
;QR Scanner
{:name :qr-scanner
;;TODO custom topbar
:options {:topBar {:visible false}
:navigationBar {:backgroundColor colors/black-persist}
:statusBar {:backgroundColor colors/black-persist
:style :light}}
:component qr-scanner/qr-scanner}
;;TODO WHY MODAL?
;[Profile] Notifications settings
{:name :notifications-settings
:options {:topBar (topbar-options :t/notification-settings)
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component notifications-settings/notifications-settings}
;[Browser] New bookmark
{:name :new-bookmark
;;TODO dynamic title
:options {:insets {:bottom? true
:top? true}}
:component bookmarks/new-bookmark}
;Profile
{:name :profile
;;TODO custom toolbar
:options {:insets {:bottom? true
:top? true}}
:component contact/profile-view}
;; BUG REPORT
{:name :bug-report
:options {:insets {:top? true}}
:component bug-report/bug-report}])
:component default-sync-period-settings/default-sync-period-settings}])
@@ -1,30 +0,0 @@
(ns legacy.status-im.ui.screens.stickers.styles
(:require
[legacy.status-im.ui.components.colors :as colors]))
(def screen
{:flex 1})
(defn sticker-image
[sticker-icon-size]
{:margin 16
:width sticker-icon-size
:height sticker-icon-size
:border-radius (/ sticker-icon-size 2)})
(defn price-badge
[not-enough-snt?]
{:background-color (if not-enough-snt? colors/gray colors/blue)
:border-radius 14
:flex-direction :row
:padding-horizontal 6
:height 28
:align-items :center})
(def installed-icon
{:height 28
:width 28
:border-radius 14
:background-color colors/green
:align-items :center
:justify-content :center})
@@ -1,114 +0,0 @@
(ns legacy.status-im.ui.screens.stickers.views
(:require
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.fast-image :as fast-image]
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.stickers.styles :as styles]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.money :as money]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :refer [defview letsubs]]))
(defn cache
[url]
(str url "&download=true"))
(defn- thumbnail-icon
[uri size]
[fast-image/fast-image
{:style {:width size :height size :border-radius (/ size 2)}
:source {:uri (cache uri)}}])
(defn price-badge
[_]
(let [chain (rf/sub [:ethereum/chain-keyword])
balance (rf/sub [:balance-default])]
(fn [{:keys [id price pending owned installed]}]
(let [snt (if (= :mainnet chain) (:SNT balance) (:STT balance))
price (money/bignumber price)
not-enough-snt? (or (nil? snt) (money/equal-to snt 0) (money/greater-than price snt))
free (money/equal-to price 0)]
(if installed
[react/view styles/installed-icon
[icons/icon :main-icons/check {:color colors/white-persist :height 20 :width 20}]]
[react/touchable-highlight
{:on-press #(cond pending nil
(or owned free)
(re-frame/dispatch [:stickers/install-pack id])
not-enough-snt? nil
:else (fn [] (js/alert "feature no longer supported")))}
[react/view (styles/price-badge (and (not (or owned free)) not-enough-snt?))
(when (and (not free) (not owned))
[icons/tiny-icon :tiny-icons/tiny-snt
{:color colors/white-persist :container-style {:margin-right 6}}])
(if pending
[react/activity-indicator
{:animating true
:color colors/white-persist}]
[react/text
{:style {:color colors/white-persist}
:accessibility-label :sticker-pack-price}
(cond owned (i18n/label :t/install)
free (i18n/label :t/free)
:else (str (money/wei-> :eth price)))])]])))))
(defn pack-badge
[{:keys [name author thumbnail preview id] :as pack}]
[react/touchable-highlight {:on-press #(re-frame/dispatch [:navigate-to :stickers-pack {:id id}])}
[react/view {:margin-bottom 27}
[fast-image/fast-image {:style {:height 200 :border-radius 20} :source {:uri (cache preview)}}]
[react/view {:height 64 :align-items :center :flex-direction :row}
[thumbnail-icon thumbnail 40]
[react/view {:padding-horizontal 16 :flex 1}
[react/text {:accessibility-label :sticker-pack-name} name]
[react/text
{:style {:color colors/gray :margin-top 6}
:accessibility-label :sticker-pack-author} author]]
[price-badge pack]]]])
(defview packs
[]
(letsubs [all-packs [:stickers/all-packs]]
[react/view styles/screen
[react/keyboard-avoiding-view {:flex 1}
(if (seq all-packs)
[react/scroll-view {:keyboard-should-persist-taps :handled :style {:padding 16}}
[react/view
(for [pack all-packs]
^{:key pack}
[pack-badge pack])]]
[react/view {:flex 1 :align-items :center :justify-content :center}
[react/activity-indicator {:animating true}]])]]))
(def sticker-icon-size 60)
(defview pack-main
[]
(letsubs [{:keys [name author thumbnail stickers]
:as pack}
[:stickers/get-current-pack]]
[react/keyboard-avoiding-view {:flex 1}
(if pack
[react/view {:flex 1}
[react/view {:height 74 :align-items :center :flex-direction :row :padding-horizontal 16}
[thumbnail-icon thumbnail 64]
[react/view {:padding-horizontal 16 :flex 1}
[react/text {:style {:typography :header}} name]
[react/text {:style {:color colors/gray :margin-top 6}} author]]
[price-badge pack]]
[react/view {:style {:padding-top 8 :flex 1}}
[react/scroll-view {:keyboard-should-persist-taps :handled :style {:flex 1}}
[react/view {:flex-direction :row :flex-wrap :wrap}
(for [{:keys [url]} stickers]
^{:key url}
[fast-image/fast-image
{:style (styles/sticker-image sticker-icon-size)
:source {:uri (cache url)}}])]]]]
[react/view {:flex 1 :align-items :center :justify-content :center}
[react/activity-indicator {:animating true}]])]))
(defview pack
[]
[pack-main])
@@ -2,12 +2,14 @@
(:require-macros [legacy.status-im.utils.views :as views])
(:require
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.constants :as constants]
[utils.i18n :as i18n]))
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(views/defview sync-settings
[]
@@ -17,65 +19,71 @@
use-mailservers?]}
[:profile/profile]
current-mailserver-name [:mailserver/current-name]]
[react/scroll-view
[quo/list-header (i18n/label :t/data-syncing)]
[list.item/list-item
{:size :small
:title (i18n/label :t/mobile-network-settings)
:accessibility-label :notifications-button
:on-press #(re-frame/dispatch [:navigate-to :mobile-network-settings])
:chevron true
:accessory :text
:accessory-text (if syncing-on-mobile-network?
(i18n/label :t/mobile-network-use-mobile)
(i18n/label :t/mobile-network-use-wifi))}]
[list.item/list-item
{:size :small
:title (i18n/label :t/backup-settings)
:accessibility-label :backup-settings-button
:on-press #(re-frame/dispatch [:navigate-to :backup-settings])
:chevron true
:accessory :text
:accessory-text (if backup-enabled?
(i18n/label :t/backup-enabled)
(i18n/label :t/backup-disabled))}]
[list.item/list-item
{:size :small
:title (i18n/label :t/default-sync-period)
:accessibility-label :default-sync-period-button
:on-press #(re-frame/dispatch [:navigate-to :default-sync-period-settings])
:chevron true
:accessory :text
:accessory-text (cond
(= default-sync-period constants/two-mins)
(i18n/label :t/two-minutes)
(or
(nil? default-sync-period)
(= default-sync-period constants/one-day))
(i18n/label :t/one-day)
(= default-sync-period constants/three-days)
(i18n/label :t/three-days)
(= default-sync-period constants/one-week)
(i18n/label :t/one-week)
(= default-sync-period constants/one-month)
(i18n/label :t/one-month))}]
[list.item/list-item
{:size :small
:accessibility-label :offline-messages-settings-button
:title (i18n/label :t/history-nodes)
:on-press #(re-frame/dispatch [:navigate-to :offline-messaging-settings])
:accessory :text
:accessory-text (when use-mailservers? current-mailserver-name)
:chevron true}]
;; TODO(Ferossgp): Devider componemt
[react/view
{:height 1
:background-color colors/gray-lighter
:margin-top 8}]
[quo/list-header (i18n/label :t/device-syncing)]
[list.item/list-item
{:size :small
:title (i18n/label :t/devices)
:accessibility-label :pairing-settings-button
:on-press #(re-frame/dispatch [:navigate-to :installations])
:chevron true}]]))
[:<>
[quo/page-nav
{:type :no-title
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view
[components/list-header (i18n/label :t/data-syncing)]
[list.item/list-item
{:size :small
:title (i18n/label :t/mobile-network-settings)
:accessibility-label :notifications-button
:on-press #(re-frame/dispatch [:navigate-to :mobile-network-settings])
:chevron true
:accessory :text
:accessory-text (if syncing-on-mobile-network?
(i18n/label :t/mobile-network-use-mobile)
(i18n/label :t/mobile-network-use-wifi))}]
[list.item/list-item
{:size :small
:title (i18n/label :t/backup-settings)
:accessibility-label :backup-settings-button
:on-press #(re-frame/dispatch [:navigate-to :backup-settings])
:chevron true
:accessory :text
:accessory-text (if backup-enabled?
(i18n/label :t/backup-enabled)
(i18n/label :t/backup-disabled))}]
[list.item/list-item
{:size :small
:title (i18n/label :t/default-sync-period)
:accessibility-label :default-sync-period-button
:on-press #(re-frame/dispatch [:navigate-to :default-sync-period-settings])
:chevron true
:accessory :text
:accessory-text (cond
(= default-sync-period constants/two-mins)
(i18n/label :t/two-minutes)
(or
(nil? default-sync-period)
(= default-sync-period constants/one-day))
(i18n/label :t/one-day)
(= default-sync-period constants/three-days)
(i18n/label :t/three-days)
(= default-sync-period constants/one-week)
(i18n/label :t/one-week)
(= default-sync-period constants/one-month)
(i18n/label :t/one-month))}]
[list.item/list-item
{:size :small
:accessibility-label :offline-messages-settings-button
:title (i18n/label :t/history-nodes)
:on-press #(re-frame/dispatch [:navigate-to :offline-messaging-settings])
:accessory :text
:accessory-text (when use-mailservers? current-mailserver-name)
:chevron true}]
;; TODO(Ferossgp): Devider componemt
[react/view
{:height 1
:background-color colors/gray-lighter
:margin-top 8}]
[components/list-header (i18n/label :t/device-syncing)]
[list.item/list-item
{:size :small
:title (i18n/label :t/devices)
:accessibility-label :pairing-settings-button
:on-press #(re-frame/dispatch [:navigate-to :installations])
:chevron true}]]]))
+15 -6
View File
@@ -2,6 +2,7 @@
(:require
["react-native" :as react-native]
[clojure.string :as string]
[native-module.utils :as native-utils]
[react-native.platform :as platform]
[taoensso.timbre :as log]
[utils.transforms :as types]))
@@ -543,13 +544,21 @@
(when platform/android?
(.resetKeyboardInputCursor ^js (ui-helper) input selection)))
;; passwords are hashed
(defn reset-password
[key-uid current-password# new-password# callback]
(log/debug "[native-module] change-database-password")
(init-keystore
key-uid
#(.reEncryptDbAndKeystore ^js (encryption) key-uid current-password# new-password# callback)))
([key-uid current-password-hashed new-password-hashed]
(native-utils/promisify-native-module-call reset-password
key-uid
current-password-hashed
new-password-hashed))
([key-uid current-password-hashed new-password-hashed callback]
(log/debug "[native-module] change-database-password")
(init-keystore
key-uid
#(.reEncryptDbAndKeystore ^js (encryption)
key-uid
current-password-hashed
new-password-hashed
callback))))
(defn convert-to-keycard-account
[{:keys [key-uid] :as multiaccount-data} settings current-password# new-password callback]
+23
View File
@@ -0,0 +1,23 @@
(ns native-module.utils
(:require
[clojure.string :as string]
[promesa.core :as promesa]
[utils.transforms :as types]))
(defn- promisify-callback
[res rej]
(fn [result]
(let [native-error (let [{:keys [error]} (types/json->clj result)]
(when-not (string/blank? error)
error))]
(if native-error
(rej (ex-info "Native module call error" {:error native-error}))
(res result)))))
(defn promisify-native-module-call
[f & args]
(promesa/create
(fn [res rej]
(->> [(promisify-callback res rej)]
(concat args)
(apply f)))))
@@ -8,6 +8,7 @@
[react-native.core :as rn]
[react-native.fast-image :as fast-image]
[schema.core :as schema]
[utils.image-server :as image-server]
utils.string))
(defn initials-avatar
@@ -38,23 +39,23 @@
online? true
ring? true}
:as props}]
(let [theme (quo.theme/use-theme)
full-name (or full-name "Your Name")
(let [theme (quo.theme/use-theme)
picture-config (:config profile-picture)
full-name (or full-name "Your Name")
;; image generated with `profile-picture-fn` is round cropped
;; no need to add border-radius for them
outer-styles (style/outer size (not (:fn profile-picture)))
outer-styles (style/outer size (not picture-config))
;; Once image is loaded, fast image re-renders view with the help of reagent atom,
;; But dynamic updates don't work when user-avatar is used inside hole-view
;; https://github.com/status-im/status-mobile/issues/15553
image-view (if static? no-flicker-image/image fast-image/fast-image)
font-size (get-in style/sizes [size :font-size])
amount-initials (if (#{:xs :xxs :xxxs} size) 1 2)
sizes (get style/sizes size)
indicator-color (get (style/indicator-color theme) (if online? :online :offline))
profile-picture-fn (:fn profile-picture)]
image-view (if static? no-flicker-image/image fast-image/fast-image)
font-size (get-in style/sizes [size :font-size])
amount-initials (if (#{:xs :xxs :xxxs} size) 1 2)
sizes (get style/sizes size)
indicator-color (get (style/indicator-color theme) (if online? :online :offline))]
[rn/view {:style outer-styles :accessibility-label :user-avatar}
(if (and full-name (not (or profile-picture-fn profile-picture)))
(if (and full-name (not (or picture-config profile-picture)))
;; this is for things that's not user-avatar but are currently using user-avatar to render
;; the initials e.g. community avatar
[initials-avatar props]
@@ -62,8 +63,9 @@
{:accessibility-label :profile-picture
:style outer-styles
:source
(cond profile-picture-fn
{:uri (profile-picture-fn
(cond picture-config
{:uri (image-server/get-image-uri
picture-config
{:length amount-initials
:full-name full-name
:font-size (:font-size (text/text-style {:size
@@ -76,7 +78,7 @@
:indicator-center-to-edge (when status-indicator?
(:status-indicator-center-to-edge sizes))
:indicator-color indicator-color
:override-theme theme
:theme theme
:color (:color style/initials-avatar-text)
:size (:width outer-styles)
:ring? ring?
@@ -77,7 +77,7 @@
:background-color button-color}
style)}
(when (#{:mention :search :search-with-label :scroll-to-bottom} type)
[icon-view type])
[icon-view type theme])
(when (#{:jump-to :mention :notification-down :notification-up :search-with-label} type)
[text/text
{:weight :medium
@@ -70,6 +70,6 @@
:type (if (= type :error) :error :default)}
(when blur?
{:text-color colors/white-opa-70
:icon-color colors/white-opa-70}))
:icon-color colors/white-opa-40}))
text]
nil)]]))
@@ -1,13 +1,9 @@
(ns quo.components.buttons.wallet-ctas.style)
(def container
{:padding-top 24
:padding-bottom 12
:padding-horizontal 20
:flex-direction :row
:justify-content :center
:flex 1
:max-height 106})
(def inner-container
{:flex-direction :row
:justify-content :center
:flex 1})
(def button-container
{:padding-vertical 8
@@ -24,30 +24,38 @@
:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}} text]])
(defn view
[{:keys [buy-action send-action receive-action bridge-action]}]
[{:keys [buy-action send-action receive-action bridge-action swap-action container-style]}]
(let [theme (quo.theme/use-theme)]
[rn/view {:style style/container}
[action-button
{:icon :i/add
:text (i18n/label :t/buy)
:on-press buy-action
:theme theme
:accessibility-label :buy}]
[action-button
{:icon :i/send
:text (i18n/label :t/send)
:on-press send-action
:theme theme
:accessibility-label :send}]
[action-button
{:icon :i/receive
:text (i18n/label :t/receive)
:on-press receive-action
:theme theme
:accessibility-label :receive}]
[action-button
{:icon :i/bridge
:text (i18n/label :t/bridge)
:on-press bridge-action
:theme theme
:accessibility-label :bridge}]]))
[rn/view {:style container-style}
[rn/view {:style style/inner-container}
[action-button
{:icon :i/add
:text (i18n/label :t/buy)
:on-press buy-action
:theme theme
:accessibility-label :buy}]
[action-button
{:icon :i/send
:text (i18n/label :t/send)
:on-press send-action
:theme theme
:accessibility-label :send}]
[action-button
{:icon :i/receive
:text (i18n/label :t/receive)
:on-press receive-action
:theme theme
:accessibility-label :receive}]
(when swap-action
[action-button
{:icon :i/swap
:text (i18n/label :t/swap)
:on-press swap-action
:theme theme
:accessibility-label :swap}])
[action-button
{:icon :i/bridge
:text (i18n/label :t/bridge)
:on-press bridge-action
:theme theme
:accessibility-label :bridge}]]]))
@@ -8,9 +8,10 @@
[rn/view {:style (assoc container-style :flex-direction :row)}
(map-indexed
(fn [index action]
^{:key index}
[:<>
[channel-action/view action]
(when (not= action (last actions))
[rn/view {:width 16}])])
(when action
^{:key index}
[:<>
[channel-action/view action]
(when (not= action (last actions))
[rn/view {:style {:width 16}}])]))
actions)])
@@ -5,13 +5,13 @@
[react-native.linear-gradient :as linear-gradient]))
(defn view
[{:keys [customization-color opacity container-style height]
[{:keys [customization-color opacity container-style height bottom-color-override]
:or {customization-color :blue}}]
;; `when` added for safety, `linear-gradient` will break if `nil` is passed, the `:or`
;; destructuring won't work because it's only applied when the `:customization-color` key is
;; non-existent. While deleting an account the key exists and has a `nil` value.
(let [color-top (colors/resolve-color customization-color 50 20)
color-bottom (colors/resolve-color customization-color 50 0)]
color-bottom (or bottom-color-override (colors/resolve-color customization-color 50 0))]
(when (and color-top color-bottom)
[linear-gradient/linear-gradient
{:accessibility-label :gradient-cover
@@ -40,7 +40,7 @@
(defn recovery-phrase-input
[{:keys [customization-color blur? on-focus on-blur mark-errors?
error-pred-current-word error-pred-written-words word-limit
container-style]
container-style placeholder-text-color]
:or {customization-color :blue
word-limit ##Inf
error-pred-current-word (constantly false)
@@ -62,7 +62,8 @@
[rn/text-input
(merge {:accessibility-label :recovery-phrase-input
:style (style/input theme)
:placeholder-text-color (style/placeholder-color state theme blur?)
:placeholder-text-color (or placeholder-text-color
(style/placeholder-color state theme blur?))
:cursor-color (style/cursor-color customization-color theme)
:keyboard-appearance theme
:multiline true
+17 -16
View File
@@ -29,22 +29,23 @@
:resize-mode :cover}]))
(defn- content
[{:keys [title body]} theme]
[rn/view {:style style/content-container}
[text/text
{:accessibility-label :title
:size :paragraph-2
:weight :semi-bold
:number-of-lines 1
:style (style/title theme)}
title]
[text/text
{:accessibility-label :body
:size :paragraph-2
:weight :medium
:number-of-lines 1
:style (style/body theme)}
body]])
[{:keys [title body]}]
(let [theme (quo.theme/use-theme)]
[rn/view {:style style/content-container}
[text/text
{:accessibility-label :title
:size :paragraph-2
:weight :semi-bold
:number-of-lines 1
:style (style/title theme)}
title]
[text/text
{:accessibility-label :body
:size :paragraph-2
:weight :medium
:number-of-lines 1
:style (style/body theme)}
body]]))
(defn- clear-button
[{:keys [on-press]}]
@@ -57,9 +57,9 @@
[rn/view {:style (style/author color)}]]])])
(defn- f-animated-skeleton-view
[{:keys [style color skeleton-height animated? translate-x window-width theme] :as data}]
(let [loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60 theme)]
[{:keys [style color skeleton-height animated? translate-x window-width] :as data}]
(let [theme (quo.theme/use-theme)
loading-color (colors/theme-colors colors/neutral-10 colors/neutral-60 theme)]
(rn/use-effect
(fn []
(when-not animated?
@@ -8,6 +8,7 @@
[quo.components.notifications.activity-log.style :as style]
[quo.components.tags.status-tags :as status-tags]
[quo.foundations.colors :as colors]
[quo.theme]
[react-native.core :as rn]
[utils.i18n :as i18n]))
@@ -144,12 +145,13 @@
label]))
(defmethod footer-item-view :status
[{:keys [label subtype blur?]} _ _]
[status-tags/status-tag
{:size :small
:label label
:status {:type subtype}
:blur? blur?}])
[{:keys [label subtype blur? theme]} _ _]
[quo.theme/provider theme
[status-tags/status-tag
{:size :small
:label label
:status {:type subtype}
:blur? blur?}]])
(defn- footer
[{:keys [replying? items] :as props}]
@@ -0,0 +1,6 @@
(ns quo.components.password.password-tips.style)
(def password-tips
{:flex-direction :row
:margin-horizontal 20
:justify-content :space-between})
@@ -0,0 +1,30 @@
(ns quo.components.password.password-tips.view
(:require [quo.components.password.password-tips.style :as style]
[quo.components.password.tips.view :as tips]
[react-native.core :as rn]
[schema.core :as schema]
[utils.i18n :as i18n]))
(def ?schema
[:=>
[:cat
[:map {:closed true}
[:lower-case? :boolean]
[:upper-case? :boolean]
[:numbers? :boolean]
[:symbols? :boolean]]
[:any]]])
(defn- view-internal
[{:keys [lower-case? upper-case? numbers? symbols?]}]
[rn/view {:style style/password-tips}
[tips/view {:completed? lower-case?}
(i18n/label :t/password-creation-tips-1)]
[tips/view {:completed? upper-case?}
(i18n/label :t/password-creation-tips-2)]
[tips/view {:completed? numbers?}
(i18n/label :t/password-creation-tips-3)]
[tips/view {:completed? symbols?}
(i18n/label :t/password-creation-tips-4)]])
(def view (schema/instrument #'view-internal ?schema))
@@ -79,7 +79,7 @@
nil))
(defn label-component
[{:keys [label label-props blur? theme preview-size]}]
[{:keys [label label-props label-icon-props blur? theme preview-size]}]
[rn/view {:accessibility-label :label-component}
(case label
:text [text/text
@@ -89,6 +89,7 @@
{:style (style/label-dot label-props)}]
:preview [preview-list/view {:type (:type label-props) :size (or preview-size :size-24)}
(:data label-props)]
:icon [icon/icon label-props label-icon-props]
nil)])
(defn action-component
@@ -108,7 +109,7 @@
[{:keys [title on-press action-props accessibility-label blur? container-style] :as props}]
[rn/pressable
{:style (merge style/container container-style)
:on-press on-press
:on-press (or on-press (:on-change action-props))
:accessibility-label accessibility-label}
[rn/view {:style (style/left-sub-container props)}
[image-component props]
@@ -25,6 +25,11 @@
[:type [:= :profile]]
[:profile-picture [:maybe :schema.quo/profile-picture-source]]])
(def ?channel
[:map
[:type [:= :channel]]
[:emoji {:optional true} [:maybe ?emoji]]])
(def ?wallet
[:map
[:type [:= :wallet]]
@@ -60,6 +65,7 @@
[:catn
[:props
[:multi {:dispatch :type}
[:channel [:merge ?base ?channel]]
[:profile [:merge ?base ?profile]]
[:wallet [:merge ?base ?address-base ?wallet]]
[:saved-address [:merge ?base ?address-base ?saved-address]]
@@ -2,6 +2,7 @@
(:require [clojure.set]
[oops.core :as oops]
[quo.components.avatars.account-avatar.view :as account-avatar]
[quo.components.avatars.channel-avatar.view :as channel-avatar]
[quo.components.avatars.user-avatar.view :as user-avatar]
[quo.components.avatars.wallet-user-avatar.view :as wallet-user-avatar]
[quo.components.buttons.button.view :as button]
@@ -131,8 +132,22 @@
{:size :size-32
:customization-color customization-color
:full-name full-name}]
:channel [channel-avatar/view
{:size :size-32
:emoji emoji
:locked-state :not-set
:customization-color customization-color
:full-name full-name}]
nil))
(defn- has-header?
[share-qr-type]
(case share-qr-type
(:wallet
:watched-address
:saved-address) true
false))
(defn- share-qr-code
[{:keys [share-qr-type qr-image-uri component-width customization-color full-name
profile-picture emoji on-share-press address]
@@ -153,7 +168,7 @@
{:color colors/white-opa-40
:container-style style/watched-account-icon}])]
[share-button {:on-press on-share-press}]]
(when (not= share-qr-type :profile)
(when (has-header? share-qr-type)
[header props])
[quo.theme/provider :light
[qr-code/view
@@ -163,6 +178,7 @@
:profile :profile
(:watched-address :wallet) :wallet-account
:saved-address :saved-address
:channel :channel
nil)
:customization-color customization-color
:full-name full-name
@@ -37,18 +37,17 @@
[{:keys [title title-accessibility-label input counter-top counter-bottom
title-right title-right-props]
avatar-props :avatar}]
(let [avatar-props (when avatar-props
(assoc avatar-props :size :size-32))
title-props (assoc title-right-props
:title title
:right title-right
:accessibility-label title-accessibility-label)]
(let [title-props (assoc title-right-props
:title title
:right title-right
:accessibility-label title-accessibility-label)]
[rn/view {:style style/header}
[rn/view {:style style/header-title}
(when avatar-props
(if (:group? avatar-props)
[group-avatar/view avatar-props]
[channel-avatar/view avatar-props]))
(let [avatar-props (assoc avatar-props :size :size-32)]
(if (:group? avatar-props)
[group-avatar/view avatar-props]
[channel-avatar/view avatar-props])))
[standard-title/view title-props]]
(when (= input :recovery-phrase)
[header-counter counter-top counter-bottom])]))
@@ -62,7 +62,7 @@
[icons/icon
:i/keycard-card
{:color secondary-color}])]]
(when (= :derivation-path type)
(when (and on-press (= :derivation-path type))
[rn/pressable
{:accessibility-label :derivation-path-button
:on-press on-press
@@ -3,12 +3,9 @@
[quo.foundations.colors :as colors]))
(def account-overview-wrapper
{:padding-top 24
:padding-horizontal 20
:padding-bottom 20
:height 130
:align-items :center
:justify-content :center})
{:height 110
:align-items :center
:justify-content :center})
(defn account-name
[color]
@@ -96,12 +96,12 @@
(defn- view-internal
[{:keys [state account time-frame time-frame-string time-frame-to-string account-name current-value
percentage-change currency-change metrics customization-color]
percentage-change currency-change metrics customization-color container-style]
:or {customization-color :blue}}]
(let [theme (quo.theme/use-theme)
time-frame-string (time-string time-frame time-frame-string)
up? (= metrics :positive)]
[rn/view {:style style/account-overview-wrapper}
[rn/view {:style (merge container-style style/account-overview-wrapper)}
(if (= :loading state)
[loading-state (colors/theme-colors colors/neutral-5 colors/neutral-90 theme)]
[rn/view
@@ -30,7 +30,7 @@
[{:keys [network status amount container-style on-press] :as args}]
(let [theme (quo.theme/use-theme)]
(if (= status :add)
[network-bridge-add args]
[network-bridge-add (assoc args :theme theme)]
[rn/pressable
{:style (merge (style/container network status theme) container-style)
:accessible true
@@ -1,6 +1,6 @@
(ns quo.components.wallet.network-link.schema)
(def ^:private ?networks [:enum :optimism :arbitrum :ethereum])
(def ^:private ?networks [:enum :optimism :arbitrum :ethereum :mainnet])
(def ?schema
[:=>
@@ -25,10 +25,10 @@
(def link-1x-container
{:flex 1
:height 58
:height 57
:justify-content :center})
(def link-2x-container
{:flex 1
:height 114
:height 112
:justify-content :center})
@@ -24,33 +24,50 @@
:strokeWidth "1"}]])
(defn- line
[stroke width]
[{:keys [stroke-color source-color destination-color width theme]}]
[svg/svg
{:height "10"
:width "100%"
:view-box (str "0 0 " width " 10")}
[svg/path
{:d (str "M0,5 L" width ",5")
:stroke stroke
:stroke-width "1"}]])
:stroke stroke-color
:stroke-width "1"}]
[svg/defs
[svg/linear-gradient
{:id "gradient"
:x1 "0%"
:x2 "100%"
:y1 "0%"
:y2 "0%"
:gradient-units "objectBoundingBox"}
[svg/stop {:offset "0%" :stop-color (colors/resolve-color source-color theme)}]
[svg/stop {:offset "100%" :stop-color (colors/resolve-color destination-color theme)}]]]])
(defn link-linear
[{:keys [source]}]
[{:keys [source destination]}]
(let [theme (quo.theme/use-theme)
[container-width
set-container-width] (rn/use-state 100)
stroke-color (colors/resolve-color source theme)
stroke-color "url(#gradient)"
source-color (colors/resolve-color source theme)
destination-color (colors/resolve-color destination theme)
fill-color (colors/theme-colors colors/white colors/neutral-90 theme)
on-layout (rn/use-callback #(set-container-width
(oget % :nativeEvent :layout :width)))]
[rn/view
{:style style/link-linear-container
:on-layout on-layout}
[line stroke-color container-width]
[line
{:stroke-color stroke-color
:source-color source-color
:destination-color destination-color
:width container-width
:theme theme}]
[rn/view {:style style/left-circle-container}
[circle fill-color stroke-color]]
[circle fill-color source-color]]
[rn/view {:style style/right-circle-container}
[circle fill-color stroke-color]]]))
[circle fill-color destination-color]]]))
(defn link-1x
[{:keys [source destination]}]
@@ -32,18 +32,17 @@
(def status-icon
{:pending :i/pending-state
:confirmed :i/positive-state
:finalised :i/diamond-blue
:finalised :i/diamond
:failed :i/negative-state})
(defn transaction-header
[{:keys [transaction
timestamp
counter
theme
blur?]
:or {transaction :receive
counter 1}}]
counter 1}}
theme]
[rn/view
{:style style/transaction-header-container}
[text/text
@@ -66,9 +65,10 @@
timestamp]]])
(defn transaction-icon-view
[{:keys [theme blur? transaction status]
[{:keys [blur? transaction status]
:or {transaction :receive
status :pending}}]
status :pending}}
theme]
[rn/view {:style style/icon-container}
[hole-view/hole-view
{:style (style/icon-hole-view theme blur?)
@@ -118,10 +118,10 @@
:on-press-out on-press-out}
[rn/view
{:style {:flex-direction :row}}
[transaction-icon-view props]
[transaction-icon-view props theme]
[rn/view
{:style style/content-container}
[transaction-header props]
[transaction-header props theme]
[rn/view {:style style/content-line}
(when first-tag [prop-tag first-tag blur?])
(when second-tag-prefix [prop-text second-tag-prefix theme])
+2
View File
@@ -111,6 +111,7 @@
quo.components.numbered-keyboard.numbered-keyboard.view
quo.components.onboarding.small-option-card.view
quo.components.overlay.view
quo.components.password.password-tips.view
quo.components.password.tips.view
quo.components.profile.collectible-list-item.view
quo.components.profile.collectible.view
@@ -356,6 +357,7 @@
;;;; Password
(def tips quo.components.password.tips.view/view)
(def password-tips quo.components.password.password-tips.view/view)
;;;; Profile
(def collectible quo.components.profile.collectible.view/collectible)
+9 -6
View File
@@ -7,21 +7,24 @@
(defn show-image-picker
([callback]
(show-image-picker callback nil))
(show-image-picker callback nil nil))
([callback
{:keys [media-type]
:or {media-type "any"}
:as props}]
:as props}
finally-callback]
(-> ^js image-picker
(.openPicker (clj->js (merge {:mediaType media-type} props)))
(.then #(callback (.-path ^js %)))
(.catch show-access-error))))
(.catch show-access-error)
(.finally finally-callback))))
(defn show-image-picker-camera
([callback]
(show-image-picker-camera callback nil))
([callback props]
(show-image-picker-camera callback nil nil))
([callback props finally-callback]
(-> ^js image-picker
(.openCamera (clj->js props))
(.then #(callback (.-path ^js %)))
(.catch show-access-error))))
(.catch show-access-error)
(.finally finally-callback))))
+54 -7
View File
@@ -3,7 +3,9 @@
[quo.foundations.colors :as colors]
[schema.registry :as registry]))
(def ^:private ?profile-picture-fn-params
(def ^:private ?customization-color (into [:enum :primary] colors/account-colors))
(def ^:private ?profile-picture-options
[:map
[:length :int]
[:full-name :string]
@@ -11,22 +13,67 @@
[:indicator-size {:optional true} [:maybe :int]]
[:indicator-color {:optional true} [:maybe :string]]
[:indicator-center-to-edge {:optional true} [:maybe :int]]
[:override-theme :schema.common/theme]
[:background-color :string]
[:theme :schema.common/theme]
[:color :string]
[:size :int]
[:ring? :boolean]
[:ring-width :int]])
(def ^:private ?account-image-uri-options
[:map
[:port :int]
[:ratio :double]
[:key-uid :string]
[:image-name :string]
[:theme :schema.common/theme]
[:override-ring? [:maybe :boolean]]])
(def ^:private ?initials-image-uri-options
[:map
[:port :int]
[:ratio :double]
[:uppercase-ratio :double]
[:font-file :string]
[:theme :schema.common/theme]
[:customization-color ?customization-color]
[:key-uid {:optional true} [:maybe :string]]
[:public-key {:optional true} [:maybe :string]]
[:override-ring? {:optional true} [:maybe :boolean]]])
(def ^:private ?contact-image-uri-options
[:map
[:port :int]
[:clock :int]
[:ratio :double]
[:image-name :string]
[:public-key :string]
[:theme :schema.common/theme]
[:override-ring? [:maybe :boolean]]])
(def ^:private ?image-uri-config
[:multi {:dispatch :type}
[:account
[:map
[:type [:= :account]]
[:options ?account-image-uri-options]]]
[:contact
[:map
[:type [:= :contact]]
[:options ?contact-image-uri-options]]]
[:initials
[:map
[:type [:= :initials]]
[:options ?initials-image-uri-options]]]])
(def ^:private ?profile-picture-source
[:or
:schema.common/image-source
[:map
[:fn [:=> [:cat ?profile-picture-fn-params] :string]]]])
(def ^:private ?customization-color (into [:enum] colors/account-colors))
[:config ?image-uri-config]]])
(defn register-schemas
[]
(registry/register ::customization-color ?customization-color)
(registry/register ::image-uri-config ?image-uri-config)
(registry/register ::profile-picture-source ?profile-picture-source)
(registry/register ::customization-color ?customization-color))
(registry/register ::profile-picture-options ?profile-picture-options))
@@ -22,6 +22,18 @@
{:db (dissoc db :alert-banners)
:hide-alert-banner [(:view-id db) (:theme db)]})
;; Hide/Unhide will only toggle the visibility of alert banners without removing them.
;; Required for ios image picker, which doesn't allow top margin
(defn hide-alert-banners
[{:keys [db]}]
{:db (assoc db :alert-banners/hide? true)})
(defn unhide-alert-banners
[{:keys [db]}]
{:db (dissoc db :alert-banners/hide?)})
(re-frame/reg-event-fx :alert-banners/add add-alert-banner)
(re-frame/reg-event-fx :alert-banners/remove remove-alert-banner)
(re-frame/reg-event-fx :alert-banners/remove-all remove-all-alert-banners)
(re-frame/reg-event-fx :alert-banners/hide hide-alert-banners)
(re-frame/reg-event-fx :alert-banners/unhide unhide-alert-banners)
+25 -23
View File
@@ -39,32 +39,34 @@
(defn view
[]
(let [banners (rf/sub [:alert-banners])
hide-banners? (rf/sub [:alert-banners/hide?])
theme (quo.theme/use-theme)
banners-count (count banners)
alert-banner (:alert banners)
error-banner (:error banners)
safe-area-top (safe-area/get-top)
colors-map (get-colors-map theme)]
[hole-view/hole-view
;; required for fix flicker issue https://github.com/status-im/status-mobile/issues/19490
{:style {:padding-bottom 1}
:holes [{:x 0
:y (+ safe-area-top (* constants/alert-banner-height banners-count))
:width (:width (rn/get-window))
:height constants/alert-banner-height
:borderRadius style/border-radius}]}
[rn/view {:style {:background-color colors/neutral-100}}
[rn/view
{:style {:height safe-area-top
:background-color (get-in colors-map
[(if error-banner :error :alert) :background-color])}}]
(when error-banner
[banner
(assoc error-banner
:colors-map colors-map
:second-banner? false)])
(when alert-banner
[banner
(assoc alert-banner
:colors-map colors-map
:second-banner? (= 2 banners-count))])]]))
(when-not hide-banners?
[hole-view/hole-view
;; required for fix flicker issue https://github.com/status-im/status-mobile/issues/19490
{:style {:padding-bottom 0.5}
:holes [{:x 0
:y (+ safe-area-top (* constants/alert-banner-height banners-count))
:width (:width (rn/get-window))
:height constants/alert-banner-height
:borderRadius style/border-radius}]}
[rn/view {:style {:background-color colors/neutral-100}}
[rn/view
{:style {:height safe-area-top
:background-color (get-in colors-map
[(if error-banner :error :alert) :background-color])}}]
(when error-banner
[banner
(assoc error-banner
:colors-map colors-map
:second-banner? false)])
(when alert-banner
[banner
(assoc alert-banner
:colors-map colors-map
:second-banner? (= 2 banners-count))])]])))
@@ -8,6 +8,7 @@
(defn sheet
[{:keys [max-height]}]
{:position :absolute
:overflow :hidden
:bottom 0
:left 0
:right 0
@@ -78,9 +78,10 @@
(defn add-character
[state character]
(when (can-add-character? state character)
(if (can-add-character? state character)
(set-input-value state
(normalize-value-as-numeric (input-value state) character))))
(normalize-value-as-numeric (input-value state) character))
state))
(defn delete-last
[state]
@@ -1,4 +1,4 @@
(ns status-im.contexts.onboarding.enter-seed-phrase.style
(ns status-im.common.enter-seed-phrase.style
(:require
[react-native.safe-area :as safe-area]))
@@ -1,4 +1,4 @@
(ns status-im.contexts.onboarding.enter-seed-phrase.view
(ns status-im.common.enter-seed-phrase.view
(:require
[clojure.string :as string]
[legacy.status-im.ethereum.mnemonic :as mnemonic]
@@ -7,8 +7,8 @@
[react-native.core :as rn]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[status-im.common.enter-seed-phrase.style :as style]
[status-im.constants :as constants]
[status-im.contexts.onboarding.enter-seed-phrase.style :as style]
[utils.i18n :as i18n]
[utils.re-frame :as rf]
[utils.security.core :as security]))
@@ -63,6 +63,7 @@
[quo/recovery-phrase-input
{:accessibility-label :passphrase-input
:placeholder (i18n/label :t/seed-phrase-placeholder)
:placeholder-text-color colors/white-opa-30
:auto-capitalize :none
:auto-correct false
:auto-focus true
@@ -86,7 +87,7 @@
(take 7)))
(defn screen
[]
[recovering-keypair?]
(reagent/with-let [keyboard-shown? (reagent/atom false)
keyboard-show-listener (.addListener rn/keyboard
"keyboardDidShow"
@@ -103,9 +104,14 @@
(reset! seed-phrase new-phrase))
on-submit (fn []
(swap! seed-phrase clean-seed-phrase)
(rf/dispatch [:onboarding/seed-phrase-entered
(security/mask-data @seed-phrase)
set-invalid-seed-phrase]))]
(if recovering-keypair?
(rf/dispatch [:wallet/seed-phrase-entered
(security/mask-data
@seed-phrase)
set-invalid-seed-phrase])
(rf/dispatch [:onboarding/seed-phrase-entered
(security/mask-data @seed-phrase)
set-invalid-seed-phrase])))]
(let [words-coll (mnemonic/passphrase->words @seed-phrase)
last-word (peek words-coll)
pick-suggested-word (fn [pressed-word]
@@ -147,7 +153,7 @@
[rn/view {:style style/keyboard-container}
[quo/predictive-keyboard
{:type suggestions-state
:blur? true
:blur? (not recovering-keypair?)
:text suggestions-text
:words (keyboard-suggestions last-word)
:on-press pick-suggested-word}]])])
@@ -155,14 +161,16 @@
(.remove keyboard-show-listener)
(.remove keyboard-hide-listener))))
(defn enter-seed-phrase
(defn view
[]
(let [{navigation-bar-top :top} (safe-area/get-insets)]
[rn/view {:style style/full-layout}
[rn/keyboard-avoiding-view {:style style/page-container}
[quo/page-nav
{:margin-top navigation-bar-top
:background :blur
:icon-name :i/arrow-left
:on-press #(rf/dispatch [:navigate-back])}]
[screen]]]))
(fn []
(let [{:keys [recovering-keypair?]} (rf/sub [:get-screen-params])]
[rn/view {:style style/full-layout}
[rn/keyboard-avoiding-view {:style style/page-container}
[quo/page-nav
{:margin-top navigation-bar-top
:background :blur
:icon-name (if recovering-keypair? :i/close :i/arrow-left)
:on-press #(rf/dispatch [:navigate-back])}]
[screen recovering-keypair?]]]))))
@@ -3,8 +3,12 @@
[status-im.common.floating-button-page.view :as floating-button-page]
[test-helpers.component :as h]))
(def sub-mocks {:alert-banners/top-margin 0})
(h/describe "floating button page"
(h/test "renders with a header and standard button"
(h/setup-subs sub-mocks)
(h/render [floating-button-page/view
{:header [quo/page-nav
{:type :title-description
@@ -18,6 +22,7 @@
(h/is-truthy (h/get-by-text "floating button page")))
(h/test "renders with a header and a slide button"
(h/setup-subs sub-mocks)
(h/render [floating-button-page/view
{:header [quo/page-nav
{:type :title-description
@@ -8,7 +8,8 @@
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[status-im.common.floating-button-page.floating-container.view :as floating-container]
[status-im.common.floating-button-page.style :as style]))
[status-im.common.floating-button-page.style :as style]
[utils.re-frame :as rf]))
(defn- show-background
[{:keys [window-height keyboard-height footer-container-height content-scroll-y
@@ -82,14 +83,15 @@
set-content-y-scroll (fn [event]
(reset! content-scroll-y
(oops/oget event "nativeEvent.contentOffset.y")))]
(let [keyboard-shown? (if platform/ios? @keyboard-will-show? @keyboard-did-show?)
show-background? (show-background {:window-height window-height
:footer-container-height @footer-container-height
:keyboard-height @keyboard-height
:content-scroll-y @content-scroll-y
:content-container-height @content-container-height
:header-height @header-height
:keyboard-shown? keyboard-shown?})]
(let [keyboard-shown? (if platform/ios? @keyboard-will-show? @keyboard-did-show?)
footer-container-padding (+ footer-container-padding (rf/sub [:alert-banners/top-margin]))
show-background? (show-background {:window-height window-height
:footer-container-height @footer-container-height
:keyboard-height @keyboard-height
:content-scroll-y @content-scroll-y
:content-container-height @content-container-height
:header-height @header-height
:keyboard-shown? keyboard-shown?})]
[:<>
(when gradient-cover?
[quo/gradient-cover {:customization-color customization-color}])

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