Compare commits

..
Author SHA1 Message Date
Mohsen 21ebd4d930 feat_: add support for xcode 16.1 2024-12-10 13:23:26 -03:00
Brian Sztamfater 40c36c30e6 feat(wallet): simplify send flow ux
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-12-09 23:43:44 -03:00
Ulises ManuelandYevheniia Berdnyk e85bc539d3 feat(onboarding): Remove color and username steps (#21715)
* Remove password disclaimer, update copy and simplify implementation

* Remove non-existing wallet event

* Skip profile configuration for the "create profile" onboarding flow

* Include flow for new profiles when another profile already exists

* Add explanation about temp username

* Point 20 to a constant

* Simplify create profile password screen

* Fix password creation screen jump on mount

* e2e: updated tests

* Completely remove the "create profile" onboarding screen

* e2e: updated tests with recovering user

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-12-09 13:55:47 -06:00
Mohamed Javid c26d298573 fix_: slider reset in standard authentication (#21779)
This commit resets the slider-button after the completion of slider in standard authentication.


Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-10 00:56:57 +05:30
Mohamed Javid cdde36ca28 fix(wallet)_: logic for calculating zero balance (#21777)
This commit fixes logic to calculate whether the user has zero balance in all non-watched accounts.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-10 00:21:00 +05:30
Mohamed Javid 3c3ef20769 fix(wallet)_: tx data cleanup after send or bridge tx (#21770)
This commit fixes the token/networks going to zero/disabled in the "Bridge to" screen when the user navigates back from the input screen.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-09 20:02:48 +05:30
Alexander 2150f6db48 Bump release to 2.32.0 (#21773) 2024-12-09 12:26:51 +01:00
Sean Hagstrom 10101a23e6 Feature: add "close community" action to opened/spectated communities (#21687)
This change adds a new action to the action-drawer for opened communities. Now opened communities can be closed by users by pressing on the "Close community" action. Note, that this action will only be available to communities displayed in communities list under the opened tab.
2024-12-06 09:50:40 -08:00
Brian Sztamfater f75fff9dd8 fix_: sometimes balances are not updated until relogin (#21748)
https://github.com/status-im/status-go/compare/a61f28bf...5371520f

Signed-off-by: Brian Sztamfater <brian@status.im>
2024-12-06 13:32:05 -03:00
frank 9aa31ddf02 fix: no peers available supporting LightPush protocol (#21730)
When network is restored from disabled state.
2024-12-06 11:09:22 -03:00
Mohamed Javid 9a61b30c50 feat(wallet)_: keycard support for swap and approval (#21764)
This commit adds support for Keycard in the swap flow

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-06 17:55:36 +05:30
Volodymyr Kozieiev f1652ee2c4 Change value that triggers routes requesting in send screen (#21751) 2024-12-06 11:43:02 +00:00
Mohsen e1d2b9b1c1 [#21709] fix: big number issue in swap max value (#21752) 2024-12-06 12:48:24 +03:00
frank e60c20bc10 feat(websocket): add ping/pong keep-alive mechanism for iOS websocket (#21733)
Add WebSocket keep-alive mechanism using ping/pong frames to maintain connection stability:
- Add ping timer that sends ping every 30 seconds
- Automatically reconnect if ping fails
- Properly cleanup timer on disconnect
- Add logging for StatusGo server requests

This helps prevent connection timeouts and ensures timely detection of connection issues.
2024-12-06 15:37:17 +08:00
Icaro Motta 1391c48e39 chore(analytics): Improve tracking of login and onboarding completion events (#21760)
Improves tracking of login and successful onboarding completion according to
requests from non-technical analytics users and to synchronize with desktop. We
now publish two new events user-logged-in and onboarding-completed.

Fixes https://github.com/status-im/status-mobile/issues/21679

Areas that may be impacted: no impact is expected whatsoever, but login and
onboarding code were lightly touched.

- Event user-logged-in is always published, whenever the profile login is
  successful. If the user created a profile, we publish both
  onboarding-completed and user-logged-in.
- Event onboarding-completed is published if the user created a profile,
  recovered using seed phrase or paired devices successfully.
2024-12-05 18:40:10 -03:00
Mohamed Javid 2343d9be1e fix(wallet)_: default token image fallback (#21762)
This commit replaces the fallback for an unknown token image (where we display the first letter of the token name) with the default token image

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-05 20:56:38 +05:30
Parvesh Monu 7b85bfbd53 Remove elipses from preparing status label (#21757) 2024-12-05 16:01:23 +05:30
Volodymyr Kozieiev 27bfbea6bd Fix sending collectible by building transaction before signing (#21744)
* Fix sending collectible by building transaction before signing
2024-12-05 10:19:26 +00:00
Lungu Cristian caaff74efe Fix div error after amount is set as fiat (#21732)
* fix: cleanup send state on input unmount

* fix: switching default val to fiat filled input with 0.00
2024-12-05 09:53:57 +02:00
Brian Sztamfater 6ce58db7b9 fix_: incorrect USDT estimation and decimals on swap on arbitrum network (#21741)
https://github.com/status-im/status-go/compare/896eb635...a61f28bf

Signed-off-by: Brian Sztamfater <brian@status.im>
2024-12-04 14:34:01 -03:00
Sean Hagstrom fe788c3c26 feature: display registered profile keycards inside keycard settings (#21739)
This change adds support for displaying the keycards inside the keycards settings screen. Note, that the keycards that are displayed are the keycards that are associated to the user's profile keypair.
2024-12-04 09:06:19 -08:00
Yevheniia Berdnyk 1faa2e8f88 e2e: added key pair test 2024-12-04 16:55:39 +02:00
Parvesh Monu 2b7430e008 Update onboarding carousel and share usage screen (#21742) 2024-12-04 20:19:23 +05:30
Sean Hagstrom 62c8e73409 fix: avoid re-renders inside contact-list for new-chat sheet (#21640)
This change fixes some of the re-rendering issues that occur inside the contact list when creating a new chat. Most important is that we avoid extra re-renders by configuring the flat-list with stable props. And we also avoid re-rendering avatar images each time the avatar component re-renders.
2024-12-04 06:30:10 -08:00
Mohamed Javid e0e9ab9adb fix(wallet)_: token decimals in activities (#21745)
This commit fixes certain asset values that are 0 in wallet activities.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-04 19:23:48 +05:30
Siddarth Kumar b618f73063 ios: explicitly specify path to fetch CryptoSwift (#21750)
This commit explicitly specifies location and version of `CryptoSwift` pod in attempt to fix errors like this in CI.
```
None of your spec sources contain a spec satisfying the dependencies: `CryptoSwift (= 1.8.0), CryptoSwift`.
```
2024-12-04 19:05:43 +05:30
Mohamed Javid 8a88aac34d fix(wallet)_: wallet card flexible width (#21746)
This commit 
 - adds container-style prop to the wallet card component 
 - makes the Buy and Receive CTAs (cards) width flexible as we display two cards, and it needs to fill the screen width.

NOTE: The component's fixed width is 161, but in certain phones, it's small and does not fill the screen's whole width.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-03 23:50:17 +05:30
Mohsen 32ccca0912 [#21323] fix: wrong networks when asset not available in default account (#21689) 2024-12-03 17:24:30 +03:00
flexsurfer 2be78041e2 [#21669] [iOS] "Oops, this is not a Keycard" screen appears if user didn't scan his card properly (#21737) 2024-12-03 14:32:37 +01:00
Lungu Cristian d941029661 Fix swaps received value UI bug (#21724)
* fix: use text instead of input for received value

* fix: using input-disabled? instead of pay?
2024-12-03 11:49:15 +02:00
Lungu Cristian f7c930964c Show Swaps fee accurately as <0.01 when very small (#21726)
* fix: use full fiat value when converting from crypto

* test: fixed tests
2024-12-03 11:21:45 +02:00
Lungu Cristian 0c25b77e54 fix: show accurate approval fee for swaps (#21718) 2024-12-03 10:28:23 +02:00
Icaro Motta d0deb94bf3 fix(chats): Fix chats leaking to other profile (#21713)
Fixes a regression introduced in PR
https://github.com/status-im/status-mobile/pull/21634.

What's important is that the fix for chats leaking to other profiles was a
client-side bug, thus not coming from status-go, thus no private data was
leaking to other profiles. This PR keeps the existing workaround to memoize
chats in the home screen.

Fixes https://github.com/status-im/status-mobile/issues/21696
2024-12-02 23:27:37 -03:00
Icaro Motta 3a444f40f3 fix(group-chat): Missing group chat name when clearing history (#21684)
Fix missing group name when user chooses drawer option to clear chat history
from within the group chat screen.

Fixes https://github.com/status-im/status-mobile/issues/21639
2024-12-02 22:01:53 -03:00
Icaro Motta 7537c6b033 chore: Use en-US as default locale for F-Droid (#21714)
In Google Play and App Store, it is desirable to use en-GB (English UK) as the
default locale for legal reasons. We heard from F-Droid folks that en-GB is not
as well supported as en-US
https://github.com/status-im/status-mobile/issues/21665.

In this PR we go back to en-US as the default locale in fastlane and update the
text for English (UK) standards. Google Play and App Store shouldn’t be affected
and will use en-GB as the default locale.

Fixes https://github.com/status-im/status-mobile/issues/21665
2024-12-02 21:49:46 -03:00
Yevheniia Berdnyk e67f6c1cd3 e2e: mark skipped tests in TR 2024-12-02 20:13:35 +02:00
Tetiana Churikova 1d7eb49c57 e2e: remove xfail for staging fleet (#21681) 2024-12-02 18:33:48 +01:00
Mohamed Javid f6dfc64567 feat(wallet)!: Activity - a more reliable update (#21596)
This commit:

- Removes the usage of deprecated "wallet_filterActivityAsync RPC" and updates it to "wallet_startActivityFilterSessionV2" with other supporting activity filter session RPCs
- Removes deprecated "wallet_checkRecentHistoryForChainIDs" RPC as we no longer support past transaction history
- Added support for Bridge, Swap and Approval activities
- Added context for the sender and receiver if the address is known (own accounts or saved addresses)
- Added support for viewing, copying and sharing links to TX details on block explorer

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-12-02 21:35:05 +05:30
flexsurfer f08ac94596 [#21686] User can not sign transactions after Login/Sign up flows using Keycard (#21699) 2024-12-02 14:57:03 +01:00
Mohamed Javid 52a8f8fc22 feat(wallet)_: Show buy and receive cta on zero balance (#21690)
This commit:

- adds wallet-card component
- adds Buy and Receive CTAs above the assets list in the wallet home if the balance is zero

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-11-30 00:03:29 +05:30
Brian Sztamfater 6859fb8f8e fix(swap): optimize endpoints calls (#21549)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-11-29 13:21:44 -03:00
frank f45f96975e refactor_: rename LOG_REQUEST_GO to API_LOGGING_ENABLED (#21677)
https://github.com/status-im/status-go/compare/032eb5b6...c014fbfc

- Rename LOG_REQUEST_GO env variable to API_LOGGING_ENABLED across all env files
- Rename requests.log to api.log for consistency
- Remove standalone initLogging functionality from native modules as it's now
  handled within InitializeApplication
- Add logging configuration (logEnabled, logLevel, apiLoggingEnabled) to
  InitializeApplication params
- Add logDir parameter for Android to ensure proper log file location

This change consolidates logging initialization into the InitializeApplication
flow and makes the naming more consistent with its actual functionality.
2024-11-29 22:01:27 +08:00
Lungu Cristian 53d5ac4ea2 Using Keycard with the new Endpoints for Send/Bridge (#21705)
* fix: routes component annoying warning

* feat: replaced keycard sign with sign-hashes

* feat: using the keycard to sign transactions

* fix: removed unused and weird imports

* chore: removed debug logs

* chore: linting

* fix: removed clearing data on send error
2024-11-29 09:18:12 +02:00
Mohsen 874f07bd77 [#21644] fix: display zero for empty balances asset (#21697) 2024-11-29 08:42:37 +03:00
Mohamed Javid 4efb3c111a fix(wallet)_: error on tapping from/to section in tx confirmation screen (#21695)
This commit fixes the error thrown when tapping the From or To sections in the transaction confirmation screen.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-11-28 22:59:19 +05:30
Alexander de2b5fb935 Update sending transaction end point (#21480) (#21541)
* Update sending transaction end point

* Transaction approval

* Fixes

* Fixes

* Fixes

* Fix for issue 3

* Fixes for 2, 4, 7

* Update

* Fixes

* Fixes
2024-11-28 14:08:35 +01:00
Icaro Motta 5f8d5fd57e perf: Optimize messenger initialization (#21642)
Integrates the optimizations coming from the status-go PR
https://github.com/status-im/status-go/pull/6106. Now messenger filters are
set-up concurrently and we can call the endpoint wakuext_chatsPreview twice:
once for non-community chats and once for community chats. This way, the user
should be able to see some data render before the slow part ends
(community-related data).

Fixes https://github.com/status-im/status-mobile/issues/21456

Areas that may be impacted

- Login
- Loading of data after login (contacts, chats, etc)
2024-11-28 08:46:32 -03:00
Ulises Manuel 763b291629 fix(messenger): List of users overlap composer input (#21641)
* Fix mentions overlapped

* Fix rendering blink
2024-11-27 16:05:56 -06:00
Sean Hagstrom 9f50686042 fix: ensure keycard pin error message is visible (#21691)
Primarily, this change fixes an issue related to the Keycard PIN error message not being visible displayed on some devices. Additionally, this change also clears the PIN entry state after failing to enter the correct Keycard PIN. And this change also allows for the PIN entry component to have two separate error modes: one for the entire component and another for just the info text.
2024-11-27 08:47:56 -08:00
Yevheniia Berdnyk 1652601a82 e2e: fix for fallback tests 2024-11-27 15:47:12 +02:00
Yevheniia Berdnyk 7a44db36fe e2e: updated onboarding flow in tests 2024-11-27 03:30:00 +05:30
Parvesh Monu 338b241c8e Implement onboarding share usage data screen 2024-11-27 03:30:00 +05:30
Volodymyr Kozieiev 91761a92c7 Replace GetWalletToken endpoint with FetchOrGetCachedWalletBalances (#21625) 2024-11-26 13:27:58 +00:00
Sean Hagstrom 4b2a1db12f fix: add spacing between wrong-password error and forgot-password link (#21594) 2024-11-25 10:29:00 -08:00
Mohsen 05d4b4b068 [#21615] fix: hide mercuryo provider (#21626) 2024-11-25 20:58:58 +03:00
flexsurfer 9c9b55fe3e [#21573] Keycard - Sign up with a new Keycard (#21623) 2024-11-25 15:22:21 +01:00
Yevheniia Berdnyk 6ec307a8bb e2e: updated buttons ids 2024-11-25 15:07:37 +05:30
Parvesh Monu 86553eff14 Update create profile and sign in screen 2024-11-25 15:06:18 +05:30
Yevheniia Berdnyk 60911a1dd1 e2e: false failures fixes 2024-11-22 17:54:38 +02:00
232 changed files with 4575 additions and 3880 deletions
+1 -1
View File
@@ -35,4 +35,4 @@ TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=0 SHOW_NOT_IMPLEMENTED_FEATURES=0
ENABLE_ALERT_BANNER=0 ENABLE_ALERT_BANNER=0
FLAG_WALLET_CONNECT_ENABLED=1 FLAG_WALLET_CONNECT_ENABLED=1
LOG_REQUEST_GO=1 API_LOGGING_ENABLED=1
+1 -1
View File
@@ -39,4 +39,4 @@ DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
ENABLE_ALERT_BANNER=0 ENABLE_ALERT_BANNER=0
FLAG_WALLET_CONNECT_ENABLED=1 FLAG_WALLET_CONNECT_ENABLED=1
MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0 MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0
LOG_REQUEST_GO=1 API_LOGGING_ENABLED=1
+1 -1
View File
@@ -36,4 +36,4 @@ FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1 TEST_NETWORKS_ENABLED=1
ENABLE_ALERT_BANNER=1 ENABLE_ALERT_BANNER=1
FLAG_WALLET_CONNECT_ENABLED=1 FLAG_WALLET_CONNECT_ENABLED=1
LOG_REQUEST_GO=1 API_LOGGING_ENABLED=1
+1 -1
View File
@@ -23,4 +23,4 @@ FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0 TEST_NETWORKS_ENABLED=0
ENABLE_ALERT_BANNER=1 ENABLE_ALERT_BANNER=1
FLAG_WALLET_CONNECT_ENABLED=1 FLAG_WALLET_CONNECT_ENABLED=1
LOG_REQUEST_GO=0 API_LOGGING_ENABLED=0
+1 -1
View File
@@ -20,4 +20,4 @@ FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0 TEST_NETWORKS_ENABLED=0
STATUS_PROXY_STAGE_NAME=prod STATUS_PROXY_STAGE_NAME=prod
FLAG_WALLET_CONNECT_ENABLED=1 FLAG_WALLET_CONNECT_ENABLED=1
LOG_REQUEST_GO=0 API_LOGGING_ENABLED=0
+1 -1
View File
@@ -1 +1 @@
2.30.0 2.32.0
+1 -1
View File
@@ -26,7 +26,7 @@ export STATUS_BACKEND_SERVER_HOST="127.0.0.1:60000"
export STATUS_BACKEND_SERVER_ROOT_DATA_DIR="/path/to/your/root/data/dir" export STATUS_BACKEND_SERVER_ROOT_DATA_DIR="/path/to/your/root/data/dir"
``` ```
You need to change `STATUS_BACKEND_SERVER_ROOT_DATA_DIR` to your preferred directory and ensure it exists, it should be in absolute path. You need to change `STATUS_BACKEND_SERVER_ROOT_DATA_DIR` to your preferred directory and ensure it exists, it should be in absolute path.
All the db files and log files(requests.log/geth.log) and keystore files etc will be stored in this directory. All the db files and log files(api.log/geth.log) and keystore files etc will be stored in this directory.
### Start the status backend server: ### Start the status backend server:
```shell ```shell
@@ -6,13 +6,13 @@ SECURE ETHEREUM WALLET
The Status crypto wallet allows you to securely send, store, and exchange Ethereum assets such as ETH, SNT, stable coins such as DAI, as well as collectibles. Confidently take control of your cryptocurrency and digital assets with our multichain Ethereum wallet app, supporting mainnet, Arbitrum, and Optimism. The Status blockchain wallet currently only supports ETH, ERC-20, ERC-721, and ERC-1155 assets; it does not support Bitcoin. The Status crypto wallet allows you to securely send, store, and exchange Ethereum assets such as ETH, SNT, stable coins such as DAI, as well as collectibles. Confidently take control of your cryptocurrency and digital assets with our multichain Ethereum wallet app, supporting mainnet, Arbitrum, and Optimism. The Status blockchain wallet currently only supports ETH, ERC-20, ERC-721, and ERC-1155 assets; it does not support Bitcoin.
PRIVATE MESSENGER PRIVATE MESSENGER
Send private 1:1 and private group chats without anyone snooping on your communications. Status is a messenger app that eliminates centralised message relays for greater privacy and secure messaging. All messages are encrypted with end-to-end encryption. Additionally, no message exposes who the author or the intended recipient is, so nobody, not even Status, knows who is talking to who or what was said. Send private 1:1 and private group chats without anyone snooping on your communications. Status is a messenger app that eliminates centralized message relays for greater privacy and secure messaging. All messages are encrypted with end-to-end encryption. Additionally, no message exposes who the author or the intended recipient is, so nobody, not even Status, knows who is talking to who or what was said.
EARN WITH DEFI EARN WITH DEFI
Put your crypto to work with the latest decentralised finance apps and decentralised exchanges (DEX) such as Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber, and more. Put your crypto to work with the latest decentralized finance apps and decentralized exchanges (DEX) such as Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber, and more.
CONNECT WITH YOUR COMMUNITY CONNECT WITH YOUR COMMUNITY
Explore, connect, and chat with your favourite communities and friends. Whether it is a small group of friends, an artist collective, crypto traders, or the next big organization - text and communicate with Status communities. Explore, connect, and chat with your favorite communities and friends. Whether it is a small group of friends, an artist collective, crypto traders, or the next big organization - text and communicate with Status communities.
PRIVATE ACCOUNT CREATION PRIVATE ACCOUNT CREATION
Stay private with pseudo-anonymous account creation. When creating your free account, you will NEVER have to enter a phone number, email address, or bank account. Your wallet private keys are locally generated and securely stored to ensure only you have access to your funds and financial transactions. Stay private with pseudo-anonymous account creation. When creating your free account, you will NEVER have to enter a phone number, email address, or bank account. Your wallet private keys are locally generated and securely stored to ensure only you have access to your funds and financial transactions.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 272 KiB

Before

Width:  |  Height:  |  Size: 263 KiB

After

Width:  |  Height:  |  Size: 263 KiB

Before

Width:  |  Height:  |  Size: 396 KiB

After

Width:  |  Height:  |  Size: 396 KiB

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

Before

Width:  |  Height:  |  Size: 425 KiB

After

Width:  |  Height:  |  Size: 425 KiB

+3 -2
View File
@@ -57,10 +57,11 @@ abstract_target 'Status' do
pod 'react-native-config', :path => '../node_modules/react-native-config' pod 'react-native-config', :path => '../node_modules/react-native-config'
pod 'SSZipArchive', '2.4.3' pod 'SSZipArchive', '2.4.3'
# to fix [!] CocoaPods could not find compatible versions for pod "CryptoSwift"
pod 'CryptoSwift', git: "https://github.com/krzyzanowskim/CryptoSwift", tag: '1.8.0'
pod "react-native-status-keycard", path: "../node_modules/react-native-status-keycard" pod "react-native-status-keycard", path: "../node_modules/react-native-status-keycard"
pod "react-native-status", path: "../modules/react-native-status" pod "react-native-status", path: "../modules/react-native-status"
pod "Keycard", git: "https://github.com/status-im/Keycard.swift.git" pod "Keycard", git: "https://github.com/status-im/Keycard.swift.git", tag: '3.1.1'
pod 'secp256k1', git: "https://github.com/status-im/secp256k1.swift.git", submodules: true pod 'secp256k1', git: "https://github.com/status-im/secp256k1.swift.git", submodules: true
target 'StatusIm' do target 'StatusIm' do
+35 -21
View File
@@ -1,6 +1,7 @@
PODS: PODS:
- BigInt (5.2.0)
- boost (1.83.0) - boost (1.83.0)
- CryptoSwift (1.5.1) - CryptoSwift (1.8.0)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- FBLazyVector (0.73.5) - FBLazyVector (0.73.5)
- FBReactNativeSpec (0.73.5): - FBReactNativeSpec (0.73.5):
@@ -16,20 +17,24 @@ PODS:
- hermes-engine/Pre-built (= 0.73.5) - hermes-engine/Pre-built (= 0.73.5)
- hermes-engine/Pre-built (0.73.5) - hermes-engine/Pre-built (0.73.5)
- HMSegmentedControl (1.5.6) - HMSegmentedControl (1.5.6)
- Keycard (3.0.6): - Keycard (3.1.0):
- BigInt
- CryptoSwift - CryptoSwift
- secp256k1 - secp256k1
- SSZipArchive - SSZipArchive
- libevent (2.1.12) - libevent (2.1.12)
- libwebp (1.2.4): - libwebp (1.3.2):
- libwebp/demux (= 1.2.4) - libwebp/demux (= 1.3.2)
- libwebp/mux (= 1.2.4) - libwebp/mux (= 1.3.2)
- libwebp/webp (= 1.2.4) - libwebp/sharpyuv (= 1.3.2)
- libwebp/demux (1.2.4): - libwebp/webp (= 1.3.2)
- libwebp/demux (1.3.2):
- libwebp/webp - libwebp/webp
- libwebp/mux (1.2.4): - libwebp/mux (1.3.2):
- libwebp/demux - libwebp/demux
- libwebp/webp (1.2.4) - libwebp/sharpyuv (1.3.2)
- libwebp/webp (1.3.2):
- libwebp/sharpyuv
- RCT-Folly (2022.05.16.00): - RCT-Folly (2022.05.16.00):
- boost - boost
- DoubleConversion - DoubleConversion
@@ -943,7 +948,7 @@ PODS:
- React - React
- react-native-status (1.0.0): - react-native-status (1.0.0):
- React - React
- react-native-status-keycard (2.5.39): - react-native-status-keycard (2.6.2):
- Keycard - Keycard
- React - React
- react-native-webview (13.6.3): - react-native-webview (13.6.3):
@@ -1187,17 +1192,18 @@ PODS:
- secp256k1 (0.1.6) - secp256k1 (0.1.6)
- SocketRocket (0.6.1) - SocketRocket (0.6.1)
- SSZipArchive (2.4.3) - SSZipArchive (2.4.3)
- TOCropViewController (2.6.1) - TOCropViewController (2.7.4)
- Yoga (1.14.0) - Yoga (1.14.0)
DEPENDENCIES: DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- CryptoSwift (from `https://github.com/krzyzanowskim/CryptoSwift`, tag `1.8.0`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- Keycard (from `https://github.com/status-im/Keycard.swift.git`) - Keycard (from `https://github.com/status-im/Keycard.swift.git`, tag `3.1.1`)
- libevent (~> 2.1.12) - libevent (~> 2.1.12)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - 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`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
@@ -1285,7 +1291,7 @@ DEPENDENCIES:
SPEC REPOS: SPEC REPOS:
trunk: trunk:
- CryptoSwift - BigInt
- fmt - fmt
- HMSegmentedControl - HMSegmentedControl
- libevent - libevent
@@ -1299,6 +1305,9 @@ SPEC REPOS:
EXTERNAL SOURCES: EXTERNAL SOURCES:
boost: boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
CryptoSwift:
:git: https://github.com/krzyzanowskim/CryptoSwift
:tag: 1.8.0
DoubleConversion: DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector: FBLazyVector:
@@ -1312,6 +1321,7 @@ EXTERNAL SOURCES:
:tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4 :tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4
Keycard: Keycard:
:git: https://github.com/status-im/Keycard.swift.git :git: https://github.com/status-im/Keycard.swift.git
:tag: 3.1.1
RCT-Folly: RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired: RCTRequired:
@@ -1475,17 +1485,21 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga" :path: "../node_modules/react-native/ReactCommon/yoga"
CHECKOUT OPTIONS: CHECKOUT OPTIONS:
CryptoSwift:
:git: https://github.com/krzyzanowskim/CryptoSwift
:tag: 1.8.0
Keycard: Keycard:
:commit: 17381678bb981c3c553bb7202a26e642cecb1817
:git: https://github.com/status-im/Keycard.swift.git :git: https://github.com/status-im/Keycard.swift.git
:tag: 3.1.1
secp256k1: secp256k1:
:commit: 46a1fa30d9b8babeae85ff519050f42394ab5fcc :commit: 4ab977cc2b2d7319be858bcb30a5d189bb149884
:git: https://github.com/status-im/secp256k1.swift.git :git: https://github.com/status-im/secp256k1.swift.git
:submodules: true :submodules: true
SPEC CHECKSUMS: SPEC CHECKSUMS:
BigInt: f668a80089607f521586bbe29513d708491ef2f7
boost: d3f49c53809116a5d38da093a8aa78bf551aed09 boost: d3f49c53809116a5d38da093a8aa78bf551aed09
CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082 CryptoSwift: 52aaf3fce7337552863b1d952e408085f0e65030
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881 FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
@@ -1493,9 +1507,9 @@ SPEC CHECKSUMS:
glog: c0eca6ffed0a6fde1965ef26dcc7bf528f052af4 glog: c0eca6ffed0a6fde1965ef26dcc7bf528f052af4
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8 Keycard: 3bd24405b9a875b3b3cf1ab1be69b5c30c5f28bc
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87 RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87
RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c
@@ -1534,7 +1548,7 @@ SPEC CHECKSUMS:
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4 react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4
react-native-status: 21f75d492fd311dc111303da38a7a2b23a8a8466 react-native-status: 21f75d492fd311dc111303da38a7a2b23a8a8466
react-native-status-keycard: f1c1227b2d5984c10fb44db68e4bfd2937f31e98 react-native-status-keycard: 76a5c826352ee1d70de854b3e8b12670946bc1c8
react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0 react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0
React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9 React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9
React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f
@@ -1579,9 +1593,9 @@ SPEC CHECKSUMS:
secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7 Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7
PODFILE CHECKSUM: 5dd4a5279260d370bcdf016158c825ceb404ee06 PODFILE CHECKSUM: 56d9f695324306d6db368d1172d211dfab55b7cb
COCOAPODS: 1.15.2 COCOAPODS: 1.15.2
@@ -248,10 +248,14 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
@ReactMethod @ReactMethod
private fun initializeApplication(request: String, callback: Callback) { private fun initializeApplication(request: String, callback: Callback) {
Log.d(TAG, "initializeApplication") Log.d(TAG, "initializeApplication")
val jsonParams = JSONObject(request)
// for ios, the log dir will be the same as the root data dir, status-go will default to root data dir if logDir is not provided
jsonParams.put("logDir", utils.getPublicStorageDirectory()?.absolutePath)
val jsonString = jsonParams.toString()
StatusBackendClient.executeStatusGoRequestWithCallback( StatusBackendClient.executeStatusGoRequestWithCallback(
"InitializeApplication", "InitializeApplication",
request, jsonString,
{ Statusgo.initializeApplication(request) }, { Statusgo.initializeApplication(jsonString) },
callback callback
) )
} }
@@ -195,25 +195,6 @@ class LogManager(private val reactContext: ReactApplicationContext) : ReactConte
} }
} }
@ReactMethod
fun initLogging(enabled: Boolean, mobileSystem: Boolean, logLevel: String, logRequestGo: Boolean, callback: Callback) {
val jsonConfig = JSONObject().apply {
put("Enabled", enabled)
put("MobileSystem", mobileSystem)
put("Level", logLevel)
put("File", getGethLogFile().absolutePath)
put("LogRequestGo", logRequestGo)
put("LogRequestFile", getRequestLogFile().absolutePath)
}
val config = jsonConfig.toString()
StatusBackendClient.executeStatusGoRequestWithCallback(
endpoint = "InitLogging",
requestBody = config,
statusgoFunction = { Statusgo.initLogging(config) },
callback = callback
)
}
@ReactMethod(isBlockingSynchronousMethod = true) @ReactMethod(isBlockingSynchronousMethod = true)
fun logFileDirectory(): String? { fun logFileDirectory(): String? {
return utils.getPublicStorageDirectory()?.absolutePath return utils.getPublicStorageDirectory()?.absolutePath
@@ -223,7 +204,7 @@ class LogManager(private val reactContext: ReactApplicationContext) : ReactConte
private const val TAG = "LogManager" private const val TAG = "LogManager"
private const val gethLogFileName = "geth.log" private const val gethLogFileName = "geth.log"
private const val statusLogFileName = "Status.log" private const val statusLogFileName = "Status.log"
private const val requestsLogFileName = "requests.log" private const val requestsLogFileName = "api.log"
private const val logsZipFileName = "Status-debug-logs.zip" private const val logsZipFileName = "Status-debug-logs.zip"
} }
} }
@@ -36,7 +36,7 @@ RCT_EXPORT_METHOD(sendLogs:(NSString *)dbJson
NSURL *mainGethLogsFile = [rootUrl URLByAppendingPathComponent:@"geth.log"]; NSURL *mainGethLogsFile = [rootUrl URLByAppendingPathComponent:@"geth.log"];
NSURL *mainLogsFile = [logsFolderName URLByAppendingPathComponent:@"geth.log"]; NSURL *mainLogsFile = [logsFolderName URLByAppendingPathComponent:@"geth.log"];
NSURL *requestsLogFile = [rootUrl URLByAppendingPathComponent:@"requests.log"]; NSURL *requestsLogFile = [rootUrl URLByAppendingPathComponent:@"api.log"];
[dbJson writeToFile:dbFile.path atomically:YES encoding:NSUTF8StringEncoding error:nil]; [dbJson writeToFile:dbFile.path atomically:YES encoding:NSUTF8StringEncoding error:nil];
[jsLogs writeToFile:jsLogsFile.path atomically:YES encoding:NSUTF8StringEncoding error:nil]; [jsLogs writeToFile:jsLogsFile.path atomically:YES encoding:NSUTF8StringEncoding error:nil];
@@ -44,7 +44,7 @@ RCT_EXPORT_METHOD(sendLogs:(NSString *)dbJson
[fileManager copyItemAtPath:mainGethLogsFile.path toPath:mainLogsFile.path error:nil]; [fileManager copyItemAtPath:mainGethLogsFile.path toPath:mainLogsFile.path error:nil];
if ([fileManager fileExistsAtPath:requestsLogFile.path]) { if ([fileManager fileExistsAtPath:requestsLogFile.path]) {
[fileManager copyItemAtPath:requestsLogFile.path toPath:[logsFolderName URLByAppendingPathComponent:@"requests.log"].path error:nil]; [fileManager copyItemAtPath:requestsLogFile.path toPath:[logsFolderName URLByAppendingPathComponent:@"api.log"].path error:nil];
} }
[SSZipArchive createZipFileAtPath:zipFile.path withContentsOfDirectory:logsFolderName.path]; [SSZipArchive createZipFileAtPath:zipFile.path withContentsOfDirectory:logsFolderName.path];
@@ -53,43 +53,6 @@ RCT_EXPORT_METHOD(sendLogs:(NSString *)dbJson
callback(@[zipFile.absoluteString]); callback(@[zipFile.absoluteString]);
} }
RCT_EXPORT_METHOD(initLogging:(BOOL)enabled
mobileSystem:(BOOL)mobileSystem
logLevel:(NSString *)logLevel
logRequestGo:(BOOL)logRequestGo
callback:(RCTResponseSenderBlock)callback)
{
NSString *logDirectory = [self logFileDirectory];
NSString *logFilePath = [logDirectory stringByAppendingPathComponent:@"geth.log"];
NSString *logRequestFilePath = [logDirectory stringByAppendingPathComponent:@"requests.log"];
NSDictionary *config = @{
@"Enabled": @(enabled),
@"MobileSystem": @(mobileSystem),
@"Level": logLevel,
@"File": logFilePath,
@"LogRequestGo": @(logRequestGo),
@"LogRequestFile": logRequestFilePath
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:config options:0 error:&error];
if (error) {
NSLog(@"Error creating JSON: %@", [error localizedDescription]);
return;
}
NSString *configJson = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[StatusBackendClient executeStatusGoRequestWithCallback:@"InitLogging"
body:configJson
statusgoFunction:^NSString *{
return StatusgoInitLogging(configJson);
}
callback:callback];
}
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(logFileDirectory) { RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(logFileDirectory) {
NSURL *rootUrl = [Utils getRootUrl]; NSURL *rootUrl = [Utils getRootUrl];
return rootUrl.path; return rootUrl.path;
@@ -8,6 +8,7 @@
NSString *_statusGoEndpoint; NSString *_statusGoEndpoint;
NSString *_signalEndpoint; NSString *_signalEndpoint;
NSString *_rootDataDir; NSString *_rootDataDir;
NSTimer *_pingTimer;
} }
RCT_EXPORT_MODULE(); RCT_EXPORT_MODULE();
@@ -77,6 +78,8 @@ RCT_EXPORT_MODULE();
[self.webSocket resume]; [self.webSocket resume];
[self receiveMessage]; [self receiveMessage];
[self startPingTimer];
} }
- (void)receiveMessage { - (void)receiveMessage {
@@ -109,6 +112,7 @@ RCT_EXPORT_MODULE();
} }
- (void)disconnectWebSocket { - (void)disconnectWebSocket {
[self stopPingTimer];
if (self.webSocket) { if (self.webSocket) {
[self.webSocket cancel]; [self.webSocket cancel];
self.webSocket = nil; self.webSocket = nil;
@@ -119,6 +123,7 @@ RCT_EXPORT_MODULE();
body:(NSString *)body body:(NSString *)body
callback:(void (^)(NSString *response, NSError *error))callback { callback:(void (^)(NSString *response, NSError *error))callback {
NSString *fullUrlString = [NSString stringWithFormat:@"%@%@", self.statusGoEndpoint, endpoint]; NSString *fullUrlString = [NSString stringWithFormat:@"%@%@", self.statusGoEndpoint, endpoint];
NSLog(@"StatusGo server is enabled, executing request, endpoint: %@, body: %@", fullUrlString, body);
NSURL *url = [NSURL URLWithString:fullUrlString]; NSURL *url = [NSURL URLWithString:fullUrlString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST"; request.HTTPMethod = @"POST";
@@ -225,7 +230,6 @@ RCT_EXPORT_METHOD(configStatusBackendServer:(BOOL)serverEnabled
if (client.serverEnabled) { if (client.serverEnabled) {
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
__block NSString *resultString = @""; __block NSString *resultString = @"";
[client request:endpoint body:body callback:^(NSString *response, NSError *error) { [client request:endpoint body:body callback:^(NSString *response, NSError *error) {
if (error) { if (error) {
NSLog(@"request to %@ failed: %@", endpoint, error); NSLog(@"request to %@ failed: %@", endpoint, error);
@@ -243,4 +247,33 @@ RCT_EXPORT_METHOD(configStatusBackendServer:(BOOL)serverEnabled
} }
} }
- (void)startPingTimer {
[self stopPingTimer];
_pingTimer = [NSTimer scheduledTimerWithTimeInterval:30.0
target:self
selector:@selector(sendPing)
userInfo:nil
repeats:YES];
}
- (void)stopPingTimer {
if (_pingTimer) {
[_pingTimer invalidate];
_pingTimer = nil;
}
}
- (void)sendPing {
if (self.webSocket) {
[self.webSocket sendPingWithPongReceiveHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"WebSocket ping failed: %@", error);
// Reconnect on ping failure
[self disconnectWebSocket];
[self connectWebSocket];
}
}];
}
}
@end @end
@@ -1946,35 +1946,6 @@ void _ConnectionChange(const FunctionCallbackInfo<Value>& args) {
ConnectionChange(arg0, arg1); ConnectionChange(arg0, arg1);
} }
void _InitLogging(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
Local<Context> context = isolate->GetCurrentContext();
if (args.Length() != 1) {
// Throw an Error that is passed back to JavaScript
isolate->ThrowException(Exception::TypeError(
String::NewFromUtf8Literal(isolate, "Wrong number of arguments for InitLogging")));
return;
}
// Check the argument types
if (!args[0]->IsString()) {
isolate->ThrowException(Exception::TypeError(
String::NewFromUtf8Literal(isolate, "Wrong argument type for 'logSettingsJSON'")));
return;
}
String::Utf8Value arg0Obj(isolate, args[0]->ToString(context).ToLocalChecked());
char *arg0 = *arg0Obj;
// Call exported Go function, which returns a C string
char *c = InitLogging(arg0);
Local<String> ret = String::NewFromUtf8(isolate, c).ToLocalChecked();
args.GetReturnValue().Set(ret);
delete c;
}
void _RestoreAccountAndLogin(const FunctionCallbackInfo<Value>& args) { void _RestoreAccountAndLogin(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate(); Isolate* isolate = args.GetIsolate();
Local<Context> context = isolate->GetCurrentContext(); Local<Context> context = isolate->GetCurrentContext();
@@ -2064,7 +2035,6 @@ void init(Local<Object> exports) {
NODE_SET_METHOD(exports, "hashTransaction", _HashTransaction); NODE_SET_METHOD(exports, "hashTransaction", _HashTransaction);
NODE_SET_METHOD(exports, "connectionChange", _ConnectionChange); NODE_SET_METHOD(exports, "connectionChange", _ConnectionChange);
NODE_SET_METHOD(exports, "pollSignal", _PollSignal); NODE_SET_METHOD(exports, "pollSignal", _PollSignal);
NODE_SET_METHOD(exports, "initLogging", _InitLogging);
NODE_SET_METHOD(exports, "restoreAccountAndLogin", _RestoreAccountAndLogin); NODE_SET_METHOD(exports, "restoreAccountAndLogin", _RestoreAccountAndLogin);
} }
+183 -198
View File
@@ -8789,31 +8789,31 @@
}, },
{ {
"path": "com/github/status-im/status-keycard-java/android/3.1.1", "path": "com/github/status-im/status-keycard-java/android/3.1.2",
"repo": "https://jitpack.io", "repo": "https://jitpack.io",
"files": { "files": {
"android-3.1.1.pom": { "android-3.1.2.pom": {
"sha1": "ac7e6699628e329dfc028345f32bc41c5d6c2f33", "sha1": "9afce579939bad3c2b6d15787a0c861f6dbd9afa",
"sha256": "sha256-EvrtvGGyvB3Fxp72KXYl46pIsxgf8vDMXk9IZjkuEIs=" "sha256": "sha256-hNYvQQKfHNmbGQw5P0sssZAI11wfRhLir46QdukK0bs="
}, },
"android-3.1.1.jar": { "android-3.1.2.jar": {
"sha1": "26118061c0996fff357ae30cc360e5928c8dd455", "sha1": "46fe72fb8fca5935c73e0df5c10ccdd5c64fca8e",
"sha256": "sha256-4IjMQ6ZLAlsk4JC9sumOsRhdOF1F0L3Jl8dbEDOBoJY=" "sha256": "sha256-QNpDWQ1TWvCWg3YdL4UWSEiafpoHavXSY3VWCN45rtE="
} }
} }
}, },
{ {
"path": "com/github/status-im/status-keycard-java/lib/3.1.1", "path": "com/github/status-im/status-keycard-java/lib/3.1.2",
"repo": "https://jitpack.io", "repo": "https://jitpack.io",
"files": { "files": {
"lib-3.1.1.pom": { "lib-3.1.2.pom": {
"sha1": "63c7bbd55ddbf88d1b89941f78158aa07fb46873", "sha1": "0c0d8ef7318ba054457dea1e6624e0284aec91ca",
"sha256": "sha256-ERsZGvECIQGlNusSk+13760//JU6SaONxOW9b3AHFvQ=" "sha256": "sha256-Vs9p287YNgMD76/egyeHTqlIsENjwbZsspQbzs8QkeY="
}, },
"lib-3.1.1.jar": { "lib-3.1.2.jar": {
"sha1": "07f0374f17160c8731350316226ffe0de50f6f31", "sha1": "5df9eef589a72c5a3143f59b0f547092aeb0c309",
"sha256": "sha256-oaolZh+Ad/Dq6byP3SU8z19gUjPdV8wM0Ryobj1Y260=" "sha256": "sha256-M0P6r96RkgaIjC912Z/VxJgHmfm/ftl7rqYOto8A0Ic="
} }
} }
}, },
@@ -9082,16 +9082,16 @@
}, },
{ {
"path": "commons-io/commons-io/2.17.0", "path": "commons-io/commons-io/2.18.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"commons-io-2.17.0.pom": { "commons-io-2.18.0.pom": {
"sha1": "af3aa19bcc67a14e5d0dad042e7d985f733cdff4", "sha1": "cbd7a6fd54081f8e3d2a90c3cb74a91a31662a86",
"sha256": "sha256-SEqTn/9TELjLXGuQKcLc8VXT+TuLjWKF8/VrsroJ/Ek=" "sha256": "sha256-Y9lpQetE35yQ0q2yrYw/aZwuBl5wcEXF2vcT/KUrz8o="
}, },
"commons-io-2.17.0.jar": { "commons-io-2.18.0.jar": {
"sha1": "ddcc8433eb019fb48fe25207c0278143f3e1d7e2", "sha1": "44084ef756763795b31c578403dd028ff4a22950",
"sha256": "sha256-SqTKSPPf0wt4Igt4gdjLk+rECT7JQ2G2vvqUh5mKVQs=" "sha256": "sha256-88oPjWPEDiOlbVQQHGDV7e4Ta0LYS/uFvHljCTEJz4s="
} }
} }
}, },
@@ -10987,20 +10987,20 @@
}, },
{ {
"path": "com/fasterxml/jackson/core/jackson-annotations/2.18.0", "path": "com/fasterxml/jackson/core/jackson-annotations/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-annotations-2.18.0.pom": { "jackson-annotations-2.18.2.pom": {
"sha1": "15e211c936f255998ba87e8a80c14989f9895f08", "sha1": "40ab24a80879d82a46bd3653a43da88917e929c0",
"sha256": "sha256-pqA47zy3L8FXW5w4ZdpK2arX0COo1J3K0DeRBlVx6Bw=" "sha256": "sha256-CyvWlOqJJn7qSBJqilskplI0xkM4dULSRGnRlb+6HPg="
}, },
"jackson-annotations-2.18.0.jar": { "jackson-annotations-2.18.2.jar": {
"sha1": "9bddcc56af9d90f902ef5dba7348102cd12b04e2", "sha1": "985d77751ebc7fce5db115a986bc9aa82f973f4a",
"sha256": "sha256-oJNn0u61Joc6v3N/91TFCF+CBzo4LucsO74VQSIXZx8=" "sha256": "sha256-WBvWEADvdkiUP3gcoFaJ5W0D9gUnSDZajis6m10/oy8="
}, },
"jackson-annotations-2.18.0.module": { "jackson-annotations-2.18.2.module": {
"sha1": "c84262b96118cbb3bc27bf127735b93b18728a6c", "sha1": "9bd316d8447c1738d7bbfcc373693627c38eaea4",
"sha256": "sha256-DwmMCDBXb8nHVdQ9fzFuinV8k4ErNXdRJbNo/rzWA10=" "sha256": "sha256-4Ruvm1NubflNqmNaEBPsPgabhmuOES3cKqBEahVQUNw="
} }
} }
}, },
@@ -11021,20 +11021,20 @@
}, },
{ {
"path": "com/fasterxml/jackson/core/jackson-core/2.18.0", "path": "com/fasterxml/jackson/core/jackson-core/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-core-2.18.0.pom": { "jackson-core-2.18.2.pom": {
"sha1": "1d9d4da19eb2b14ba2975c254b6bfdd8ac4894fd", "sha1": "9a77a48adfca5182e9f8b3ee20ee2b186477b089",
"sha256": "sha256-2u9SqBcSdESKRuwovBCgBQldduysz4Fbp6Y6AaiGf2c=" "sha256": "sha256-4GWwA50h9N/ORr1DEEx9dtWFa9cy4qqGDMWkonDtct4="
}, },
"jackson-core-2.18.0.jar": { "jackson-core-2.18.2.jar": {
"sha1": "65e8ead7de5d8f7a53e296c363bea3182f21f925", "sha1": "fb64ccac5c27dca8819418eb4e443a9f496d9ee7",
"sha256": "sha256-IVu9fI/WW+UEy5L/OqHEt5D8exTMpy9FRqrEFDwQG7U=" "sha256": "sha256-2AVK58DRwtL1XSjkYCbr5YkogfP6tfQ5IzGEOBw7Sh8="
}, },
"jackson-core-2.18.0.module": { "jackson-core-2.18.2.module": {
"sha1": "b7e0781f9c8f54d94d5e28bad1816c7a8c3a6799", "sha1": "6a97d687f4996c423f97dc56f7e63860581f0f05",
"sha256": "sha256-xSmBTu77fwRPz2UL+lJ+60totpYGfLZMGmmUcvs1ZYc=" "sha256": "sha256-ynjGBDZ2f8w2zhRrd05PUKnLn2MtExcsRLrojgwDz6I="
} }
} }
}, },
@@ -11055,20 +11055,20 @@
}, },
{ {
"path": "com/fasterxml/jackson/core/jackson-databind/2.18.0", "path": "com/fasterxml/jackson/core/jackson-databind/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-databind-2.18.0.pom": { "jackson-databind-2.18.2.pom": {
"sha1": "3e52a2c42c3824afc2e696dad92f94dd6c1067fb", "sha1": "65295373e682120eba7894bb6632d6f8d17d5d6c",
"sha256": "sha256-+Mn0Od1EsdAkLWbmlB2pfFe6hONANu7peqHDr/vxugQ=" "sha256": "sha256-STo9tkR7eo7Ls3JCNMbOZ31y20sE9roAjw6+rqe+Wp0="
}, },
"jackson-databind-2.18.0.jar": { "jackson-databind-2.18.2.jar": {
"sha1": "8dba1f789a75fc30b59303574fe2b269afa4d3bc", "sha1": "deef8697b92141fb6caf7aa86966cff4eec9b04f",
"sha256": "sha256-K/GSe38yJGg+0BV6HsOw7edRedo+WX14xXLVbtAPnzw=" "sha256": "sha256-SzZOaFDciRcvzx1N0muP9UiO2kT/RlfiLdJlID3Vqzw="
}, },
"jackson-databind-2.18.0.module": { "jackson-databind-2.18.2.module": {
"sha1": "49c271f0ef5bb935ca797921904e7ebe138925e3", "sha1": "8bc88e1ebdc91d61f75e1dabb3cdeaca74ad0032",
"sha256": "sha256-LEnsfnQwbUh/lVkbqJiQRhnDKi4/0bWG+z5jIskaTmI=" "sha256": "sha256-jH2sL3J4GNiEeoKqTqxrAXTXnPBN+Q3iJGBy5t005wA="
} }
} }
}, },
@@ -11100,12 +11100,12 @@
}, },
{ {
"path": "com/fasterxml/jackson/jackson-base/2.18.0", "path": "com/fasterxml/jackson/jackson-base/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-base-2.18.0.pom": { "jackson-base-2.18.2.pom": {
"sha1": "d445ae58e3b3a15aa50a3e3707eaf46463b121e6", "sha1": "08e5c4c7f519a42a74dac257c922a7adbb4dda1b",
"sha256": "sha256-EFZMv/uFf5BlqhG1hJqMMIw1NfD1PG9Muytvt7NQf5c=" "sha256": "sha256-71dLcvW0iUgET2g3a4dMiK4JoCncjgX2Shwwvftt4Uo="
} }
} }
}, },
@@ -11122,12 +11122,12 @@
}, },
{ {
"path": "com/fasterxml/jackson/jackson-bom/2.18.0", "path": "com/fasterxml/jackson/jackson-bom/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-bom-2.18.0.pom": { "jackson-bom-2.18.2.pom": {
"sha1": "02fecc45cb9609006d979cb8f06f8a571957a0b8", "sha1": "b269a504e4c7d10af05db454c367fb03d6c434b6",
"sha256": "sha256-ut3oZMpztsoE3p9+5J5knhpeivj4x8FoLHRr5eI0xYc=" "sha256": "sha256-UkfNwwFyXT9n9+8EkDconVr3CdaXK89LFwluRUjSlWs="
} }
} }
}, },
@@ -11144,12 +11144,12 @@
}, },
{ {
"path": "com/fasterxml/jackson/jackson-parent/2.18", "path": "com/fasterxml/jackson/jackson-parent/2.18.1",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-parent-2.18.pom": { "jackson-parent-2.18.1.pom": {
"sha1": "3696eb746d84dafc7933ec26f13f4fb407530ab0", "sha1": "fcd5c9c72aeebb63d13eb4330842fdb8ae4f9a1c",
"sha256": "sha256-Vp3ADWi05t993oVimeHANT+kC9rxI+DfVj7L7kFlhtk=" "sha256": "sha256-0IIvrBoCJoRLitRFySDEmk9hkWnQmxAQp9/u0ZkQmYw="
} }
} }
}, },
@@ -11166,12 +11166,12 @@
}, },
{ {
"path": "com/fasterxml/jackson/module/jackson-modules-base/2.18.0", "path": "com/fasterxml/jackson/module/jackson-modules-base/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-modules-base-2.18.0.pom": { "jackson-modules-base-2.18.2.pom": {
"sha1": "6c3a68a52acce7482ba68999bd9b06a076b4c0ce", "sha1": "a38a7c307ae9250be61ea90b86dab2b3b504f847",
"sha256": "sha256-vtjbLqeIGzWwOA9V+67R1Wv+P9o6AmB0Ww9dXqzteyk=" "sha256": "sha256-wVCoPSPNizMiqqSYmEh0J5vi3I1f4qN5B9P1arYOJpw="
} }
} }
}, },
@@ -11192,20 +11192,20 @@
}, },
{ {
"path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.0", "path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"jackson-module-jaxb-annotations-2.18.0.pom": { "jackson-module-jaxb-annotations-2.18.2.pom": {
"sha1": "40eb69b3a20fb98faf66bee669b60e0fbda324ad", "sha1": "36b8fbaf3577061bb92ecf23d6aa9d802558fdb4",
"sha256": "sha256-rOb/zJ9+f89Atu3uRVB6FQJdI5N6PbBSxDNSeVdJQ9c=" "sha256": "sha256-T2FGzIFi5nDA1ERI8q1Iqf9WSeQHFmhM+gSua2Bm+fA="
}, },
"jackson-module-jaxb-annotations-2.18.0.jar": { "jackson-module-jaxb-annotations-2.18.2.jar": {
"sha1": "62cc7b7517b752360fef4796e396363a2396d29c", "sha1": "048c96032e5a428739e28ff04973717c032df598",
"sha256": "sha256-WStXNngYHG2Te1dJnDqGrON3knBrVoRFc3FcC7muw30=" "sha256": "sha256-ZFyk3imYBHPxmubAjXws4OP9JzJE0xVbXao7yC+hPUE="
}, },
"jackson-module-jaxb-annotations-2.18.0.module": { "jackson-module-jaxb-annotations-2.18.2.module": {
"sha1": "7adb3648b6e45a0ce0afd75efca142268ca592a1", "sha1": "2c300d407906f321a9e3d3ecc01cc56696ffc660",
"sha256": "sha256-66HSqRlv9sC7h9CrfZ6Ta5i2y7eZH8DUShi2gtBDmns=" "sha256": "sha256-wRlrUgwa7RJ88R3ka0l9gbxPNVquWqvIFwcwfX6x30U="
} }
} }
}, },
@@ -12215,16 +12215,16 @@
}, },
{ {
"path": "com/google/errorprone/error_prone_annotations/2.35.1", "path": "com/google/errorprone/error_prone_annotations/2.36.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"error_prone_annotations-2.35.1.pom": { "error_prone_annotations-2.36.0.pom": {
"sha1": "7b4b876b40f04941ede1e324f2af6261ad514a7b", "sha1": "daf188a28315b31852ebd550f78f6b764972ee1f",
"sha256": "sha256-un1clTzvrQU6AlOiJ46g1u+aiW4ZKgMnzHiO9EJBeBc=" "sha256": "sha256-15z9N8hfdta3VMdQHuHchEe3smQsI4LXeCUhZr0zHpw="
}, },
"error_prone_annotations-2.35.1.jar": { "error_prone_annotations-2.36.0.jar": {
"sha1": "c36f9e12192226278c2b163bf61990b131e59903", "sha1": "227d4d4957ccc3dc5761bd897e3a0ee587e750a7",
"sha256": "sha256-A7Y/7jjjqG/aMRr1oDV+ZO6kSQmqtSUe0XgRknBQj/U=" "sha256": "sha256-d0QOJwsLyaJJkDxaB2w2pyLEiGyk9CZ18pA6HFPtYaU="
} }
} }
}, },
@@ -12362,12 +12362,12 @@
}, },
{ {
"path": "com/google/errorprone/error_prone_parent/2.35.1", "path": "com/google/errorprone/error_prone_parent/2.36.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"error_prone_parent-2.35.1.pom": { "error_prone_parent-2.36.0.pom": {
"sha1": "ec496cb2eecb573bac52f53e75e677d21b7d79dd", "sha1": "f280159378f00e9f428f10887e22f84ebb2c7e9f",
"sha256": "sha256-vclIzC9eZtiTxFLrVEXgU1TS8PrejWxkUxDYJgEWu0k=" "sha256": "sha256-Okz8imvtYetI6Wl5b8MeoNJwtj5nBZmUamGIOttwlNw="
} }
} }
}, },
@@ -12953,12 +12953,12 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-bom/4.29.0-RC2", "path": "com/google/protobuf/protobuf-bom/4.29.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-bom-4.29.0-RC2.pom": { "protobuf-bom-4.29.0.pom": {
"sha1": "9a1d56ef3dcd903fe6188028b41a08cd95b7aed6", "sha1": "5542df7ac3708da8bf30756f4ee6d804d04b8c9b",
"sha256": "sha256-+fpeoeIYK8Z1Ug+VW8oKTMXIqjvw0QlYTlSXaC7Z268=" "sha256": "sha256-3L/Apl6DmDAE0HFOmL8NIGBwEUVbYhk5cowAkmvIyZk="
} }
} }
}, },
@@ -13204,16 +13204,16 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-java/4.29.0-RC2", "path": "com/google/protobuf/protobuf-java/4.29.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-java-4.29.0-RC2.pom": { "protobuf-java-4.29.0.pom": {
"sha1": "6a3b8220cf0191d1cac58f518e8fe089105a6215", "sha1": "27c4abe9c47f4aed31cf7acff86853a05f7e85f0",
"sha256": "sha256-laBUKUQ7qipRaJ2LniTI0JIqMOTbBMbK2MPX5F6+G9A=" "sha256": "sha256-7cHftEVG5yel+sU/CQUGv6aN2DB65vEHbv+tVy+S16Q="
}, },
"protobuf-java-4.29.0-RC2.jar": { "protobuf-java-4.29.0.jar": {
"sha1": "2c26bef798eaf3604cae2487cc7f98fbc30b34b2", "sha1": "ffea90ab158435d68de76951857ef5f8b0f98365",
"sha256": "sha256-7UEwvtFLpLMrQFVkcnZC1J3sqc14fsugWtO2/2377YQ=" "sha256": "sha256-FpAYUevl6J/oiqrTwmhmNzaVvC4wYnu4kyhH4vX8LnY="
} }
} }
}, },
@@ -13333,12 +13333,12 @@
}, },
{ {
"path": "com/google/protobuf/protobuf-parent/4.29.0-RC2", "path": "com/google/protobuf/protobuf-parent/4.29.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"protobuf-parent-4.29.0-RC2.pom": { "protobuf-parent-4.29.0.pom": {
"sha1": "87f14265eeeddd4c78ccaed313fe4125e7681442", "sha1": "c35e0844930aea715cc8f4335fee49223b1fe35c",
"sha256": "sha256-awus769PZSQsjKRKvb1PZe3Z0XoiZ1PetQE3m7dICzU=" "sha256": "sha256-jU6O2nh45revZuPCtvWHE839P7bNsHGS3My2HN0uSTA="
} }
} }
}, },
@@ -15259,16 +15259,16 @@
}, },
{ {
"path": "io/netty/netty-tcnative-classes/2.0.66.Final", "path": "io/netty/netty-tcnative-classes/2.0.69.Final",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"netty-tcnative-classes-2.0.66.Final.pom": { "netty-tcnative-classes-2.0.69.Final.pom": {
"sha1": "75dca372aa373fac57023721582360f84c79e44c", "sha1": "ee65d639d3c5312a4b6369f0d59504ad0c8dfe0b",
"sha256": "sha256-SULNAuKRbB+094zKiEHw9yGbuQ+CirdImokCfC76kes=" "sha256": "sha256-WdoPlJ4r7on1cR6z4Mb9jPeRTmtwwAfza56waIJDAVw="
}, },
"netty-tcnative-classes-2.0.66.Final.jar": { "netty-tcnative-classes-2.0.69.Final.jar": {
"sha1": "9588bd2f891157538a78d86c945aa34bf9308dda", "sha1": "0f018f36b688bafabe4573af230a8b59cf3c0713",
"sha256": "sha256-ZpqBGhk9wefJ74bLVHpKuS8PNMzo+bhCuQKb9c+gfMU=" "sha256": "sha256-C7woSMsJnrP29Ow2UBs2AOGChFfNpB1TMGh/YB7gS+8="
} }
} }
}, },
@@ -15285,12 +15285,12 @@
}, },
{ {
"path": "io/netty/netty-tcnative-parent/2.0.66.Final", "path": "io/netty/netty-tcnative-parent/2.0.69.Final",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"netty-tcnative-parent-2.0.66.Final.pom": { "netty-tcnative-parent-2.0.69.Final.pom": {
"sha1": "91784588e56a54734c698f08118b4f3b94a58ec1", "sha1": "ba3c1cc69d48f0196ee84ecd3c5157c52a987931",
"sha256": "sha256-KwF/s8He6rXR6uvsE0ZZt96ueMFNXr/D1JwLMITqc2U=" "sha256": "sha256-KVMCcZZjdhDIlPMr2nBQk82HaDFcnxpXOVGnXxeGmvw="
} }
} }
}, },
@@ -15804,17 +15804,6 @@
} }
}, },
{
"path": "net/bytebuddy/byte-buddy-parent/1.14.18",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"byte-buddy-parent-1.14.18.pom": {
"sha1": "6b0b1f08e2d2d8166176c80fd22ee3198a26a3cf",
"sha256": "sha256-dpxdCxEV5z9oRSu6qjVrrZtzfV/ge4PUyeSDl1uB/jw="
}
}
},
{ {
"path": "net/bytebuddy/byte-buddy-parent/1.15.4", "path": "net/bytebuddy/byte-buddy-parent/1.15.4",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
@@ -15826,6 +15815,17 @@
} }
}, },
{
"path": "net/bytebuddy/byte-buddy-parent/1.15.10",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"byte-buddy-parent-1.15.10.pom": {
"sha1": "6f8c0f39f52c09fbf4df945ff563f5fd81130724",
"sha256": "sha256-ZX1HwTcRTN8u0plv73gJYTgX3v9k2L4TI/QJiaO6BG4="
}
}
},
{ {
"path": "net/bytebuddy/byte-buddy/1.11.13", "path": "net/bytebuddy/byte-buddy/1.11.13",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
@@ -15856,21 +15856,6 @@
} }
}, },
{
"path": "net/bytebuddy/byte-buddy/1.14.18",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"byte-buddy-1.14.18.pom": {
"sha1": "5f889814c247762909c7007bdf5ef72f2e7cea7a",
"sha256": "sha256-IvsZB4/nBkirYFSSZscUaZaEciaqbm9+iP7MCBRySTk="
},
"byte-buddy-1.14.18.jar": {
"sha1": "0081e9b9a20944626e6757b5950676af901c2485",
"sha256": "sha256-UhF68WlqU6p3wTE1MHStolzL3y31EfKvM/rWcE+pUQQ="
}
}
},
{ {
"path": "net/bytebuddy/byte-buddy/1.15.4", "path": "net/bytebuddy/byte-buddy/1.15.4",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
@@ -15886,6 +15871,21 @@
} }
}, },
{
"path": "net/bytebuddy/byte-buddy/1.15.10",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"byte-buddy-1.15.10.pom": {
"sha1": "c968dc18f092176badbc9bd389ce53cbb6f13aa5",
"sha256": "sha256-BCz/E2+5FPl2I7oremhdmEuGnb+1tFIdx8kiejJZznA="
},
"byte-buddy-1.15.10.jar": {
"sha1": "635c873fadd853c084f84fdc3cbd58c5dd8537f9",
"sha256": "sha256-2DkNIGhaQaK9ymQPlYlCzZG8vyHEJHBJS99XUtmgexQ="
}
}
},
{ {
"path": "net/java/dev/jna/jna-platform/5.6.0", "path": "net/java/dev/jna/jna-platform/5.6.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
@@ -16726,12 +16726,12 @@
}, },
{ {
"path": "org/apache/commons/commons-parent/74", "path": "org/apache/commons/commons-parent/78",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"commons-parent-74.pom": { "commons-parent-78.pom": {
"sha1": "704abf062c1f6e03f8bcf6929b4777b9af5048a5", "sha1": "c59670d5fff6efd8b31013cb579732c75a250b4c",
"sha256": "sha256-gOthsMh/3YJqBpMTsotnLaPxiFgy2kR7Uebophl+fss=" "sha256": "sha256-Ai0gLmVe3QTyoQ7L5FPZKXeSTTg4Ckyow1nxgXqAMg4="
} }
} }
}, },
@@ -17471,20 +17471,20 @@
}, },
{ {
"path": "org/checkerframework/checker-qual/3.48.1", "path": "org/checkerframework/checker-qual/3.48.2",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"checker-qual-3.48.1.pom": { "checker-qual-3.48.2.pom": {
"sha1": "b6dca63179b1aedebea4b5eb877342e3f6ff8916", "sha1": "95acb8356a028eeb22171b7330f7bb78cf0f9506",
"sha256": "sha256-4vslCCqCrdKE9gwb/yXZMBzX6bJhOIEs3tGEXutCJ8k=" "sha256": "sha256-Sk+LlzEYgyx4SrUIpzAJ2tAt5Nq/0dFJLWa45MC6HRE="
}, },
"checker-qual-3.48.1.jar": { "checker-qual-3.48.2.jar": {
"sha1": "7d8cf1c00aec0042df92f8d71d7f15baaf9773f4", "sha1": "2a4797df796b23026b8215545b0d2936bacc52af",
"sha256": "sha256-Iejf6BA+El2WoyllPKgeh6xDAybb2/KZzqPcGuPwOaI=" "sha256": "sha256-ryPyDJlbL+3jWx66gRd6mmaUTsZ7jk3uGapMwLcQxrU="
}, },
"checker-qual-3.48.1.module": { "checker-qual-3.48.2.module": {
"sha1": "f1e778df44d6ca615e580cf2bf3c0ad7ad898d6e", "sha1": "cdf30d8d4b97e12fc85e65e1bd55210a1a084b10",
"sha256": "sha256-2By/MdXdg8qGleCloaRz6TS5mq3GpN2UnvT1ll8lYAM=" "sha256": "sha256-D2RjlMmz5KL1aitsZ6C0NAkqxrq3pJvC/wGtjKf08NU="
} }
} }
}, },
@@ -17820,27 +17820,27 @@
}, },
{ {
"path": "org/easymock/easymock-parent/5.4.0", "path": "org/easymock/easymock-parent/5.5.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"easymock-parent-5.4.0.pom": { "easymock-parent-5.5.0.pom": {
"sha1": "ac49fe5a7d9cfec46d7386f713c5cd5c5afed89f", "sha1": "a30937cb15aa72370d3841ca217dd04cd24d506c",
"sha256": "sha256-sKGUgoX4OZNIqWxgWTXYJVCnVKTDNfw0SfogL74qAnI=" "sha256": "sha256-e7FiABT3ApRLbKcywPIh6jLHwyfQ9fM6zuGf/gtAJ6A="
} }
} }
}, },
{ {
"path": "org/easymock/easymock/5.4.0", "path": "org/easymock/easymock/5.5.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"easymock-5.4.0.pom": { "easymock-5.5.0.pom": {
"sha1": "d566a45d12ee304ab0fba3877ebd93ef64469ea8", "sha1": "a711c875746fa00d8c929824b0f99ed7f103ac75",
"sha256": "sha256-v/kNdi/BrWVB5jCrgeBzJPVflbd5BhE6NKpnqn2HPhk=" "sha256": "sha256-0TuotyX47NbHANkl9v78MwXLkIGtzLN97cUxr9HzfQY="
}, },
"easymock-5.4.0.jar": { "easymock-5.5.0.jar": {
"sha1": "eb56bad81c203765f4a5c74aed28142fb0d79354", "sha1": "b07e2bcbc7b6bcae190a18b9ced742b6fd9ceec3",
"sha256": "sha256-SDUEf+QbVDSRB8EaGEuhIvo8P8cIQHU0ZfdCtJ5+A6M=" "sha256": "sha256-vwW1axAr6Rx80LutFoTVgJrCzNA4DmhPlEW/3hRBj38="
} }
} }
}, },
@@ -19901,16 +19901,16 @@
}, },
{ {
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0-Beta2", "path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"kotlin-reflect-2.1.0-Beta2.pom": { "kotlin-reflect-2.1.0.pom": {
"sha1": "3e7baa22fcb4cc619f4bd40486276a93f3f2a0c3", "sha1": "6c72cb76dbf12249eec091d5a7d6ea27a27fcc87",
"sha256": "sha256-Mh8VtvMp1G9QUK5EgUhLQ0nCEefVB7U0spO9fTwzNkg=" "sha256": "sha256-nNhLPU9xfJYjXkujtydolcz/1V3kEcfOCz97q1Yu/kI="
}, },
"kotlin-reflect-2.1.0-Beta2.jar": { "kotlin-reflect-2.1.0.jar": {
"sha1": "d776709bc948b0d4d1f06d0da76c3754d80d6f50", "sha1": "dc3753b59b67d79b7d2f546d51e22a0ec1f082d8",
"sha256": "sha256-gBuxZsoD8bj+VXCQtpxdW3CeUiyFTSnSWyTW0JLqjRo=" "sha256": "sha256-tfYI7fqYqM+iNyzBLRitqXS+HFbBCT7/BswGH0/AiLI="
} }
} }
}, },
@@ -21579,24 +21579,24 @@
}, },
{ {
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.0-Beta2", "path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.0",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
"files": { "files": {
"kotlin-stdlib-2.1.0-Beta2.pom": { "kotlin-stdlib-2.1.0.pom": {
"sha1": "9bf48efa052a62e8f741b1da18105848536e0b98", "sha1": "b7c581edbfc43221bf7a18ea76cc482111bba949",
"sha256": "sha256-yK+DAGdGa23mj4Gpm5qTnpn65U2VBdfG8eXQKG9Ckuw=" "sha256": "sha256-E05IwXeWwcECfsvmyfHHXHkvU1mHq4nh4d2kP4w2b14="
}, },
"kotlin-stdlib-2.1.0-Beta2-all.jar": { "kotlin-stdlib-2.1.0-all.jar": {
"sha1": "37a691f3c171dc54afc64aedcd63da3440df12d3", "sha1": "37a691f3c171dc54afc64aedcd63da3440df12d3",
"sha256": "sha256-p0EvZtcbzSchw5gweXL7tflAn5RWQ+7gXRCAsomjOcs=" "sha256": "sha256-p0EvZtcbzSchw5gweXL7tflAn5RWQ+7gXRCAsomjOcs="
}, },
"kotlin-stdlib-2.1.0-Beta2.jar": { "kotlin-stdlib-2.1.0.jar": {
"sha1": "9b6eab04a97dfca8f091764bc5bc89604afc7b01", "sha1": "85f8b81009cda5890e54ba67d64b5e599c645020",
"sha256": "sha256-a+9Pxnj5YEdA0GUcZbg0Rw2GM8nxKfMZzNWstMvztLs=" "sha256": "sha256-1vkbew8wbMopn+x0+3w05IdNb17FuSWgtN4hkB4RnD8="
}, },
"kotlin-stdlib-2.1.0-Beta2.module": { "kotlin-stdlib-2.1.0.module": {
"sha1": "fc5281ea91c36234d3aa0de8e0c70e0f8892a677", "sha1": "10243b69a055e7a0aac5eff98c9509f34b4b5d1e",
"sha256": "sha256-3yeZ0iUo792hyfKjSIBL692eYtrGQGxNURFP++ylC2w=" "sha256": "sha256-3PvI6L8yzWen763ZHTEVK86YcJEdbsUIePT9tuA+cOI="
} }
} }
}, },
@@ -22698,21 +22698,6 @@
} }
}, },
{
"path": "org/ow2/asm/asm/9.7",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"asm-9.7.pom": {
"sha1": "e2568079bd69f0fdf35fe2d9e7cd9b16db8eff94",
"sha256": "sha256-3gARXx2E86Cy7jpLb2GS0Gb4bRhdZ7nRUi8sgP6sXwA="
},
"asm-9.7.jar": {
"sha1": "073d7b3086e14beb604ced229c302feff6449723",
"sha256": "sha256-rfRtXjSUC98Ujs3Sap7o7qlElqcgNP9xQQZrPupcTp0="
}
}
},
{ {
"path": "org/ow2/ow2/1.3", "path": "org/ow2/ow2/1.3",
"repo": "https://repo.maven.apache.org/maven2", "repo": "https://repo.maven.apache.org/maven2",
+2 -2
View File
@@ -559,8 +559,8 @@ com.github.bumptech.glide:glide:4.12.0
com.github.bumptech.glide:okhttp3-integration:4.12.0 com.github.bumptech.glide:okhttp3-integration:4.12.0
com.github.clans:fab:1.6.4 com.github.clans:fab:1.6.4
com.github.gundy:semver4j:0.16.4 com.github.gundy:semver4j:0.16.4
com.github.status-im.status-keycard-java:android:3.1.1 com.github.status-im.status-keycard-java:android:3.1.2
com.github.status-im.status-keycard-java:lib:3.1.1 com.github.status-im.status-keycard-java:lib:3.1.2
com.github.status-im:function:0.0.1 com.github.status-im:function:0.0.1
com.github.wix-playground:ahbottomnavigation:3.3.0 com.github.wix-playground:ahbottomnavigation:3.3.0
com.github.wix-playground:reflow-animator:1.0.6 com.github.wix-playground:reflow-animator:1.0.6
+26 -27
View File
@@ -545,8 +545,8 @@ https://dl.google.com/dl/android/maven2/com/google/testing/platform/launcher/0.0
https://dl.google.com/dl/android/maven2/com/google/test/platform/core-proto/0.0.2-dev/core-proto-0.0.2-dev.pom https://dl.google.com/dl/android/maven2/com/google/test/platform/core-proto/0.0.2-dev/core-proto-0.0.2-dev.pom
https://jitpack.io/com/github/Dimezis/BlurView/version-2.0.4/BlurView-version-2.0.4.pom https://jitpack.io/com/github/Dimezis/BlurView/version-2.0.4/BlurView-version-2.0.4.pom
https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom
https://jitpack.io/com/github/status-im/status-keycard-java/android/3.1.1/android-3.1.1.pom https://jitpack.io/com/github/status-im/status-keycard-java/android/3.1.2/android-3.1.2.pom
https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.1.1/lib-3.1.1.pom https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.1.2/lib-3.1.2.pom
https://jitpack.io/com/github/wix-playground/ahbottomnavigation/3.3.0/ahbottomnavigation-3.3.0.pom https://jitpack.io/com/github/wix-playground/ahbottomnavigation/3.3.0/ahbottomnavigation-3.3.0.pom
https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animator-1.0.6.pom https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animator-1.0.6.pom
https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom
@@ -564,7 +564,7 @@ https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-co
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.17.0/commons-io-2.17.0.pom https://repo.maven.apache.org/maven2/commons-io/commons-io/2.18.0/commons-io-2.18.0.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.pom https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.pom
@@ -667,22 +667,22 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.1/soloa
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.5/soloader-0.10.5.pom https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.10.5/soloader-0.10.5.pom
https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.19.0/proguard-annotations-1.19.0.pom https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.19.0/proguard-annotations-1.19.0.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.11.1/jackson-annotations-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.0/jackson-annotations-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.18.2/jackson-annotations-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.1/jackson-core-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.0/jackson-core-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.18.2/jackson-core-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.11.1/jackson-databind-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.0/jackson-databind-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.18.2/jackson-databind-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.11.1/jackson-dataformat-xml-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.11.1/jackson-dataformat-xml-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.11.1/jackson-base-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.11.1/jackson-base-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.18.0/jackson-base-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.18.2/jackson-base-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.11.1/jackson-bom-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.11.1/jackson-bom-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.18.0/jackson-bom-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.18.2/jackson-bom-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.11/jackson-parent-2.11.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.11/jackson-parent-2.11.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.18/jackson-parent-2.18.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/2.18.1/jackson-parent-2.18.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.11.1/jackson-modules-base-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.11.1/jackson-modules-base-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.18.0/jackson-modules-base-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-modules-base/2.18.2/jackson-modules-base-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.11.1/jackson-module-jaxb-annotations-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.11.1/jackson-module-jaxb-annotations-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.0/jackson-module-jaxb-annotations-2.18.0.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.2/jackson-module-jaxb-annotations-2.18.2.pom
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-kotlin/2.11.1/jackson-module-kotlin-2.11.1.pom https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-kotlin/2.11.1/jackson-module-kotlin-2.11.1.pom
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/38/oss-parent-38.pom
https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/61/oss-parent-61.pom https://repo.maven.apache.org/maven2/com/fasterxml/oss-parent/61/oss-parent-61.pom
@@ -751,7 +751,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.10.0/error_prone_annotations-2.10.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.35.1/error_prone_annotations-2.35.1.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.36.0/error_prone_annotations-2.36.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
@@ -764,7 +764,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.10.0/error_prone_parent-2.10.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.35.1/error_prone_parent-2.35.1.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.36.0/error_prone_parent-2.36.0.pom
https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
@@ -809,7 +809,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.13.0/pro
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.17.2/protobuf-bom-3.17.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.17.2/protobuf-bom-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.2/protobuf-bom-3.19.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.2/protobuf-bom-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.3/protobuf-bom-3.19.3.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.3/protobuf-bom-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.29.0-RC2/protobuf-bom-4.29.0-RC2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.29.0/protobuf-bom-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.17.2/protobuf-javalite-3.17.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.17.2/protobuf-javalite-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.19.2/protobuf-javalite-3.19.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.19.2/protobuf-javalite-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
@@ -826,7 +826,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.13.0/pr
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.17.2/protobuf-java-3.17.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.17.2/protobuf-java-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.2/protobuf-java-3.19.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.2/protobuf-java-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.3/protobuf-java-3.19.3.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.3/protobuf-java-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.29.0-RC2/protobuf-java-4.29.0-RC2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.29.0/protobuf-java-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-lite/3.0.1/protobuf-lite-3.0.1.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-lite/3.0.1/protobuf-lite-3.0.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
@@ -837,7 +837,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.13.0/
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.17.2/protobuf-parent-3.17.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.17.2/protobuf-parent-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.2/protobuf-parent-3.19.2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.2/protobuf-parent-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.3/protobuf-parent-3.19.3.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.3/protobuf-parent-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.29.0-RC2/protobuf-parent-4.29.0-RC2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.29.0/protobuf-parent-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.4/truth-parent-1.4.4.pom https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.4/truth-parent-1.4.4.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.4/truth-1.4.4.pom https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.4/truth-1.4.4.pom
https://repo.maven.apache.org/maven2/com/google/zxing/core/3.4.1/core-3.4.1.pom https://repo.maven.apache.org/maven2/com/google/zxing/core/3.4.1/core-3.4.1.pom
@@ -971,9 +971,9 @@ https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.52.Final/netty-
https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.72.Final/netty-resolver-4.1.72.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-resolver/4.1.72.Final/netty-resolver-4.1.72.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-resolver/5.0.0.Alpha2/netty-resolver-5.0.0.Alpha2.pom https://repo.maven.apache.org/maven2/io/netty/netty-resolver/5.0.0.Alpha2/netty-resolver-5.0.0.Alpha2.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.46.Final/netty-tcnative-classes-2.0.46.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.46.Final/netty-tcnative-classes-2.0.46.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.66.Final/netty-tcnative-classes-2.0.66.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.69.Final/netty-tcnative-classes-2.0.69.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.46.Final/netty-tcnative-parent-2.0.46.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.46.Final/netty-tcnative-parent-2.0.46.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.66.Final/netty-tcnative-parent-2.0.66.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.69.Final/netty-tcnative-parent-2.0.69.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.34.Final/netty-transport-4.1.34.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.34.Final/netty-transport-4.1.34.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.52.Final/netty-transport-4.1.52.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.52.Final/netty-transport-4.1.52.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.72.Final/netty-transport-4.1.72.Final.pom https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.72.Final/netty-transport-4.1.72.Final.pom
@@ -1009,12 +1009,12 @@ https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.11.19/byte
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.15.4/byte-buddy-agent-1.15.4.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.15.4/byte-buddy-agent-1.15.4.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.13/byte-buddy-parent-1.11.13.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.13/byte-buddy-parent-1.11.13.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.19/byte-buddy-parent-1.11.19.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.11.19/byte-buddy-parent-1.11.19.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.14.18/byte-buddy-parent-1.14.18.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.4/byte-buddy-parent-1.15.4.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.4/byte-buddy-parent-1.15.4.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.15.10/byte-buddy-parent-1.15.10.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.13/byte-buddy-1.11.13.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.19/byte-buddy-1.11.19.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.11.19/byte-buddy-1.11.19.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.14.18/byte-buddy-1.14.18.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.4/byte-buddy-1.15.4.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.4/byte-buddy-1.15.4.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.15.10/byte-buddy-1.15.10.pom
https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.6.0/jna-platform-5.6.0.pom https://repo.maven.apache.org/maven2/net/java/dev/jna/jna-platform/5.6.0/jna-platform-5.6.0.pom
https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom https://repo.maven.apache.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom
https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1.pom https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1.pom
@@ -1080,7 +1080,7 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/common
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/71/commons-parent-71.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/71/commons-parent-71.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/72/commons-parent-72.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/72/commons-parent-72.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/74/commons-parent-74.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/78/commons-parent-78.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
@@ -1135,7 +1135,7 @@ https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.1/che
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.48.1/checker-qual-3.48.1.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.48.2/checker-qual-3.48.2.pom
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
@@ -1158,8 +1158,8 @@ https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/84/mojo-paren
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/5.4.0/easymock-parent-5.4.0.pom https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/5.5.0/easymock-parent-5.5.0.pom
https://repo.maven.apache.org/maven2/org/easymock/easymock/5.4.0/easymock-5.4.0.pom https://repo.maven.apache.org/maven2/org/easymock/easymock/5.5.0/easymock-5.5.0.pom
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation-project/2.0.2/angus-activation-project-2.0.2.pom https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation-project/2.0.2/angus-activation-project-2.0.2.pom
https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.pom https://repo.maven.apache.org/maven2/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.pom
https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.2/project-1.0.2.pom https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.2/project-1.0.2.pom
@@ -1285,7 +1285,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.20/kotlin-reflect-1.6.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.20/kotlin-reflect-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.10/kotlin-reflect-1.7.10.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.10/kotlin-reflect-1.7.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.0-Beta2/kotlin-reflect-2.1.0-Beta2.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.0/kotlin-reflect-2.1.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.20/kotlin-scripting-common-1.6.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.20/kotlin-scripting-common-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.8.0/kotlin-scripting-common-1.8.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.8.0/kotlin-scripting-common-1.8.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.9.0/kotlin-scripting-common-1.9.0.pom
@@ -1395,7 +1395,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/k
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.22/kotlin-stdlib-1.9.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.25/kotlin-stdlib-1.9.25.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.25/kotlin-stdlib-1.9.25.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.0-Beta2/kotlin-stdlib-2.1.0-Beta2.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.0/kotlin-stdlib-2.1.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom
@@ -1471,7 +1471,6 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm/8.0.1/asm-8.0.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.7.1/asm-9.7.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.7.1/asm-9.7.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.7/asm-9.7.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5.1/ow2-1.5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
+1 -1
View File
@@ -51,7 +51,7 @@ in {
yarn = super.yarn.override { nodejs = super.nodejs_20; }; yarn = super.yarn.override { nodejs = super.nodejs_20; };
openjdk = super.openjdk17_headless; openjdk = super.openjdk17_headless;
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } { xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
versions = ["15.1" "15.2" "15.3" "15.4"]; versions = ["15.1" "15.2" "15.3" "15.4" "16.0" "16.1"];
}; };
go = super.go_1_21; go = super.go_1_21;
clang = super.clang_15; clang = super.clang_15;
+1 -1
View File
@@ -66,7 +66,7 @@
"react-native-shake": "^3.3.1", "react-native-shake": "^3.3.1",
"react-native-share": "10.0.2", "react-native-share": "10.0.2",
"react-native-static-safe-area-insets": "^2.2.0", "react-native-static-safe-area-insets": "^2.2.0",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.39", "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.3",
"react-native-svg": "13.10.0", "react-native-svg": "13.10.0",
"react-native-webview": "13.6.3", "react-native-webview": "13.6.3",
"react-syntax-highlighter": "^15.5.0" "react-syntax-highlighter": "^15.5.0"
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

+4 -4
View File
@@ -1,8 +1,8 @@
import { useDerivedValue, withTiming, Easing } from 'react-native-reanimated'; import { useDerivedValue, withTiming, Easing } from 'react-native-reanimated';
const slideAnimationDuration = 300; const slideAnimationDuration = 300;
const totalPages = 4; const totalPages = 3;
const pageSize = 100 / totalPages; const pageSize = 25;
const easeOut = { const easeOut = {
duration: slideAnimationDuration, duration: slideAnimationDuration,
@@ -13,7 +13,7 @@ const easeOut = {
export function dynamicProgressBarWidth(staticProgressBarWidth, progress) { export function dynamicProgressBarWidth(staticProgressBarWidth, progress) {
return useDerivedValue(function () { return useDerivedValue(function () {
'worklet'; 'worklet';
return (staticProgressBarWidth * (progress.value || 0)) / 100; return (staticProgressBarWidth * (progress.value || 0)) / 75;
}); });
} }
@@ -26,6 +26,6 @@ export function carouselLeftPosition(windowWidth, progress, isDragging, dragAmou
const baseOffset = (Math.floor(progressValue / pageSize) % totalPages) * windowWidth; const baseOffset = (Math.floor(progressValue / pageSize) % totalPages) * windowWidth;
const adjustedOffset = baseOffset === 0 && dragAmountValue > 0 ? baseOffset : -baseOffset + dragAmountValue; const adjustedOffset = baseOffset === 0 && dragAmountValue > 0 ? baseOffset : -baseOffset + dragAmountValue;
return isDragging.value ? withTiming(adjustedOffset, easeOut) : withTiming(-baseOffset, easeOut); return isDragging.value ? adjustedOffset : withTiming(-baseOffset, easeOut);
}); });
} }
+15 -11
View File
@@ -2,7 +2,9 @@
(:require (:require
["react-native" :as rn] ["react-native" :as rn]
["react-native-status-keycard" :default status-keycard] ["react-native-status-keycard" :default status-keycard]
[oops.core :as oops]
[react-native.platform :as platform] [react-native.platform :as platform]
[schema.core :as schema]
[taoensso.timbre :as log])) [taoensso.timbre :as log]))
(defonce event-emitter (defonce event-emitter
@@ -254,17 +256,19 @@
(catch on-failure)))) (catch on-failure))))
(defn sign (defn sign
[{pin :pin path :path card-hash :hash on-success :on-success on-failure :on-failure}] [{:keys [pin path hash-data]}]
(when (and pin card-hash) (if path
(if path (oops/ocall status-keycard "signWithPath" pin path hash-data)
(.. status-keycard (oops/ocall status-keycard "sign" pin hash-data)))
(signWithPath pin path card-hash)
(then on-success) (schema/=> sign
(catch on-failure)) [:=>
(.. status-keycard [:cat
(sign pin card-hash) [:map
(then on-success) [:pin :string]
(catch on-failure))))) [:hash-data :string]
[:path {:optional true} [:maybe :string]]]]
:any])
(defn sign-typed-data (defn sign-typed-data
[{card-hash :hash on-success :on-success on-failure :on-failure}] [{card-hash :hash on-success :on-success on-failure :on-failure}]
+17 -19
View File
@@ -18,25 +18,23 @@
clock-value clock-value
"0x0000000000000000000000000000000000000000000000000000000000000000")) "0x0000000000000000000000000000000000000000000000000000000000000000"))
(rf/defn update-chats-in-app-db (rf/reg-event-fx :chats-list/load-success
{:events [:chats-list/load-success]} (fn [{:keys [db]} [^js new-chats-js]]
[{:keys [db]} ^js new-chats-js] (let [{:keys [all-chats chats-home-list]}
(let [{:keys [all-chats chats-home-list]} (reduce (fn [acc ^js chat-js]
(reduce (fn [acc ^js chat-js] (let [{:keys [chat-id profile-public-key timeline? community-id active] :as chat}
(let [{:keys [chat-id profile-public-key timeline? community-id active] :as chat} (data-store.chats/<-rpc-js chat-js)]
(data-store.chats/<-rpc-js chat-js)] (cond-> acc
(cond-> acc (and (not profile-public-key) (not timeline?) (not community-id) active)
(and (not profile-public-key) (not timeline?) (not community-id) active) (update :chats-home-list conj chat-id)
(update :chats-home-list conj chat-id) :always
:always (assoc-in [:all-chats chat-id] chat))))
(assoc-in [:all-chats chat-id] chat)))) {:all-chats {}
{:all-chats {} :chats-home-list #{}}
:chats-home-list #{}} new-chats-js)]
new-chats-js)] {:db (-> db
{:db (assoc db (update :chats merge all-chats)
:chats all-chats (update :chats-home-list into chats-home-list))})))
:chats-home-list chats-home-list
:chats/loading? false)}))
(rf/defn load-chat-success (rf/defn load-chat-success
{:events [:chats-list/load-chat-success]} {:events [:chats-list/load-chat-success]}
+2 -2
View File
@@ -134,9 +134,9 @@
unmarshal-members)) unmarshal-members))
(re-frame/reg-fx :fetch-chats-preview (re-frame/reg-fx :fetch-chats-preview
(fn [{:keys [on-success]}] (fn [{:keys [on-success chat-preview-type]}]
(json-rpc/call {:method "wakuext_chatsPreview" (json-rpc/call {:method "wakuext_chatsPreview"
:params [] :params [chat-preview-type]
:js-response true :js-response true
:on-success #(on-success ^js %) :on-success #(on-success ^js %)
:on-error #(log/error "failed to fetch chats" 0 -1 %)}))) :on-error #(log/error "failed to fetch chats" 0 -1 %)})))
@@ -135,7 +135,6 @@
:chat/cooldowns :chat/cooldowns
:chat/last-outgoing-message-sent-at :chat/last-outgoing-message-sent-at
:chat/spam-messages-frequency :chat/spam-messages-frequency
:chats/loading?
:dimensions/window]))] :dimensions/window]))]
{:logs/archive-logs [db-json {:logs/archive-logs [db-json
(if (= transport :email) (if (= transport :email)
-18
View File
@@ -1,18 +0,0 @@
(ns legacy.status-im.utils.prices
(:require
[status-im.common.json-rpc.events :as json-rpc]))
(defn- format-price-resp
[resp to mainnet?]
(if mainnet?
resp
{:ETH (into {}
(for [[_ price] resp]
{(keyword to) price}))}))
(defn get-prices
[from to mainnet? on-success on-error]
(json-rpc/call {:method "wallet_fetchPrices"
:params [from to]
:on-success (fn [resp] (on-success (format-price-resp resp to mainnet?)))
:on-error on-error}))
-4
View File
@@ -535,10 +535,6 @@
[] []
(.logFileDirectory ^js (log-manager))) (.logFileDirectory ^js (log-manager)))
(defn init-status-go-logging
[{:keys [enable? mobile-system? log-level log-request-go? callback]}]
(.initLogging ^js (log-manager) enable? mobile-system? log-level log-request-go? callback))
(defn get-random-mnemonic (defn get-random-mnemonic
[callback] [callback]
(.getRandomMnemonic ^js (account-manager) #(callback (types/json->clj %)))) (.getRandomMnemonic ^js (account-manager) #(callback (types/json->clj %))))
@@ -0,0 +1,34 @@
(ns quo.components.cards.wallet-card.component-spec
(:require
[quo.components.cards.wallet-card.view :as wallet-card]
[quo.foundations.resources :as resources]
[test-helpers.component :as h]))
(def ^:private base-props
{:image (resources/get-image :keycard-logo)
:title "Buy"
:subtitle "Start investing now"})
(h/describe "cards: wallet card"
(h/test "Test default render"
(let [event (h/mock-fn)]
(h/render-with-theme-provider [wallet-card/view
(assoc base-props
:on-press
event)])
(h/is-truthy (h/get-by-label-text :wallet-card))
(h/is-truthy (h/get-by-text "Buy"))
(h/is-truthy (h/get-by-text "Start investing now"))
(h/is-truthy (h/get-by-label-text :image))
(h/fire-event :press (h/get-by-label-text :wallet-card))
(h/was-called event)))
(h/test "Test render with dismissible prop"
(let [event (h/mock-fn)]
(h/render-with-theme-provider [wallet-card/view
(assoc base-props
:dismissible? true
:on-press-close event)])
(h/is-truthy (h/get-by-label-text :close-icon))
(h/fire-event :press (h/get-by-label-text :icon-container))
(h/was-called event))))
@@ -0,0 +1,15 @@
(ns quo.components.cards.wallet-card.schema)
(def ?schema
[:=>
[:catn
[:props
[:map {:closed true}
[:image :schema.common/image-source]
[:title :string]
[:subtitle :string]
[:dismissible? {:optional true} :boolean]
[:on-press {:optional true} fn?]
[:on-press-close {:optional true} fn?]
[:container-style {:optional true} :map]]]]
:any])
@@ -0,0 +1,31 @@
(ns quo.components.cards.wallet-card.style
(:require [quo.foundations.colors :as colors]
[quo.foundations.shadows :as shadows]))
(defn root-container
[theme container-style]
(merge (shadows/get 2 theme)
{:border-radius 16
:padding-vertical 10
:padding-horizontal 12
:width 161
:background-color (colors/theme-colors colors/white colors/neutral-90 theme)}
container-style))
(def top-container
{:flex-direction :row
:height 32
:justify-content :space-between
:margin-bottom 8})
(def image
{:height 32
:width 32})
(defn title
[theme]
{:color (colors/theme-colors colors/neutral-100 colors/white theme)})
(defn subtitle
[theme]
{:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)})
@@ -0,0 +1,44 @@
(ns quo.components.cards.wallet-card.view
(:require [quo.components.cards.wallet-card.schema :as component-schema]
[quo.components.cards.wallet-card.style :as style]
[quo.components.icon :as icon]
[quo.components.markdown.text :as text]
[quo.theme :as quo.theme]
[react-native.core :as rn]
[react-native.fast-image :as fast-image]
[schema.core :as schema]))
(defn- view-internal
[{:keys [image title subtitle dismissible? on-press on-press-close container-style]}]
(let [theme (quo.theme/use-theme)]
[rn/view {:style (style/root-container theme container-style)}
[rn/pressable
{:on-press on-press
:accessibility-label :wallet-card}
[rn/view {:style style/top-container}
[fast-image/fast-image
{:style style/image
:source image
:accessibility-label :image}]
(when dismissible?
[rn/pressable
{:on-press on-press-close
:accessibility-label :icon-container
:hit-slop {:top 5 :bottom 5 :left 5 :right 5}}
[icon/icon :i/close
{:size 12
:accessibility-label :close-icon}]])]
[text/text
{:style (style/title theme)
:size :paragraph-1
:weight :semi-bold
:number-of-lines 1}
title]
[text/text
{:style (style/subtitle theme)
:size :paragraph-2
:weight :regular
:number-of-lines 1}
subtitle]]]))
(def view (schema/instrument #'view-internal component-schema/?schema))
+6 -5
View File
@@ -2,11 +2,12 @@
(defn container (defn container
[container-style] [container-style]
(merge container-style (merge
{:padding-vertical 7 {:padding-vertical 7
:padding-horizontal 20 :padding-horizontal 20
:flex-direction :row :flex-direction :row
:align-items :flex-start})) :align-items :flex-start}
container-style))
(def index (def index
{:margin-left 5}) {:margin-left 5})
+3 -1
View File
@@ -41,7 +41,7 @@
(defn view (defn view
[{:keys [title description tag-picture tag-name description-after-tag step-number [{:keys [title description tag-picture tag-name description-after-tag step-number
customization-color type blur? container-style] customization-color type blur? container-style icon icon-props]
:or {type :bullet}}] :or {type :bullet}}]
(let [theme (quo.theme/use-theme)] (let [theme (quo.theme/use-theme)]
[rn/view {:style (style/container container-style)} [rn/view {:style (style/container container-style)}
@@ -54,6 +54,8 @@
:type (if customization-color :complete :neutral)} step-number] :type (if customization-color :complete :neutral)} step-number]
:lock :lock
[icon/icon :i/locked {:color (get-colors theme blur?)}] [icon/icon :i/locked {:color (get-colors theme blur?)}]
:custom-icon
[icon/icon icon icon-props]
[icon/icon :i/bullet {:color (get-colors theme blur?)}])] [icon/icon :i/bullet {:color (get-colors theme blur?)}])]
[rn/view {:style style/text-container} [rn/view {:style style/text-container}
(when title (when title
+2 -2
View File
@@ -6,7 +6,7 @@
[react-native.core :as rn])) [react-native.core :as rn]))
(defn view (defn view
[{:keys [number-of-pins number-of-filled-pins error? info] [{:keys [number-of-pins number-of-filled-pins error? info info-error?]
:or {number-of-pins 6 number-of-filled-pins 0}}] :or {number-of-pins 6 number-of-filled-pins 0}}]
(let [theme (quo.theme/use-theme)] (let [theme (quo.theme/use-theme)]
[rn/view {:style {:align-items :center}} [rn/view {:style {:align-items :center}}
@@ -20,7 +20,7 @@
(= i (inc number-of-filled-pins)) :active)}])] (= i (inc number-of-filled-pins)) :active)}])]
(when info (when info
[text/text [text/text
{:style {:color (if error? {:style {:color (if (or error? info-error?)
(colors/theme-colors colors/danger-50 colors/danger-60 theme) (colors/theme-colors colors/danger-50 colors/danger-60 theme)
(colors/theme-colors colors/neutral-50 colors/neutral-40 theme))} (colors/theme-colors colors/neutral-50 colors/neutral-40 theme))}
:size :paragraph-2} :size :paragraph-2}
+8 -25
View File
@@ -1,7 +1,6 @@
(ns quo.components.utilities.token.view (ns quo.components.utilities.token.view
(:require (:require
[clojure.string :as string] [clojure.string :as string]
[quo.components.markdown.text :as quo]
[quo.components.utilities.token.loader :as token-loader] [quo.components.utilities.token.loader :as token-loader]
[react-native.core :as rn] [react-native.core :as rn]
[schema.core :as schema] [schema.core :as schema]
@@ -33,22 +32,7 @@
:height size-number))) :height size-number)))
(def ^:private b64-png-image-prefix "data:image/png;base64,") (def ^:private b64-png-image-prefix "data:image/png;base64,")
(def ^:const default-token-image (js/require "../resources/images/tokens/default-token.png"))
(defn temp-empty-symbol
[token size style]
[rn/view
{:style (token-style (merge {:justify-content :center
:align-items :center
:border-radius 20
:border-width 1
:border-color :grey}
style)
size)}
[quo/text {:style {:color :grey}}
(some-> token
name
first
string/capitalize)]])
(defn- normalize-b64-string (defn- normalize-b64-string
[b64-image] [b64-image]
@@ -69,13 +53,12 @@
" "
[{:keys [token size style image-source] [{:keys [token size style image-source]
:or {size 32}}] :or {size 32}}]
(let [img-src (if (string? image-source) (let [img-src (if (string? image-source)
(normalize-b64-string image-source) (normalize-b64-string image-source)
image-source)] image-source)
(if-let [existing-source (or img-src (token-loader/get-token-image token))] token-image (or img-src (token-loader/get-token-image token) default-token-image)]
[rn/image [rn/image
{:style (token-style style size) {:style (token-style style size)
:source existing-source}] :source token-image}]))
[temp-empty-symbol token size style])))
(def view (schema/instrument #'view-internal ?schema)) (def view (schema/instrument #'view-internal ?schema))
+26 -21
View File
@@ -121,33 +121,38 @@
[linear-gradient/linear-gradient [linear-gradient/linear-gradient
{:start {:x 0 :y 0} {:start {:x 0 :y 0}
:end {:x 1 :y 0} :end {:x 1 :y 0}
:colors [(colors/theme-colors colors/white colors/neutral-100 theme) :colors [(colors/theme-colors colors/white colors/neutral-95 theme)
(colors/theme-colors colors/white-opa-10 colors/neutral-100-opa-10 theme)] (colors/theme-colors colors/white-opa-10 colors/neutral-95-opa-10 theme)]
:style style/gradient-start}]) :style style/gradient-start}])
(when (and overflow? disabled?) (when (and overflow? disabled?)
[linear-gradient/linear-gradient [linear-gradient/linear-gradient
{:start {:x 0 :y 0} {:start {:x 0 :y 0}
:end {:x 1 :y 0} :end {:x 1 :y 0}
:colors [(colors/theme-colors colors/white-opa-10 colors/neutral-100-opa-10 theme) :colors [(colors/theme-colors colors/white-opa-10 colors/neutral-95-opa-10 theme)
(colors/theme-colors colors/white colors/neutral-100 theme)] (colors/theme-colors colors/white colors/neutral-95 theme)]
:style style/gradient-end}]) :style style/gradient-end}])
[rn/text-input (if-not input-disabled?
(cond-> {:ref set-input-ref [rn/text-input
:style (style/input disabled? error? theme) (cond-> {:ref set-input-ref
:placeholder-text-color (colors/theme-colors colors/neutral-40 :style (style/input disabled? error? theme)
colors/neutral-50 :placeholder-text-color (colors/theme-colors colors/neutral-40
theme) colors/neutral-50
:keyboard-type :numeric theme)
:editable (not input-disabled?) :keyboard-type :numeric
:auto-focus auto-focus? :editable (not input-disabled?)
:on-focus on-input-focus :auto-focus auto-focus?
:on-change-text on-change-text :on-focus on-input-focus
:on-layout on-layout-text-input :on-change-text on-change-text
:on-selection-change on-selection-change :on-layout on-layout-text-input
:show-soft-input-on-focus show-keyboard? :on-selection-change on-selection-change
:default-value default-value :show-soft-input-on-focus show-keyboard?
:placeholder "0"} :default-value default-value
controlled-input? (assoc :value value))]] :placeholder "0"}
controlled-input? (assoc :value value))]
[rn/text
{:style (style/input disabled? error? theme)
:on-layout on-layout-text-input}
(or value "0")])]
[text/text [text/text
{:size :paragraph-2 {:size :paragraph-2
:weight :semi-bold :weight :semi-bold
@@ -6,7 +6,8 @@
[:catn [:catn
[:props [:props
[:map [:map
[:transaction {:optional true} [:maybe [:enum :receive :send :swap :bridge :buy :destroy :mint]]] [:transaction {:optional true}
[:maybe [:enum :receive :send :swap :bridge :buy :destroy :mint :approval]]]
[:status {:optional true} [:maybe [:enum :pending :confirmed :finalised :failed]]] [:status {:optional true} [:maybe [:enum :pending :confirmed :finalised :failed]]]
[:counter {:optional true} [:maybe :int]] [:counter {:optional true} [:maybe :int]]
[:timestamp {:optional true} [:maybe :string]] [:timestamp {:optional true} [:maybe :string]]
@@ -41,7 +41,8 @@
colors/white-opa-10)}) colors/white-opa-10)})
(def timestamp-container (def timestamp-container
{:margin-left 4}) {:margin-left 4
:flex 1})
(defn timestamp (defn timestamp
[theme blur?] [theme blur?]
@@ -12,22 +12,24 @@
[utils.i18n :as i18n])) [utils.i18n :as i18n]))
(def transaction-translation (def transaction-translation
{:receive [i18n/label :t/receive] {:receive [i18n/label :t/receive]
:send [i18n/label :t/send] :send [i18n/label :t/send]
:swap [i18n/label :t/swap] :swap [i18n/label :t/swap]
:bridge [i18n/label :t/bridge] :bridge [i18n/label :t/bridge]
:buy [i18n/label :t/buy] :buy [i18n/label :t/buy]
:destroy [i18n/label :t/destroy] :destroy [i18n/label :t/destroy]
:mint [i18n/label :t/mint]}) :mint [i18n/label :t/mint]
:approval [i18n/label :t/set-spending-cap]})
(def transaction-icon (def transaction-icon
{:receive :i/receive {:receive :i/receive
:send :i/send :send :i/send
:swap :i/transaction :swap :i/transaction
:bridge :i/bridge :bridge :i/bridge
:buy :i/buy :buy :i/buy
:destroy :i/destroy :destroy :i/destroy
:mint :i/mint}) :mint :i/mint
:approval :i/token-sales})
(def status-icon (def status-icon
{:pending :i/pending-state {:pending :i/pending-state
@@ -39,7 +41,8 @@
[{:keys [transaction [{:keys [transaction
timestamp timestamp
counter counter
blur?] blur?
on-press-options]
:or {transaction :receive :or {transaction :receive
counter 1}} counter 1}}
theme] theme]
@@ -64,7 +67,13 @@
:size :label :size :label
:style (style/timestamp theme blur?) :style (style/timestamp theme blur?)
:accessibility-label :transaction-timestamp} :accessibility-label :transaction-timestamp}
timestamp]]]) timestamp]]
(when on-press-options
[rn/pressable
{:on-press on-press-options
:hit-slop {:top 10 :bottom 10 :left 10 :right 10}}
[icon/icon :i/options
{:size 20}]])])
(defn transaction-icon-view (defn transaction-icon-view
[{:keys [blur? transaction status] [{:keys [blur? transaction status]
@@ -120,8 +129,8 @@
:accessibility-label :wallet-activity :accessibility-label :wallet-activity
:disabled (= state :disabled) :disabled (= state :disabled)
:on-press on-press :on-press on-press
:on-press-in on-press-in :on-press-in (when on-press on-press-in)
:on-press-out on-press-out} :on-press-out (when on-press on-press-out)}
[rn/view {:style style/container} [rn/view {:style style/container}
[transaction-icon-view props theme] [transaction-icon-view props theme]
[rn/view {:style {:flex 1}} [rn/view {:style {:flex 1}}
+2
View File
@@ -28,6 +28,7 @@
quo.components.calendar.calendar-day.view quo.components.calendar.calendar-day.view
quo.components.calendar.calendar-year.view quo.components.calendar.calendar-year.view
quo.components.calendar.calendar.view quo.components.calendar.calendar.view
quo.components.cards.wallet-card.view
quo.components.code.snippet-preview.view quo.components.code.snippet-preview.view
quo.components.code.snippet.view quo.components.code.snippet.view
quo.components.colors.color-picker.view quo.components.colors.color-picker.view
@@ -241,6 +242,7 @@
;;;; Cards ;;;; Cards
(def small-option-card quo.components.onboarding.small-option-card.view/small-option-card) (def small-option-card quo.components.onboarding.small-option-card.view/small-option-card)
(def keycard quo.components.keycard.view/keycard) (def keycard quo.components.keycard.view/keycard)
(def wallet-card quo.components.cards.wallet-card.view/view)
;;;; Colors ;;;; Colors
(def color-picker quo.components.colors.color-picker.view/view) (def color-picker quo.components.colors.color-picker.view/view)
+1
View File
@@ -91,6 +91,7 @@
;;95 with transparency ;;95 with transparency
(def neutral-95-opa-0 (alpha neutral-95 0)) (def neutral-95-opa-0 (alpha neutral-95 0))
(def neutral-95-opa-10 (alpha neutral-95 0.1))
(def neutral-95-opa-60 (alpha neutral-95 0.6)) (def neutral-95-opa-60 (alpha neutral-95 0.6))
(def neutral-95-opa-70 (alpha neutral-95 0.7)) (def neutral-95-opa-70 (alpha neutral-95 0.7))
(def neutral-95-opa-80 (alpha neutral-95 0.8)) (def neutral-95-opa-80 (alpha neutral-95 0.8))
+17 -12
View File
@@ -9,6 +9,7 @@
gestureHandlerRootHOC gestureHandlerRootHOC
FlatList FlatList
ScrollView)] ScrollView)]
[react-native.core :as rn]
[react-native.flat-list :as rn-flat-list] [react-native.flat-list :as rn-flat-list]
[reagent.core :as reagent])) [reagent.core :as reagent]))
@@ -112,17 +113,21 @@
render-fn] render-fn]
:or {sticky-section-headers-enabled true} :or {sticky-section-headers-enabled true}
:as props}] :as props}]
(let [data (flatten-sections sections)] (let [data (flatten-sections sections)
render-item (rn/use-callback
(fn [p1 p2 p3 p4]
[:<>
(if (:header? p1)
[render-section-header-fn p1 p2 p3 p4]
[render-fn p1 p2 p3 p4])
(when (and render-section-footer-fn
(is-last-item-in-section data p2))
[render-section-footer-fn p1 p2 p3 p4])])
[render-fn render-section-header-fn render-section-footer-fn])]
[flat-list [flat-list
(merge props (merge props
{:data data {:data data
:render-fn (fn [p1 p2 p3 p4] :render-fn render-item
[:<> :sticky-header-indices
(if (:header? p1) (when sticky-section-headers-enabled
[render-section-header-fn p1 p2 p3 p4] (find-sticky-indices data))})]))
[render-fn p1 p2 p3 p4])
(when (and render-section-footer-fn
(is-last-item-in-section data p2))
[render-section-footer-fn p1 p2 p3 p4])])
:sticky-header-indices (when sticky-section-headers-enabled
(find-sticky-indices data))})]))
@@ -47,7 +47,8 @@
animating? (reagent/atom true) animating? (reagent/atom true)
set-animating-true #(reset! animating? true) set-animating-true #(reset! animating? true)
set-animating-false (fn [ms] set-animating-false (fn [ms]
(js/setTimeout #(reset! animating? false) ms))] (js/setTimeout #(reset! animating? false) ms))
on-scroll-update #(on-scroll % curr-scroll)]
(fn [{:keys [content skip-background?]}] (fn [{:keys [content skip-background?]}]
(let [theme (quo.theme/use-theme) (let [theme (quo.theme/use-theme)
{:keys [top] :as insets} (safe-area/get-insets) {:keys [top] :as insets} (safe-area/get-insets)
@@ -94,5 +95,5 @@
:close close :close close
:scroll-enabled? scroll-enabled? :scroll-enabled? scroll-enabled?
:current-scroll curr-scroll :current-scroll curr-scroll
:on-scroll #(on-scroll % curr-scroll) :on-scroll on-scroll-update
:sheet-animating? animating?}]]]])))) :sheet-animating? animating?}]]]]))))
@@ -150,15 +150,19 @@
(defn- fiat->crypto (defn- fiat->crypto
[value conversion-rate] [value conversion-rate]
(-> value (if-not (string/blank? value)
(money/fiat->crypto conversion-rate) (-> value
(wallet-utils/cut-crypto-decimals-to-fit-usd-cents conversion-rate))) (money/fiat->crypto conversion-rate)
(wallet-utils/cut-crypto-decimals-to-fit-usd-cents conversion-rate))
""))
(defn- crypto->fiat (defn- crypto->fiat
[value conversion-rate] [value conversion-rate]
(-> value (if-not (string/blank? value)
(money/crypto->fiat conversion-rate) (-> value
(wallet-utils/cut-fiat-balance-to-two-decimals))) (money/crypto->fiat conversion-rate)
(wallet-utils/cut-fiat-balance-to-two-decimals))
""))
(defn ->crypto (defn ->crypto
[state conversion-rate] [state conversion-rate]
@@ -61,14 +61,17 @@
(defn view (defn view
[{:keys [header footer customization-color footer-container-padding header-container-style [{:keys [header footer customization-color footer-container-padding header-container-style
content-container-style gradient-cover? keyboard-should-persist-taps shell-overlay? content-container-style gradient-cover? keyboard-should-persist-taps shell-overlay?
blur-options content-avoid-keyboard? automatically-adjust-keyboard-insets] blur-options content-avoid-keyboard? automatically-adjust-keyboard-insets
;; Note: Provide `initial-header-height` to avoid a jump due to the on-layout 1-frame
;; delay. Revisit this on RN 0.76 since the on-layout delay has been fixed.
initial-header-height]
:or {footer-container-padding (safe-area/get-top)}} :or {footer-container-padding (safe-area/get-top)}}
& children] & children]
(reagent/with-let [scroll-view-ref (atom nil) (reagent/with-let [scroll-view-ref (atom nil)
set-scroll-ref #(reset! scroll-view-ref %) set-scroll-ref #(reset! scroll-view-ref %)
window-height (:height (rn/get-window)) window-height (:height (rn/get-window))
footer-container-height (reagent/atom 0) footer-container-height (reagent/atom 0)
header-height (reagent/atom 0) header-height (reagent/atom nil)
content-container-height (reagent/atom 0) content-container-height (reagent/atom 0)
content-scroll-y (reagent/atom 0) content-scroll-y (reagent/atom 0)
keyboard-height (reagent/atom 0) keyboard-height (reagent/atom 0)
@@ -112,7 +115,7 @@
{:style {:style
(if content-avoid-keyboard? (if content-avoid-keyboard?
(style/content-keyboard-avoiding-view (style/content-keyboard-avoiding-view
{:top @header-height {:top (or @header-height initial-header-height)
:bottom (if keyboard-shown? :bottom (if keyboard-shown?
@footer-container-height @footer-container-height
(+ bottom-safe-area @footer-container-height))}) (+ bottom-safe-area @footer-container-height))})
+2 -2
View File
@@ -159,10 +159,10 @@
:add-divider? needs-divider?})) :add-divider? needs-divider?}))
(defn clear-history-entry (defn clear-history-entry
[chat-id needs-divider?] [chat needs-divider?]
(entry {:icon :i/delete (entry {:icon :i/delete
:label (i18n/label :t/clear-history) :label (i18n/label :t/clear-history)
:on-press #(clear-history-action chat-id) :on-press #(clear-history-action chat)
:danger? true :danger? true
:sub-label nil :sub-label nil
:accessibility-label :clear-history :accessibility-label :clear-history
+17 -32
View File
@@ -1,12 +1,9 @@
(ns status-im.common.log (ns status-im.common.log
(:require (:require
[clojure.pprint :as promesa] [clojure.pprint :as pprint]
[clojure.string :as string] [clojure.string :as string]
[native-module.core :as native-module]
[re-frame.core :as re-frame] [re-frame.core :as re-frame]
[status-im.config :as config] [taoensso.timbre :as log]))
[taoensso.timbre :as log]
[utils.transforms :as transforms]))
(def logs-queue (atom #queue [])) (def logs-queue (atom #queue []))
(def max-log-entries 1000) (def max-log-entries 1000)
@@ -21,33 +18,21 @@
(defn setup (defn setup
[level] [level]
(let [handle-error (fn [res] (log/merge-config! {:ns-filter {:allow #{"*"} :deny #{"taoensso.sente"}}})
(let [{:keys [error]} (transforms/json->clj res)] (when-not (string/blank? level)
(when-not (string/blank? error) (log/set-min-level! (-> level
(log/error "init statusgo logging failed" error)))) string/lower-case
logging-params {:enable? true keyword))
:mobile-system? false (log/merge-config!
:log-level level {:output-fn (fn [& data]
:log-request-go? config/log-request-go (let [res (apply log/default-output-fn data)]
:callback handle-error}] (add-log-entry res)
(log/merge-config! {:ns-filter {:allow #{"*"} :deny #{"taoensso.sente"}}}) res))
(if (string/blank? level) :middleware [(fn [data]
(native-module/init-status-go-logging (merge logging-params {:log-level "WARN"})) (update data
(do :vargs
(log/set-min-level! (-> level (partial mapv
string/lower-case #(if (string? %) % (with-out-str (pprint/pprint %))))))]})))
keyword))
(log/merge-config!
{:output-fn (fn [& data]
(let [res (apply log/default-output-fn data)]
(add-log-entry res)
res))
:middleware [(fn [data]
(update data
:vargs
(partial mapv
#(if (string? %) % (with-out-str (promesa/pprint %))))))]})
(native-module/init-status-go-logging logging-params)))))
(re-frame/reg-fx (re-frame/reg-fx
:logs/set-level :logs/set-level
@@ -1,19 +0,0 @@
(ns status-im.common.metrics-confirmation-modal.style)
(def points-wrapper
{:margin-top 11
:margin-horizontal 20
:gap 21
:margin-bottom 8})
(def item-text
{:margin-left -24})
(def info-text
{:margin-top -5})
(def privacy-policy
{:margin-top 4
:margin-horizontal 20
:margin-bottom 20
:align-items :center})
@@ -1,119 +0,0 @@
(ns status-im.common.metrics-confirmation-modal.view
(:require
[quo.core :as quo]
[quo.foundations.colors :as colors]
[quo.theme]
[react-native.core :as rn]
[status-im.common.metrics-confirmation-modal.style :as style]
[status-im.common.privacy.view :as privacy]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn- dismiss-keyboard
[]
(rf/dispatch [:dismiss-keyboard]))
(defn- hide-bottom-sheet
[]
(rf/dispatch [:hide-bottom-sheet]))
(def ^:private will-receive-for-current-points
[:t/number-of-messages-sent
:t/connected-peers
:t/successful-messages-rate
:t/connection-type
:t/os-app-version-bandwidth])
(def ^:private will-receive-for-all-points
[:t/action-logs
:t/ip-addresses-uuid])
(def ^:private not-receive-points
[:t/your-profile-information
:t/your-addresses
:t/information-you-input-and-send])
(defn- bullet-points
[{:keys [title points lock?]}]
[rn/view
[quo/text {:weight :semi-bold}
title]
(for [label points]
^{:key label}
[quo/markdown-list
{:description (i18n/label label)
:blur? true
:type (when lock? :lock)
:container-style style/item-text}])])
(defn- on-share-usage
[]
(rf/dispatch [:centralized-metrics/toggle-centralized-metrics true true])
(hide-bottom-sheet))
(defn- on-do-not-share
[]
(rf/dispatch [:centralized-metrics/toggle-centralized-metrics false true])
(hide-bottom-sheet))
(declare view)
(defn- on-privacy-policy-press
[]
(rf/dispatch
[:show-bottom-sheet
{:content privacy/privacy-statement
:on-close (fn []
(rf/dispatch [:show-bottom-sheet
{:content view
:theme :dark
:shell? true}]))
:theme :dark
:shell? true}]))
(defn- privacy-policy-text
[]
[rn/view {:style style/privacy-policy}
[quo/text
[quo/text
{:style {:color colors/white-opa-50}
:size :paragraph-2}
(i18n/label :t/more-details-in-privacy-policy-1)]
[quo/text
{:size :paragraph-2
:weight :bold
:on-press on-privacy-policy-press}
(i18n/label :t/more-details-in-privacy-policy-2)]]])
(defn view
[]
(rn/use-mount #(dismiss-keyboard))
[:<>
[quo/drawer-top
{:title (i18n/label :t/help-us-improve-status)
:description (i18n/label :t/collecting-usage-data)}]
[rn/scroll-view
[rn/view {:style style/points-wrapper}
[bullet-points
{:title (i18n/label :t/we-will-receive-from-all-profiles)
:points will-receive-for-all-points}]
[bullet-points
{:title (i18n/label :t/we-will-receive-from-the-current-profile)
:points will-receive-for-current-points}]
[bullet-points
{:title (i18n/label :t/what-we-wont-receive)
:points not-receive-points
:lock? true}]
[quo/text
{:size :paragraph-2
:style style/info-text}
(i18n/label :t/sharing-usage-data-can-be-turned-off)]]]
[quo/bottom-actions
{:actions :two-actions
:blur? true
:button-one-label (i18n/label :t/help-us-improve-status)
:button-one-props {:on-press on-share-usage}
:button-two-label (i18n/label :t/not-now)
:button-two-props {:type :grey
:on-press on-do-not-share}}]
[privacy-policy-text]])
+7 -2
View File
@@ -3,6 +3,7 @@
(def ui (def ui
{:add-new-contact (js/require "../resources/images/ui2/add-contact.png") {:add-new-contact (js/require "../resources/images/ui2/add-contact.png")
:biometrics (js/require "../resources/images/ui2/biometrics.png") :biometrics (js/require "../resources/images/ui2/biometrics.png")
:chat-privately-with-friends (js/require "../resources/images/ui2/chat-privately-with-friends.png")
:desktop-how-to-pair-sign-in (js/require "../resources/images/ui2/desktop-how-to-pair-sign-in.png") :desktop-how-to-pair-sign-in (js/require "../resources/images/ui2/desktop-how-to-pair-sign-in.png")
:desktop-how-to-pair-logged-in (js/require :desktop-how-to-pair-logged-in (js/require
"../resources/images/ui2/desktop-how-to-pair-logged-in.png") "../resources/images/ui2/desktop-how-to-pair-logged-in.png")
@@ -17,8 +18,8 @@
:generate-keys1 (js/require "../resources/images/ui2/generating-keys-1.png") :generate-keys1 (js/require "../resources/images/ui2/generating-keys-1.png")
:ethereum-address (js/require "../resources/images/ui2/ethereum-address.png") :ethereum-address (js/require "../resources/images/ui2/ethereum-address.png")
:use-keycard (js/require "../resources/images/ui2/keycard.png") :use-keycard (js/require "../resources/images/ui2/keycard.png")
:use-recovery-phrase (js/require "../resources/images/ui2/recovery-phrase.png")
:check-your-keycard (js/require "../resources/images/ui2/check-your-keycard.png") :check-your-keycard (js/require "../resources/images/ui2/check-your-keycard.png")
:onboarding-illustration (js/require "../resources/images/ui2/onboarding_illustration.png")
:qr-code (js/require "../resources/images/ui2/qr-code.png") :qr-code (js/require "../resources/images/ui2/qr-code.png")
:keycard-logo (js/require "../resources/images/ui2/keycard-logo.png") :keycard-logo (js/require "../resources/images/ui2/keycard-logo.png")
:keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png") :keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png")
@@ -34,9 +35,13 @@
:notifications (js/require "../resources/images/ui2/notifications.png") :notifications (js/require "../resources/images/ui2/notifications.png")
:nfc-prompt (js/require "../resources/images/ui2/nfc-prompt.png") :nfc-prompt (js/require "../resources/images/ui2/nfc-prompt.png")
:nfc-success (js/require "../resources/images/ui2/nfc-success.png") :nfc-success (js/require "../resources/images/ui2/nfc-success.png")
:own-buy-and-swap-your-crypto (js/require "../resources/images/ui2/own-buy-and-swap-your-crypto.png")
:preparing-status (js/require "../resources/images/ui2/preparing-status.png") :preparing-status (js/require "../resources/images/ui2/preparing-status.png")
:store-your-assets-on-keycard (js/require "../resources/images/ui2/store-your-assets-on-keycard.png")
:syncing-devices (js/require "../resources/images/ui2/syncing_devices.png") :syncing-devices (js/require "../resources/images/ui2/syncing_devices.png")
:syncing-wrong (js/require "../resources/images/ui2/syncing_wrong.png")}) :syncing-wrong (js/require "../resources/images/ui2/syncing_wrong.png")
:buy (js/require "../resources/images/ui2/buy.png")
:receive (js/require "../resources/images/ui2/receive.png")})
(def ui-themed (def ui-themed
{:angry-man {:angry-man
+6 -6
View File
@@ -36,15 +36,15 @@
"wallet" "wallet"
{:fx [[:dispatch [:wallet/signal-received event-js]]]} {:fx [[:dispatch [:wallet/signal-received event-js]]]}
"wallet.sign.transactions"
{:fx [[:dispatch
[:standard-auth/authorize-with-keycard
{:on-complete #(rf/dispatch [:keycard/sign-hash %
(first (transforms/js->clj event-js))])}]]]}
"wallet.suggested.routes" "wallet.suggested.routes"
{:fx [[:dispatch [:wallet/handle-suggested-routes (transforms/js->clj event-js)]]]} {:fx [[:dispatch [:wallet/handle-suggested-routes (transforms/js->clj event-js)]]]}
"wallet.router.sign-transactions"
{:fx [[:dispatch [:wallet/sign-transactions-signal-received (transforms/js->clj event-js)]]]}
"wallet.router.transactions-sent"
{:fx [[:dispatch [:wallet/transactions-sent-signal-received (transforms/js->clj event-js)]]]}
"envelope.sent" "envelope.sent"
(messages.transport/update-envelopes-status (messages.transport/update-envelopes-status
cofx cofx
@@ -116,6 +116,7 @@
:on-close #(rf/dispatch [:standard-auth/reset-login-password]) :on-close #(rf/dispatch [:standard-auth/reset-login-password])
:content (fn [] :content (fn []
[keycard.pin/auth {:on-complete on-complete}])}]]]}) [keycard.pin/auth {:on-complete on-complete}])}]]]})
(rf/reg-event-fx :standard-auth/authorize-with-keycard authorize-with-keycard) (rf/reg-event-fx :standard-auth/authorize-with-keycard authorize-with-keycard)
(defn authorize-with-password (defn authorize-with-password
@@ -3,6 +3,7 @@
(def error-message (def error-message
{:margin-top 8 {:margin-top 8
:flex-direction :row :flex-direction :row
:gap 4
:align-items :center}) :align-items :center})
(def auth-button (def auth-button
@@ -15,18 +15,18 @@
auth-method (rf/sub [:auth-method]) auth-method (rf/sub [:auth-method])
biometric-auth? (= auth-method constants/auth-method-biometric) biometric-auth? (= auth-method constants/auth-method-biometric)
on-complete (rn/use-callback on-complete (rn/use-callback
(fn [reset] (fn [reset-slider-fn]
(rf/dispatch [:standard-auth/authorize (js/setTimeout #(reset-slider-fn false) 500)
{:on-close (fn [success?] (rf/dispatch
(js/setTimeout #(reset success?) 200)) [:standard-auth/authorize
:auth-button-icon-left auth-button-icon-left {:auth-button-icon-left auth-button-icon-left
:theme theme :theme theme
:blur? blur? :blur? blur?
:keycard-supported? keycard-supported? :keycard-supported? keycard-supported?
:biometric-auth? biometric-auth? :biometric-auth? biometric-auth?
:on-auth-success on-auth-success :on-auth-success on-auth-success
:on-auth-fail on-auth-fail :on-auth-fail on-auth-fail
:auth-button-label auth-button-label}])) :auth-button-label auth-button-label}]))
(vec (conj dependencies on-auth-success on-auth-fail))) (vec (conj dependencies on-auth-success on-auth-fail)))
biometric-type (rf/sub [:biometrics/supported-type])] biometric-type (rf/sub [:biometrics/supported-type])]
[quo/slide-button [quo/slide-button
@@ -28,9 +28,10 @@
:long-enough? :long-enough?
:short-enough?))))) :short-enough?)))))
(def password-tip? (set constants/password-tips))
(defn strength (defn strength
[validations] [validations]
(->> (select-keys validations constants/password-tips) (->> validations
(vals) (filter #(and (password-tip? (key %)) (val %)))
(filter true?) (count)))
count))
+7 -1
View File
@@ -35,6 +35,12 @@
(def sepolia-chain-explorer-link "https://sepolia.etherscan.io/address/") (def sepolia-chain-explorer-link "https://sepolia.etherscan.io/address/")
(def optimism-sepolia-chain-explorer-link "https://sepolia-optimistic.etherscan.io/address/") (def optimism-sepolia-chain-explorer-link "https://sepolia-optimistic.etherscan.io/address/")
(def arbitrum-sepolia-chain-explorer-link "https://sepolia.arbiscan.io/address/") (def arbitrum-sepolia-chain-explorer-link "https://sepolia.arbiscan.io/address/")
(def mainnet-tx-details-base-link "https://etherscan.io/tx")
(def optimism-mainnet-tx-details-base-link "https://optimistic.etherscan.io/tx")
(def arbitrum-mainnet-tx-details-base-link "https://arbiscan.io/tx")
(def mainnet-sepolia-tx-details-base-link "https://sepolia.etherscan.io/tx")
(def optimism-sepolia-tx-details-base-link "https://sepolia-optimistic.etherscan.io/tx")
(def arbitrum-sepolia-tx-details-base-link "https://sepolia.arbiscan.io/tx")
(def opensea-link "https://opensea.io") (def opensea-link "https://opensea.io")
(def opensea-tesnet-link "https://testnets.opensea.io") (def opensea-tesnet-link "https://testnets.opensea.io")
@@ -71,7 +77,7 @@
;; CONFIG VALUES ;; CONFIG VALUES
(def log-level (string/upper-case (get-config :LOG_LEVEL ""))) (def log-level (string/upper-case (get-config :LOG_LEVEL "")))
(def log-request-go (enabled? (get-config :LOG_REQUEST_GO "0"))) (def api-logging-enabled? (enabled? (get-config :API_LOGGING_ENABLED "0")))
(def fleet (get-config :FLEET "")) (def fleet (get-config :FLEET ""))
(def apn-topic (get-config :APN_TOPIC "im.status.ethereum")) (def apn-topic (get-config :APN_TOPIC "im.status.ethereum"))
(def max-installations 2) (def max-installations 2)
+5
View File
@@ -76,6 +76,9 @@
(def ^:const timeline-chat-type 5) (def ^:const timeline-chat-type 5)
(def ^:const community-chat-type 6) (def ^:const community-chat-type 6)
(def ^:const chat-preview-type-community 0)
(def ^:const chat-preview-type-non-community 1)
(def ^:const contact-request-message-state-none 0) (def ^:const contact-request-message-state-none 0)
(def ^:const contact-request-message-state-pending 1) (def ^:const contact-request-message-state-pending 1)
(def ^:const contact-request-message-state-accepted 2) (def ^:const contact-request-message-state-accepted 2)
@@ -636,3 +639,5 @@
:more-than-five-minutes 4}) :more-than-five-minutes 4})
(def ^:const wallet-connect-transaction-refresh-interval-ms 10000) (def ^:const wallet-connect-transaction-refresh-interval-ms 10000)
(def ^:const native-token-symbol "ETH")
@@ -4,7 +4,6 @@
[re-frame.interceptor :as interceptor] [re-frame.interceptor :as interceptor]
status-im.contexts.centralized-metrics.effects status-im.contexts.centralized-metrics.effects
[status-im.contexts.centralized-metrics.tracking :as tracking] [status-im.contexts.centralized-metrics.tracking :as tracking]
[taoensso.timbre :as log]
[utils.re-frame :as rf])) [utils.re-frame :as rf]))
(defn push-event? (defn push-event?
@@ -16,7 +15,6 @@
[context] [context]
(when (push-event? (interceptor/get-coeffect context :db)) (when (push-event? (interceptor/get-coeffect context :db))
(when-let [event (tracking/metrics-event (interceptor/get-coeffect context :event))] (when-let [event (tracking/metrics-event (interceptor/get-coeffect context :event))]
(log/debug "tracking event" event)
(if (or (seq? event) (vector? event)) (if (or (seq? event) (vector? event))
(doseq [e event] (doseq [e event]
(native-module/add-centralized-metric e)) (native-module/add-centralized-metric e))
@@ -36,18 +34,10 @@
(assoc :centralized-metrics/enabled? enabled?) (assoc :centralized-metrics/enabled? enabled?)
(assoc :centralized-metrics/onboarding-enabled? (and onboarding? enabled?)))})) (assoc :centralized-metrics/onboarding-enabled? (and onboarding? enabled?)))}))
(rf/reg-event-fx :centralized-metrics/check-modal (rf/reg-event-fx :centralized-metrics/check-user-confirmation
(fn [{:keys [db]} [modal-view]] (fn [{:keys [db]}]
(when-not (:centralized-metrics/user-confirmed? db) (when-not (:centralized-metrics/user-confirmed? db)
{:fx [[:dispatch {:fx [[:dispatch [:navigate-to :screen/onboarding.share-usage]]]})))
[:show-bottom-sheet
{:content (fn [] [modal-view])
;; When in the profiles screen do biometric auth after the metrics sheet is dismissed
;; https://github.com/status-im/status-mobile/issues/20932
:on-close (when (= (:view-id db) :screen/profile.profiles)
#(rf/dispatch [:profile.login/login-with-biometric-if-available
(get-in db [:profile/login :key-uid])]))
:shell? true}]]]})))
(rf/reg-fx :effects.centralized-metrics/track (rf/reg-fx :effects.centralized-metrics/track
(fn [event] (fn [event]
@@ -6,12 +6,15 @@
[status-im.navigation.screens :as screens])) [status-im.navigation.screens :as screens]))
(defn key-value-event (defn key-value-event
[event-name event-value] ([event-name]
{:metric (key-value-event event-name nil))
{:eventName event-name ([event-name event-value]
:platform platform/os (cond-> {:metric
:appVersion build/app-short-version {:eventName event-name
:eventValue event-value}}) :platform platform/os
:appVersion build/app-short-version}}
event-value
(assoc-in [:metric :eventValue] event-value))))
(defn user-journey-event (defn user-journey-event
[action] [action]
@@ -41,11 +44,16 @@
(defn track-view-id-event (defn track-view-id-event
[view-id] [view-id]
(if-let [screen (get screens/screens-by-name view-id)] (let [screen (get screens/screens-by-name view-id)]
(when (get-in screen [:metrics :track?]) (cond-> []
(screen-event screen {})) (get-in screen [:metrics :track?])
(when (contains? view-ids-to-track view-id) (conj (screen-event screen {}))
(navigation-event (name view-id)))))
(contains? view-ids-to-track view-id)
(conj (navigation-event (name view-id)))
(= :screen/onboarding.syncing-results view-id)
(conj (key-value-event "onboarding-completed")))))
(defn navigated-to-collectibles-tab-event (defn navigated-to-collectibles-tab-event
[location] [location]
@@ -60,6 +68,13 @@
:centralized-metrics/toggle-centralized-metrics :centralized-metrics/toggle-centralized-metrics
(key-value-event "events.metrics-enabled" {:enabled rf-event-parameter}) (key-value-event "events.metrics-enabled" {:enabled rf-event-parameter})
:profile.login/non-critical-initialization
(key-value-event "user-logged-in")
(:profile.create/create-and-login
:profile.recover/recover-and-login)
(key-value-event "onboarding-completed")
:set-view-id :set-view-id
(track-view-id-event rf-event-parameter) (track-view-id-event rf-event-parameter)
@@ -42,19 +42,19 @@
(deftest track-view-id-event-test (deftest track-view-id-event-test
(testing "returns correct navigation event for view-id" (testing "returns correct navigation event for view-id"
(is (= {:metric (is (= [{:metric
{:eventName "navigation" {:eventName "navigation"
:platform platform-os :platform platform-os
:appVersion app-version :appVersion app-version
:eventValue {:viewId "communities-stack"}}} :eventValue {:viewId "communities-stack"}}}]
(tracking/track-view-id-event :communities-stack))) (tracking/track-view-id-event :communities-stack)))
(is (= {:metric (is (= [{:metric
{:eventName "navigation" {:eventName "navigation"
:platform platform-os :platform platform-os
:appVersion app-version :appVersion app-version
:eventValue {:viewId "onboarding.create-profile-info"}}} :eventValue {:viewId "onboarding.create-profile-password"}}}]
(tracking/track-view-id-event :screen/onboarding.create-profile))) (tracking/track-view-id-event :screen/onboarding.create-profile-password)))
(is (nil? (tracking/track-view-id-event :unknown-stack))))) (is (= [] (tracking/track-view-id-event :unknown-stack)))))
(deftest tracked-event-test (deftest tracked-event-test
(testing "returns correct event for given inputs" (testing "returns correct event for given inputs"
@@ -70,16 +70,16 @@
:appVersion app-version :appVersion app-version
:eventValue {:enabled true}}} :eventValue {:enabled true}}}
(tracking/metrics-event [:centralized-metrics/toggle-centralized-metrics true]))) (tracking/metrics-event [:centralized-metrics/toggle-centralized-metrics true])))
(is (= {:metric (is (= [{:metric
{:eventName "navigation" {:eventName "navigation"
:platform platform-os :platform platform-os
:appVersion app-version :appVersion app-version
:eventValue {:viewId "wallet-stack"}}} :eventValue {:viewId "wallet-stack"}}}]
(tracking/metrics-event [:set-view-id :wallet-stack]))) (tracking/metrics-event [:set-view-id :wallet-stack])))
(is (nil? (tracking/metrics-event [:unknown-event]))) (is (nil? (tracking/metrics-event [:unknown-event])))
(is (= {:metric (is (= [{:metric
{:eventName "navigation" {:eventName "navigation"
:platform platform-os :platform platform-os
:appVersion app-version :appVersion app-version
:eventValue {:viewId "onboarding.intro"}}} :eventValue {:viewId "onboarding.intro"}}}]
(tracking/metrics-event [:set-view-id :screen/onboarding.intro]))))) (tracking/metrics-event [:set-view-id :screen/onboarding.intro])))))
@@ -70,7 +70,7 @@
(re-frame/dispatch [:select-contact public-key]))))) (re-frame/dispatch [:select-contact public-key])))))
(defn contact-item-render (defn contact-item-render
[{:keys [public-key] :as item} set-has-error] [{:keys [public-key] :as item} _ _ {:keys [set-has-error]}]
(let [user-selected? (rf/sub [:is-contact-selected? public-key]) (let [user-selected? (rf/sub [:is-contact-selected? public-key])
on-toggle (fn [] on-toggle (fn []
(-> public-key (-> public-key
@@ -86,7 +86,7 @@
item])) item]))
(defn view (defn view
[{:keys [scroll-enabled? on-scroll close]}] [{:keys [on-scroll close]}]
(let [theme (quo.theme/use-theme) (let [theme (quo.theme/use-theme)
contacts (rf/sub [:contacts/sorted-and-grouped-by-first-letter]) contacts (rf/sub [:contacts/sorted-and-grouped-by-first-letter])
selected-contacts-count (rf/sub [:selected-contacts-count]) selected-contacts-count (rf/sub [:selected-contacts-count])
@@ -94,9 +94,6 @@
customization-color (rf/sub [:profile/customization-color]) customization-color (rf/sub [:profile/customization-color])
one-contact-selected? (= selected-contacts-count 1) one-contact-selected? (= selected-contacts-count 1)
[has-error? set-has-error] (rn/use-state false) [has-error? set-has-error] (rn/use-state false)
render-fn (rn/use-callback (fn [item]
(contact-item-render item set-has-error))
[set-has-error])
contacts-selected? (pos? selected-contacts-count) contacts-selected? (pos? selected-contacts-count)
{:keys [primary-name public-key]} (when one-contact-selected? {:keys [primary-name public-key]} (when one-contact-selected?
(rf/sub [:contacts/contact-by-identity (rf/sub [:contacts/contact-by-identity
@@ -136,8 +133,8 @@
:render-section-header-fn contact-list/contacts-section-header :render-section-header-fn contact-list/contacts-section-header
:render-section-footer-fn contact-list/contacts-section-footer :render-section-footer-fn contact-list/contacts-section-footer
:content-container-style {:padding-bottom 70} :content-container-style {:padding-bottom 70}
:render-fn render-fn :render-fn contact-item-render
:scroll-enabled @scroll-enabled? :render-data {:set-has-error set-has-error}
:on-scroll on-scroll}]) :on-scroll on-scroll}])
(when contacts-selected? (when contacts-selected?
[rn/view [rn/view
@@ -2,29 +2,39 @@
(:require (:require
[quo.foundations.colors :as colors] [quo.foundations.colors :as colors]
[react-native.platform :as platform] [react-native.platform :as platform]
[react-native.reanimated :as reanimated]
[status-im.contexts.chat.messenger.composer.constants :as constants])) [status-im.contexts.chat.messenger.composer.constants :as constants]))
(defn shadow (defn- add-shadow
[theme] [theme styles]
(if platform/ios? (if platform/ios?
{:shadow-radius (colors/theme-colors 30 50 theme) (assoc styles
:shadow-opacity (colors/theme-colors 0.1 0.7 theme) :shadow-radius (colors/theme-colors 30 50 theme)
:shadow-color colors/neutral-100 :shadow-opacity (colors/theme-colors 0.1 0.7 theme)
:shadow-offset {:width 0 :height (colors/theme-colors 8 12 theme)}} :shadow-color colors/neutral-100
{:elevation 10})) :shadow-offset {:width 0 :height (colors/theme-colors 8 12 theme)})
(assoc styles :elevation 10)))
(defn inner
[top theme]
(add-shadow theme
{:position :absolute
:top (- (+ 8 top))
:left 8
:right 8
:border-radius 16
:z-index 4
:max-height constants/mentions-max-height
:background-color (colors/theme-colors colors/white colors/neutral-95 theme)}))
(defn container (defn container
[opacity top theme] [opacity top theme]
(reanimated/apply-animations-to-style [{:opacity opacity}
{:opacity opacity} (add-shadow theme
(merge {:position :absolute
{:position :absolute :top (- (+ 8 top))
:top (- (+ 8 top)) :left 8
:left 8 :right 8
:right 8 :border-radius 16
:border-radius 16 :z-index 4
:z-index 4 :max-height constants/mentions-max-height
:max-height constants/mentions-max-height :background-color (colors/theme-colors colors/white colors/neutral-95 theme)})])
:background-color (colors/theme-colors colors/white colors/neutral-95 theme)}
(shadow theme))))
@@ -10,37 +10,36 @@
[status-im.contexts.chat.messenger.messages.constants :as messages.constants] [status-im.contexts.chat.messenger.messages.constants :as messages.constants]
[utils.re-frame :as rf])) [utils.re-frame :as rf]))
(defn mention-item (defn- mention-item
[user] [[user-key user]]
[contact-list-item/contact-list-item (with-meta
{:on-press #(rf/dispatch [:chat.ui/select-mention user])} [contact-list-item/contact-list-item {:on-press #(rf/dispatch [:chat.ui/select-mention user])}
user]) user]
{:key user-key}))
(defn view (defn view
[layout-height] [layout-height]
(let [suggestions (rf/sub [:chat/mention-suggestions]) (let [suggestions (rf/sub [:chat/mention-suggestions])
suggestions? (seq suggestions) suggestions? (seq suggestions)
theme (quo.theme/use-theme) theme (quo.theme/use-theme)
opacity (reanimated/use-shared-value (if suggestions? 1 0)) opacity (reanimated/use-shared-value (if suggestions? 1 0))
[suggestions-state set-suggestions-state] (rn/use-state suggestions) [suggestions-state
top (min constants/mentions-max-height set-suggestions-state] (rn/use-state suggestions)
(* (count suggestions-state) 56) top (min constants/mentions-max-height
(- @layout-height (* (count suggestions-state) 56)
(+ (safe-area/get-top) (- @layout-height
messages.constants/top-bar-height (+ (safe-area/get-top)
5)))] messages.constants/top-bar-height
5)))]
(rn/use-effect (rn/use-effect
(fn [] (fn []
(if suggestions? (if suggestions?
(set-suggestions-state suggestions) (set-suggestions-state suggestions)
(js/setTimeout #(set-suggestions-state suggestions) 300)) (js/setTimeout #(set-suggestions-state suggestions) 300))
(reanimated/animate opacity (if suggestions? 1 0))) (reanimated/animate opacity (if suggestions? 1 0)))
[suggestions?]) [suggestions])
[reanimated/view [reanimated/view {:style (style/container opacity top theme)}
{:style (style/container opacity top theme)} [rn/scroll-view
[rn/flat-list {:accessibility-label :mentions-list
{:keyboard-should-persist-taps :always :keyboard-should-persist-taps :always}
:data (vals suggestions-state) (map mention-item suggestions-state)]]))
:key-fn :key
:render-fn mention-item
:accessibility-label :mentions-list}]]))
@@ -225,7 +225,8 @@
distance-from-list-top distance-from-list-top
chat-list-scroll-y chat-list-scroll-y
(on-scroll-fn distance-atom layout-height))) (on-scroll-fn distance-atom layout-height)))
:style {:background-color (colors/theme-colors colors/white :style {:height "100%"
:background-color (colors/theme-colors colors/white
colors/neutral-95 colors/neutral-95
theme)} theme)}
:content-container-style (style/list-paddings add-padding-bottom?) :content-container-style (style/list-paddings add-padding-bottom?)
@@ -130,4 +130,12 @@
:role-permissions? true} :role-permissions? true}
:profile/test-networks-enabled? false}) :profile/test-networks-enabled? false})
(h/render [options/community-options-bottom-sheet {:id "test"}]) (h/render [options/community-options-bottom-sheet {:id "test"}])
(h/is-truthy (h/get-by-translation-text :t/unmute-community)))) (h/is-truthy (h/get-by-translation-text :t/unmute-community)))
(h/test "opened community"
(h/setup-subs {:communities/my-pending-request-to-join nil
:communities/community {:joined false
:spectated true}
:profile/test-networks-enabled? false})
(h/render [options/community-options-bottom-sheet {:id "test"}])
(h/is-truthy (h/get-by-translation-text :t/close-community))))
@@ -124,6 +124,14 @@
:on-press #(rf/dispatch [:show-bottom-sheet :on-press #(rf/dispatch [:show-bottom-sheet
{:content (fn [] [leave-menu/leave-sheet id color])}])}) {:content (fn [] [leave-menu/leave-sheet id color])}])})
(defn close-community
[id]
{:icon :i/close-circle
:label (i18n/label :t/close-community)
:accessibility-label :close-community
:danger? true
:on-press #(rf/dispatch [:communities/leave id])})
(defn cancel-request-to-join (defn cancel-request-to-join
[id request-id] [id request-id]
{:icon :i/block {:icon :i/block
@@ -135,7 +143,7 @@
request-id])}])}) request-id])}])})
(defn not-joined-options (defn not-joined-options
[id token-gated? intro-message test-networks-enabled?] [{:keys [id join-pending? spectated? token-gated? intro-message test-networks-enabled?]}]
(let [common [(show-qr id) (share-community id)] (let [common [(show-qr id) (share-community id)]
specific (cond specific (cond
(and token-gated? (not test-networks-enabled?)) (and token-gated? (not test-networks-enabled?))
@@ -146,19 +154,22 @@
(not token-gated?) (not token-gated?)
[(view-members id) (view-rules id intro-message) (invite-contacts id)])] [(view-members id) (view-rules id intro-message) (invite-contacts id)])]
[(concat specific common)])) [(concat specific
common
(when (and spectated? (not join-pending?))
[(assoc (close-community id) :add-divider? true)]))]))
(defn join-request-sent-options (defn join-request-sent-options
[id token-gated? request-id intro-message test-networks-enabled?] [{:keys [id request-id] :as config}]
[(conj (first (not-joined-options id token-gated? intro-message test-networks-enabled?)) [(conj (first (not-joined-options config))
(assoc (cancel-request-to-join id request-id) :add-divider? true))]) (assoc (cancel-request-to-join id request-id) :add-divider? true))])
(defn banned-options (defn banned-options
[id token-gated? intro-message test-networks-enabled?] [config]
(not-joined-options id token-gated? intro-message test-networks-enabled?)) (not-joined-options config))
(defn joined-options (defn joined-options
[id token-gated? muted? muted-till color intro-message] [{:keys [id token-gated? muted? muted-till color intro-message]}]
[[(view-members id) [[(view-members id)
(view-rules id intro-message) (view-rules id intro-message)
(when token-gated? (view-token-gating id)) (when token-gated? (view-token-gating id))
@@ -173,7 +184,7 @@
[(assoc (leave-community id color) :add-divider? true)]]) [(assoc (leave-community id color) :add-divider? true)]])
(defn owner-options (defn owner-options
[id token-gated? muted? muted-till intro-message] [{:keys [id token-gated? muted? muted-till intro-message]}]
[[(view-members id) [[(view-members id)
(view-rules id intro-message) (view-rules id intro-message)
(when token-gated? (view-token-gating id)) (when token-gated? (view-token-gating id))
@@ -186,22 +197,29 @@
(defn get-context-drawers (defn get-context-drawers
[{:keys [id]}] [{:keys [id]}]
(let [{:keys [role-permissions? admin joined (let [{:keys
muted banList muted-till color [id admin joined
intro-message]} (rf/sub [:communities/community id]) banList color muted muted-till
request-id (rf/sub [:communities/my-pending-request-to-join id]) spectated role-permissions?
test-networks? (rf/sub [:profile/test-networks-enabled?])] intro-message]} (rf/sub [:communities/community id])
request-id (rf/sub [:communities/my-pending-request-to-join id])
test-networks? (rf/sub [:profile/test-networks-enabled?])
config {:id id
:color color
:muted-till muted-till
:muted? muted
:spectated? spectated
:token-gated? role-permissions?
:intro-message intro-message
:test-networks? test-networks?
:join-pending? (boolean request-id)
:request-id request-id}]
(cond (cond
admin admin (owner-options config)
(owner-options id role-permissions? muted muted-till intro-message) joined (joined-options config)
joined request-id (join-request-sent-options config)
(joined-options id role-permissions? muted muted-till color intro-message) banList (banned-options config)
request-id :else (not-joined-options config))))
(join-request-sent-options id role-permissions? request-id intro-message test-networks?)
banList
(banned-options id role-permissions? intro-message test-networks?)
:else
(not-joined-options id role-permissions? intro-message test-networks?))))
(defn community-options-bottom-sheet (defn community-options-bottom-sheet
[id] [id]
@@ -0,0 +1,101 @@
(ns status-im.contexts.keycard.create.events
(:require [clojure.string :as string]
[utils.re-frame :as rf]
[utils.security.core :as security]))
(rf/reg-event-fx :keycard/create.check-empty-card
(fn [_]
{:fx [[:dispatch
[:keycard/connect
{:on-error
(fn [error]
(if (= error :keycard/error.keycard-blank)
(do
(rf/dispatch [:keycard/disconnect])
(rf/dispatch [:open-modal :screen/keycard.empty-create]))
(rf/dispatch [:keycard/on-application-info-error error])))}]]]}))
(rf/reg-event-fx :keycard/create.get-phrase
(fn [{:keys [db]}]
{:db (assoc-in db [:keycard :create] nil)
:fx [[:dispatch [:navigate-back]]
[:dispatch
[:open-modal :screen/backup-recovery-phrase-dark
{:on-success #(rf/dispatch [:keycard/create.phrase-backed-up %])}]]]}))
(rf/reg-event-fx :keycard/create.phrase-backed-up
(fn [{:keys [db]} [masked-phrase-vector]]
{:db (assoc-in db
[:keycard :create :masked-phrase]
(->> masked-phrase-vector
security/safe-unmask-data
(string/join " ")
security/mask-data))
:fx [[:dispatch [:keycard/create.create-or-enter-pin]]]}))
(rf/reg-event-fx :keycard/create.create-or-enter-pin
(fn [{:keys [db]}]
(let [{:keys [initialized?]} (get-in db [:keycard :application-info])]
{:fx [[:dispatch [:navigate-back]]
(if initialized?
[:dispatch
[:open-modal :screen/keycard.pin.enter
{:on-complete (fn [new-pin]
(rf/dispatch [:keycard/create.save-pin new-pin])
(rf/dispatch [:keycard/create.start]))}]]
[:dispatch
[:open-modal :screen/keycard.pin.create
{:on-complete (fn [new-pin]
(rf/dispatch [:navigate-back])
(rf/dispatch [:keycard/create.save-pin new-pin])
(rf/dispatch [:open-modal :screen/keycard.create.ready-to-add]))}]])]})))
(rf/reg-event-fx :keycard/create.save-pin
(fn [{:keys [db]} [pin]]
{:db (assoc-in db [:keycard :create :pin] pin)}))
(rf/reg-event-fx :keycard/create.start
(fn [_]
{:fx [[:dispatch
[:keycard/connect
{:on-error
(fn [error]
(if (= error :keycard/error.keycard-blank)
(rf/dispatch [:keycard/create.continue])
(rf/dispatch [:keycard/on-application-info-error error])))}]]]}))
(defn get-application-info-and-continue
[init?]
(rf/dispatch [:keycard/get-application-info
{:on-success #(rf/dispatch [:keycard/create.continue])
:on-error
(fn [error]
(if (or (= error :keycard/error.keycard-blank)
(and (not init?) (= error :keycard/error.keycard-wrong-profile)))
(rf/dispatch [:keycard/create.continue])
(rf/dispatch [:keycard/on-application-info-error error])))}]))
(rf/reg-event-fx :keycard/create.continue
(fn [{:keys [db]}]
(let [{:keys [initialized? has-master-key?]} (get-in db [:keycard :application-info])
{:keys [masked-phrase pin]} (get-in db [:keycard :create])]
(cond
(not initialized?)
{:fx [[:keycard/init-card
{:pin pin
:on-success #(get-application-info-and-continue true)}]]}
(not has-master-key?)
{:fx [[:effects.keycard/generate-and-load-key
{:mnemonic (security/safe-unmask-data masked-phrase)
:pin pin
:on-success #(get-application-info-and-continue false)
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]]}
:else
{:fx [[:effects.keycard/get-more-keys
{:pin pin
:on-success #(rf/dispatch [:keycard.login/recover-profile-and-login %])
:on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]]}))))
@@ -0,0 +1,62 @@
(ns status-im.contexts.keycard.create.view
(:require [quo.core :as quo]
[react-native.core :as rn]
[status-im.common.events-helper :as events-helper]
[status-im.common.resources :as resources]
[status-im.constants :as constants]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn view
[]
[:<>
[quo/page-nav
{:key :header
:background :blur
:icon-name :i/arrow-left
:on-press events-helper/navigate-back}]
[quo/page-top
{:title (i18n/label :t/create-profile-keycard)}]
[rn/view {:style {:padding-horizontal 20 :padding-top 20}}
[quo/small-option-card
{:variant :main
:title (i18n/label :t/check-keycard)
:subtitle (i18n/label :t/see-keycard-ready)
:button-label (i18n/label :t/scan-keycard)
:accessibility-label :get-keycard
:image (resources/get-image :check-your-keycard)
:on-press #(rf/dispatch [:keycard/create.check-empty-card])}]
[rn/view {:style {:height 12}}]
[quo/small-option-card
{:variant :icon
:title (i18n/label :t/learn-more-keycard)
:subtitle (i18n/label :t/secure-wallet-card)
:accessibility-label :setup-keycard
:image (resources/get-image :use-keycard)
:on-press #(rf/dispatch [:browser.ui/open-url constants/get-keycard-url])}]]
[rn/view {:style {:flex 1}}]
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]])
(defn ready-to-add
[]
[:<>
[quo/page-nav
{:icon-name :i/arrow-left
:on-press events-helper/navigate-back}]
[quo/page-top
{:title (i18n/label :t/ready-add-keypair-keycard)
:description :text
:description-text ""}]
[rn/view {:style {:flex 1 :align-items :center :justify-content :center}}
[rn/image
{:resize-mode :contain
:source (resources/get-image :generate-keys1)}]]
[quo/divider-label (i18n/label :t/tips-scan-keycard)]
[quo/markdown-list {:description (i18n/label :t/remove-phone-case)}]
[quo/markdown-list {:description (i18n/label :t/keep-card-steady)}]
[quo/bottom-actions
{:actions :one-action
:button-one-label (i18n/label :t/ready-to-scan)
:button-one-props {:on-press #(rf/dispatch [:keycard/create.start])}}]])
+18 -1
View File
@@ -1,11 +1,13 @@
(ns status-im.contexts.keycard.effects (ns status-im.contexts.keycard.effects
(:require [keycard.keycard :as keycard] (:require [keycard.keycard :as keycard]
[native-module.core :as native-module] [native-module.core :as native-module]
[promesa.core :as promesa]
[react-native.async-storage :as async-storage] [react-native.async-storage :as async-storage]
[react-native.platform :as platform] [react-native.platform :as platform]
status-im.contexts.keycard.nfc.effects status-im.contexts.keycard.nfc.effects
[status-im.contexts.keycard.utils :as keycard.utils] [status-im.contexts.keycard.utils :as keycard.utils]
[status-im.contexts.profile.config :as profile.config] [status-im.contexts.profile.config :as profile.config]
[utils.hex :as hex]
[utils.re-frame :as rf])) [utils.re-frame :as rf]))
(defonce ^:private active-listeners (atom [])) (defonce ^:private active-listeners (atom []))
@@ -50,7 +52,22 @@
(rf/reg-fx :effects.keycard/sign (rf/reg-fx :effects.keycard/sign
(fn [args] (fn [args]
(keycard/sign (keycard.utils/wrap-handlers args)))) (-> (keycard/sign args)
(promesa/then (keycard.utils/get-on-success args))
(promesa/catch (keycard.utils/get-on-failure args)))))
(rf/reg-fx :effects.keycard/sign-hashes
(fn [{:keys [hashes pin path on-success] :as args}]
(-> (promesa/all
(for [hash-data hashes]
(-> (keycard/sign {:pin pin
:path path
:hash-data (hex/normalize-hex hash-data)})
(promesa/then (fn [signature]
{:signature signature
:message hash-data})))))
(promesa/then on-success)
(promesa/catch (keycard.utils/get-on-failure args)))))
(rf/reg-fx :keycard/init-card (rf/reg-fx :keycard/init-card
(fn [args] (fn [args]
+25 -1
View File
@@ -7,6 +7,30 @@
[utils.i18n :as i18n] [utils.i18n :as i18n]
[utils.re-frame :as rf])) [utils.re-frame :as rf]))
(defn create
[]
[:<>
[quo/page-nav
{:icon-name :i/close
:on-press events-helper/navigate-back}]
[quo/page-top
{:title (i18n/label :t/keycard-empty)
:description :text
:description-text (i18n/label :t/what-to-do)}]
[rn/view {:style {:padding-horizontal 28 :padding-top 20}}
[quo/small-option-card
{:variant :main
:title (i18n/label :t/create-new-profile)
:subtitle (i18n/label :t/new-key-pair-keycard)
:button-label (i18n/label :t/lets-go)
:accessibility-label :create-new-profile-keycard
:image (resources/get-image :keycard-buy)
:on-press #(rf/dispatch [:keycard/create.get-phrase])}]]
[quo/information-box
{:type :default
:style {:margin-top 32 :margin-horizontal 28}}
(i18n/label :t/add-key-pair-desktop)]])
(defn view (defn view
[] []
[:<> [:<>
@@ -23,7 +47,7 @@
:title (i18n/label :t/import-key-pair-keycard) :title (i18n/label :t/import-key-pair-keycard)
:subtitle (i18n/label :t/use-keycard-login-sign) :subtitle (i18n/label :t/use-keycard-login-sign)
:button-label (i18n/label :t/import-profile-key-pair) :button-label (i18n/label :t/import-profile-key-pair)
:accessibility-label :get-keycard :accessibility-label :import-key-pair-keycard
:image (resources/get-image :keycard-buy) :image (resources/get-image :keycard-buy)
:on-press (fn [] :on-press (fn []
(rf/dispatch (rf/dispatch
@@ -1,5 +1,6 @@
(ns status-im.contexts.keycard.events (ns status-im.contexts.keycard.events
(:require [re-frame.core :as rf] (:require [re-frame.core :as rf]
status-im.contexts.keycard.create.events
status-im.contexts.keycard.login.events status-im.contexts.keycard.login.events
status-im.contexts.keycard.migrate.events status-im.contexts.keycard.migrate.events
status-im.contexts.keycard.migrate.re-encrypting.events status-im.contexts.keycard.migrate.re-encrypting.events
@@ -44,6 +45,7 @@
(when-not (or tag-was-lost? (nil? pin-retries-count)) (when-not (or tag-was-lost? (nil? pin-retries-count))
{:db (-> db {:db (-> db
(assoc-in [:keycard :application-info :pin-retry-counter] pin-retries-count) (assoc-in [:keycard :application-info :pin-retry-counter] pin-retries-count)
(assoc-in [:keycard :pin :text] "")
(assoc-in [:keycard :pin :status] :error)) (assoc-in [:keycard :pin :status] :error))
:fx [[:dispatch [:keycard/disconnect]] :fx [[:dispatch [:keycard/disconnect]]
(when (zero? pin-retries-count) (when (zero? pin-retries-count)
@@ -1,7 +1,6 @@
(ns status-im.contexts.keycard.nfc.sheets.events (ns status-im.contexts.keycard.nfc.sheets.events
(:require [re-frame.core :as rf] (:require [re-frame.core :as rf]
[react-native.platform :as platform] [react-native.platform :as platform]))
[taoensso.timbre :as log]))
(rf/reg-event-fx :keycard/show-connection-sheet (rf/reg-event-fx :keycard/show-connection-sheet
(fn [{:keys [db]} [{:keys [on-cancel-event-vector]} :as args]] (fn [{:keys [db]} [{:keys [on-cancel-event-vector]} :as args]]
@@ -9,20 +8,16 @@
{:db (assoc-in db {:db (assoc-in db
[:keycard :connection-sheet-opts] [:keycard :connection-sheet-opts]
{:on-close #(rf/dispatch on-cancel-event-vector)}) {:on-close #(rf/dispatch on-cancel-event-vector)})
:fx [[:dismiss-keyboard true] :fx [[:effects.keycard.ios/start-nfc nil]
[:dismiss-keyboard true]
[:show-nfc-sheet nil]]} [:show-nfc-sheet nil]]}
{:effects.keycard.ios/start-nfc {:effects.keycard.ios/start-nfc
{:on-success {:on-success #(rf/dispatch [:keycard.ios/on-start-nfc-success args])}})))
(fn []
(log/debug "nfc started successfully. next: show-connection-sheet")
(rf/dispatch [:keycard.ios/on-start-nfc-success args]))
:on-failure
(fn []
(log/debug "nfc failed star starting. not calling show-connection-sheet"))}})))
(rf/reg-event-fx :keycard/hide-connection-sheet (rf/reg-event-fx :keycard/hide-connection-sheet
(fn [{:keys [db]}] (fn [{:keys [db]}]
(if platform/android? (if platform/android?
{:db (assoc-in db [:keycard :connection-sheet-opts] nil) {:db (assoc-in db [:keycard :connection-sheet-opts] nil)
:fx [[:hide-nfc-sheet nil]]} :fx [[:effects.keycard.ios/stop-nfc nil]
[:hide-nfc-sheet nil]]}
{:effects.keycard.ios/stop-nfc nil}))) {:effects.keycard.ios/stop-nfc nil})))

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