Compare commits

..
Author SHA1 Message Date
Richard Ramos b9af66f8c8 fix_: use 24h batches to retrieve message history 2024-12-02 09:10:17 -04:00
138 changed files with 1120 additions and 1742 deletions
-1
View File
@@ -36,4 +36,3 @@ SHOW_NOT_IMPLEMENTED_FEATURES=0
ENABLE_ALERT_BANNER=0
FLAG_WALLET_CONNECT_ENABLED=1
API_LOGGING_ENABLED=1
SENTRY_ENVIRONMENT=ci-main
-1
View File
@@ -40,4 +40,3 @@ ENABLE_ALERT_BANNER=0
FLAG_WALLET_CONNECT_ENABLED=1
MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0
API_LOGGING_ENABLED=1
SENTRY_ENVIRONMENT=ci-main
-1
View File
@@ -37,4 +37,3 @@ TEST_NETWORKS_ENABLED=1
ENABLE_ALERT_BANNER=1
FLAG_WALLET_CONNECT_ENABLED=1
API_LOGGING_ENABLED=1
SENTRY_ENVIRONMENT=ci-main
-1
View File
@@ -24,4 +24,3 @@ TEST_NETWORKS_ENABLED=0
ENABLE_ALERT_BANNER=1
FLAG_WALLET_CONNECT_ENABLED=1
API_LOGGING_ENABLED=0
SENTRY_ENVIRONMENT=ci-nightly
-1
View File
@@ -21,4 +21,3 @@ TEST_NETWORKS_ENABLED=0
STATUS_PROXY_STAGE_NAME=prod
FLAG_WALLET_CONNECT_ENABLED=1
API_LOGGING_ENABLED=0
SENTRY_ENVIRONMENT=production
+1 -1
View File
@@ -1 +1 @@
2.32.21682
2.30.0
+1 -2
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.15'
library 'status-jenkins-lib@v1.9.13'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
@@ -41,7 +41,6 @@ pipeline {
BUILD_ENV = 'prod'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
FASTLANE_DISABLE_COLORS = 1
SENTRY_PRODUCTION = "${utils.isReleaseBuild() ? 'true' : 'false'}"
}
stages {
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.15'
library 'status-jenkins-lib@v1.9.13'
import groovy.json.JsonBuilder
+1 -2
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.15'
library 'status-jenkins-lib@v1.9.13'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
@@ -41,7 +41,6 @@ pipeline {
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
FASTLANE_DISABLE_COLORS = 1
BUNDLE_PATH = "${HOME}/.bundle"
SENTRY_PRODUCTION = "${utils.isReleaseBuild() ? 'true' : 'false'}"
}
stages {
@@ -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.
PRIVATE MESSENGER
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.
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.
EARN WITH DEFI
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.
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.
CONNECT WITH YOUR COMMUNITY
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.
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.
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.

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

+2 -3
View File
@@ -57,11 +57,10 @@ abstract_target 'Status' do
pod 'react-native-config', :path => '../node_modules/react-native-config'
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", path: "../modules/react-native-status"
pod "Keycard", git: "https://github.com/status-im/Keycard.swift.git", tag: '3.1.1'
pod "Keycard", git: "https://github.com/status-im/Keycard.swift.git"
pod 'secp256k1', git: "https://github.com/status-im/secp256k1.swift.git", submodules: true
target 'StatusIm' do
+10 -21
View File
@@ -1,7 +1,6 @@
PODS:
- BigInt (5.2.0)
- boost (1.83.0)
- CryptoSwift (1.8.0)
- CryptoSwift (1.5.1)
- DoubleConversion (1.1.6)
- FBLazyVector (0.73.5)
- FBReactNativeSpec (0.73.5):
@@ -17,8 +16,7 @@ PODS:
- hermes-engine/Pre-built (= 0.73.5)
- hermes-engine/Pre-built (0.73.5)
- HMSegmentedControl (1.5.6)
- Keycard (3.1.0):
- BigInt
- Keycard (3.0.6):
- CryptoSwift
- secp256k1
- SSZipArchive
@@ -945,7 +943,7 @@ PODS:
- React
- react-native-status (1.0.0):
- React
- react-native-status-keycard (2.6.2):
- react-native-status-keycard (2.5.39):
- Keycard
- React
- react-native-webview (13.6.3):
@@ -1194,13 +1192,12 @@ PODS:
DEPENDENCIES:
- 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`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- Keycard (from `https://github.com/status-im/Keycard.swift.git`, tag `3.1.1`)
- Keycard (from `https://github.com/status-im/Keycard.swift.git`)
- libevent (~> 2.1.12)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
@@ -1288,7 +1285,7 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- BigInt
- CryptoSwift
- fmt
- HMSegmentedControl
- libevent
@@ -1302,9 +1299,6 @@ SPEC REPOS:
EXTERNAL SOURCES:
boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
CryptoSwift:
:git: https://github.com/krzyzanowskim/CryptoSwift
:tag: 1.8.0
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
@@ -1318,7 +1312,6 @@ EXTERNAL SOURCES:
:tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4
Keycard:
:git: https://github.com/status-im/Keycard.swift.git
:tag: 3.1.1
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired:
@@ -1482,21 +1475,17 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"
CHECKOUT OPTIONS:
CryptoSwift:
:git: https://github.com/krzyzanowskim/CryptoSwift
:tag: 1.8.0
Keycard:
:commit: 17381678bb981c3c553bb7202a26e642cecb1817
:git: https://github.com/status-im/Keycard.swift.git
:tag: 3.1.1
secp256k1:
:commit: 46a1fa30d9b8babeae85ff519050f42394ab5fcc
:git: https://github.com/status-im/secp256k1.swift.git
:submodules: true
SPEC CHECKSUMS:
BigInt: f668a80089607f521586bbe29513d708491ef2f7
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
CryptoSwift: 52aaf3fce7337552863b1d952e408085f0e65030
CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
@@ -1504,7 +1493,7 @@ SPEC CHECKSUMS:
glog: c0eca6ffed0a6fde1965ef26dcc7bf528f052af4
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
Keycard: 3bd24405b9a875b3b3cf1ab1be69b5c30c5f28bc
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
@@ -1545,7 +1534,7 @@ SPEC CHECKSUMS:
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4
react-native-status: 21f75d492fd311dc111303da38a7a2b23a8a8466
react-native-status-keycard: 76a5c826352ee1d70de854b3e8b12670946bc1c8
react-native-status-keycard: f1c1227b2d5984c10fb44db68e4bfd2937f31e98
react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0
React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9
React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f
@@ -1593,6 +1582,6 @@ SPEC CHECKSUMS:
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7
PODFILE CHECKSUM: 81a66b45adddb083171ade882c343deb4faf2a8b
PODFILE CHECKSUM: 5dd4a5279260d370bcdf016158c825ceb404ee06
COCOAPODS: 1.15.2
@@ -108,15 +108,6 @@ class StatusModule(private val reactContext: ReactApplicationContext, private va
)
}
@ReactMethod
fun intendedPanic(message: String) {
StatusBackendClient.executeStatusGoRequest(
endpoint = "IntendedPanic",
requestBody = "",
statusgoFunction = { Statusgo.intendedPanic(message) },
)
}
@ReactMethod
fun addCentralizedMetric(request: String, callback: Callback) {
StatusBackendClient.executeStatusGoRequestWithCallback(
@@ -109,13 +109,6 @@ RCT_EXPORT_METHOD(getNodeConfig:(RCTResponseSenderBlock)callback) {
callback:callback];
}
RCT_EXPORT_METHOD(intendedPanic:(NSString *)message) {
#if DEBUG
NSLog(@"IntendedPanic() method called");
#endif
StatusgoIntendedPanic(message);
}
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(fleets) {
return [StatusBackendClient executeStatusGoRequestWithResult:@"Fleets"
body:@""
@@ -8,7 +8,6 @@
NSString *_statusGoEndpoint;
NSString *_signalEndpoint;
NSString *_rootDataDir;
NSTimer *_pingTimer;
}
RCT_EXPORT_MODULE();
@@ -78,8 +77,6 @@ RCT_EXPORT_MODULE();
[self.webSocket resume];
[self receiveMessage];
[self startPingTimer];
}
- (void)receiveMessage {
@@ -112,7 +109,6 @@ RCT_EXPORT_MODULE();
}
- (void)disconnectWebSocket {
[self stopPingTimer];
if (self.webSocket) {
[self.webSocket cancel];
self.webSocket = nil;
@@ -123,7 +119,6 @@ RCT_EXPORT_MODULE();
body:(NSString *)body
callback:(void (^)(NSString *response, NSError *error))callback {
NSString *fullUrlString = [NSString stringWithFormat:@"%@%@", self.statusGoEndpoint, endpoint];
NSLog(@"StatusGo server is enabled, executing request, endpoint: %@, body: %@", fullUrlString, body);
NSURL *url = [NSURL URLWithString:fullUrlString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
@@ -230,6 +225,7 @@ RCT_EXPORT_METHOD(configStatusBackendServer:(BOOL)serverEnabled
if (client.serverEnabled) {
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
__block NSString *resultString = @"";
[client request:endpoint body:body callback:^(NSString *response, NSError *error) {
if (error) {
NSLog(@"request to %@ failed: %@", endpoint, error);
@@ -247,33 +243,4 @@ 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
+198 -183
View File
@@ -8789,31 +8789,31 @@
},
{
"path": "com/github/status-im/status-keycard-java/android/3.1.2",
"path": "com/github/status-im/status-keycard-java/android/3.1.1",
"repo": "https://jitpack.io",
"files": {
"android-3.1.2.pom": {
"sha1": "9afce579939bad3c2b6d15787a0c861f6dbd9afa",
"sha256": "sha256-hNYvQQKfHNmbGQw5P0sssZAI11wfRhLir46QdukK0bs="
"android-3.1.1.pom": {
"sha1": "ac7e6699628e329dfc028345f32bc41c5d6c2f33",
"sha256": "sha256-EvrtvGGyvB3Fxp72KXYl46pIsxgf8vDMXk9IZjkuEIs="
},
"android-3.1.2.jar": {
"sha1": "46fe72fb8fca5935c73e0df5c10ccdd5c64fca8e",
"sha256": "sha256-QNpDWQ1TWvCWg3YdL4UWSEiafpoHavXSY3VWCN45rtE="
"android-3.1.1.jar": {
"sha1": "26118061c0996fff357ae30cc360e5928c8dd455",
"sha256": "sha256-4IjMQ6ZLAlsk4JC9sumOsRhdOF1F0L3Jl8dbEDOBoJY="
}
}
},
{
"path": "com/github/status-im/status-keycard-java/lib/3.1.2",
"path": "com/github/status-im/status-keycard-java/lib/3.1.1",
"repo": "https://jitpack.io",
"files": {
"lib-3.1.2.pom": {
"sha1": "0c0d8ef7318ba054457dea1e6624e0284aec91ca",
"sha256": "sha256-Vs9p287YNgMD76/egyeHTqlIsENjwbZsspQbzs8QkeY="
"lib-3.1.1.pom": {
"sha1": "63c7bbd55ddbf88d1b89941f78158aa07fb46873",
"sha256": "sha256-ERsZGvECIQGlNusSk+13760//JU6SaONxOW9b3AHFvQ="
},
"lib-3.1.2.jar": {
"sha1": "5df9eef589a72c5a3143f59b0f547092aeb0c309",
"sha256": "sha256-M0P6r96RkgaIjC912Z/VxJgHmfm/ftl7rqYOto8A0Ic="
"lib-3.1.1.jar": {
"sha1": "07f0374f17160c8731350316226ffe0de50f6f31",
"sha256": "sha256-oaolZh+Ad/Dq6byP3SU8z19gUjPdV8wM0Ryobj1Y260="
}
}
},
@@ -9082,16 +9082,16 @@
},
{
"path": "commons-io/commons-io/2.18.0",
"path": "commons-io/commons-io/2.17.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-io-2.18.0.pom": {
"sha1": "cbd7a6fd54081f8e3d2a90c3cb74a91a31662a86",
"sha256": "sha256-Y9lpQetE35yQ0q2yrYw/aZwuBl5wcEXF2vcT/KUrz8o="
"commons-io-2.17.0.pom": {
"sha1": "af3aa19bcc67a14e5d0dad042e7d985f733cdff4",
"sha256": "sha256-SEqTn/9TELjLXGuQKcLc8VXT+TuLjWKF8/VrsroJ/Ek="
},
"commons-io-2.18.0.jar": {
"sha1": "44084ef756763795b31c578403dd028ff4a22950",
"sha256": "sha256-88oPjWPEDiOlbVQQHGDV7e4Ta0LYS/uFvHljCTEJz4s="
"commons-io-2.17.0.jar": {
"sha1": "ddcc8433eb019fb48fe25207c0278143f3e1d7e2",
"sha256": "sha256-SqTKSPPf0wt4Igt4gdjLk+rECT7JQ2G2vvqUh5mKVQs="
}
}
},
@@ -10987,20 +10987,20 @@
},
{
"path": "com/fasterxml/jackson/core/jackson-annotations/2.18.2",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-annotations-2.18.2.pom": {
"sha1": "40ab24a80879d82a46bd3653a43da88917e929c0",
"sha256": "sha256-CyvWlOqJJn7qSBJqilskplI0xkM4dULSRGnRlb+6HPg="
"jackson-annotations-2.18.0.pom": {
"sha1": "15e211c936f255998ba87e8a80c14989f9895f08",
"sha256": "sha256-pqA47zy3L8FXW5w4ZdpK2arX0COo1J3K0DeRBlVx6Bw="
},
"jackson-annotations-2.18.2.jar": {
"sha1": "985d77751ebc7fce5db115a986bc9aa82f973f4a",
"sha256": "sha256-WBvWEADvdkiUP3gcoFaJ5W0D9gUnSDZajis6m10/oy8="
"jackson-annotations-2.18.0.jar": {
"sha1": "9bddcc56af9d90f902ef5dba7348102cd12b04e2",
"sha256": "sha256-oJNn0u61Joc6v3N/91TFCF+CBzo4LucsO74VQSIXZx8="
},
"jackson-annotations-2.18.2.module": {
"sha1": "9bd316d8447c1738d7bbfcc373693627c38eaea4",
"sha256": "sha256-4Ruvm1NubflNqmNaEBPsPgabhmuOES3cKqBEahVQUNw="
"jackson-annotations-2.18.0.module": {
"sha1": "c84262b96118cbb3bc27bf127735b93b18728a6c",
"sha256": "sha256-DwmMCDBXb8nHVdQ9fzFuinV8k4ErNXdRJbNo/rzWA10="
}
}
},
@@ -11021,20 +11021,20 @@
},
{
"path": "com/fasterxml/jackson/core/jackson-core/2.18.2",
"path": "com/fasterxml/jackson/core/jackson-core/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-core-2.18.2.pom": {
"sha1": "9a77a48adfca5182e9f8b3ee20ee2b186477b089",
"sha256": "sha256-4GWwA50h9N/ORr1DEEx9dtWFa9cy4qqGDMWkonDtct4="
"jackson-core-2.18.0.pom": {
"sha1": "1d9d4da19eb2b14ba2975c254b6bfdd8ac4894fd",
"sha256": "sha256-2u9SqBcSdESKRuwovBCgBQldduysz4Fbp6Y6AaiGf2c="
},
"jackson-core-2.18.2.jar": {
"sha1": "fb64ccac5c27dca8819418eb4e443a9f496d9ee7",
"sha256": "sha256-2AVK58DRwtL1XSjkYCbr5YkogfP6tfQ5IzGEOBw7Sh8="
"jackson-core-2.18.0.jar": {
"sha1": "65e8ead7de5d8f7a53e296c363bea3182f21f925",
"sha256": "sha256-IVu9fI/WW+UEy5L/OqHEt5D8exTMpy9FRqrEFDwQG7U="
},
"jackson-core-2.18.2.module": {
"sha1": "6a97d687f4996c423f97dc56f7e63860581f0f05",
"sha256": "sha256-ynjGBDZ2f8w2zhRrd05PUKnLn2MtExcsRLrojgwDz6I="
"jackson-core-2.18.0.module": {
"sha1": "b7e0781f9c8f54d94d5e28bad1816c7a8c3a6799",
"sha256": "sha256-xSmBTu77fwRPz2UL+lJ+60totpYGfLZMGmmUcvs1ZYc="
}
}
},
@@ -11055,20 +11055,20 @@
},
{
"path": "com/fasterxml/jackson/core/jackson-databind/2.18.2",
"path": "com/fasterxml/jackson/core/jackson-databind/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-databind-2.18.2.pom": {
"sha1": "65295373e682120eba7894bb6632d6f8d17d5d6c",
"sha256": "sha256-STo9tkR7eo7Ls3JCNMbOZ31y20sE9roAjw6+rqe+Wp0="
"jackson-databind-2.18.0.pom": {
"sha1": "3e52a2c42c3824afc2e696dad92f94dd6c1067fb",
"sha256": "sha256-+Mn0Od1EsdAkLWbmlB2pfFe6hONANu7peqHDr/vxugQ="
},
"jackson-databind-2.18.2.jar": {
"sha1": "deef8697b92141fb6caf7aa86966cff4eec9b04f",
"sha256": "sha256-SzZOaFDciRcvzx1N0muP9UiO2kT/RlfiLdJlID3Vqzw="
"jackson-databind-2.18.0.jar": {
"sha1": "8dba1f789a75fc30b59303574fe2b269afa4d3bc",
"sha256": "sha256-K/GSe38yJGg+0BV6HsOw7edRedo+WX14xXLVbtAPnzw="
},
"jackson-databind-2.18.2.module": {
"sha1": "8bc88e1ebdc91d61f75e1dabb3cdeaca74ad0032",
"sha256": "sha256-jH2sL3J4GNiEeoKqTqxrAXTXnPBN+Q3iJGBy5t005wA="
"jackson-databind-2.18.0.module": {
"sha1": "49c271f0ef5bb935ca797921904e7ebe138925e3",
"sha256": "sha256-LEnsfnQwbUh/lVkbqJiQRhnDKi4/0bWG+z5jIskaTmI="
}
}
},
@@ -11100,12 +11100,12 @@
},
{
"path": "com/fasterxml/jackson/jackson-base/2.18.2",
"path": "com/fasterxml/jackson/jackson-base/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-base-2.18.2.pom": {
"sha1": "08e5c4c7f519a42a74dac257c922a7adbb4dda1b",
"sha256": "sha256-71dLcvW0iUgET2g3a4dMiK4JoCncjgX2Shwwvftt4Uo="
"jackson-base-2.18.0.pom": {
"sha1": "d445ae58e3b3a15aa50a3e3707eaf46463b121e6",
"sha256": "sha256-EFZMv/uFf5BlqhG1hJqMMIw1NfD1PG9Muytvt7NQf5c="
}
}
},
@@ -11122,12 +11122,12 @@
},
{
"path": "com/fasterxml/jackson/jackson-bom/2.18.2",
"path": "com/fasterxml/jackson/jackson-bom/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-bom-2.18.2.pom": {
"sha1": "b269a504e4c7d10af05db454c367fb03d6c434b6",
"sha256": "sha256-UkfNwwFyXT9n9+8EkDconVr3CdaXK89LFwluRUjSlWs="
"jackson-bom-2.18.0.pom": {
"sha1": "02fecc45cb9609006d979cb8f06f8a571957a0b8",
"sha256": "sha256-ut3oZMpztsoE3p9+5J5knhpeivj4x8FoLHRr5eI0xYc="
}
}
},
@@ -11144,12 +11144,12 @@
},
{
"path": "com/fasterxml/jackson/jackson-parent/2.18.1",
"path": "com/fasterxml/jackson/jackson-parent/2.18",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-parent-2.18.1.pom": {
"sha1": "fcd5c9c72aeebb63d13eb4330842fdb8ae4f9a1c",
"sha256": "sha256-0IIvrBoCJoRLitRFySDEmk9hkWnQmxAQp9/u0ZkQmYw="
"jackson-parent-2.18.pom": {
"sha1": "3696eb746d84dafc7933ec26f13f4fb407530ab0",
"sha256": "sha256-Vp3ADWi05t993oVimeHANT+kC9rxI+DfVj7L7kFlhtk="
}
}
},
@@ -11166,12 +11166,12 @@
},
{
"path": "com/fasterxml/jackson/module/jackson-modules-base/2.18.2",
"path": "com/fasterxml/jackson/module/jackson-modules-base/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-modules-base-2.18.2.pom": {
"sha1": "a38a7c307ae9250be61ea90b86dab2b3b504f847",
"sha256": "sha256-wVCoPSPNizMiqqSYmEh0J5vi3I1f4qN5B9P1arYOJpw="
"jackson-modules-base-2.18.0.pom": {
"sha1": "6c3a68a52acce7482ba68999bd9b06a076b4c0ce",
"sha256": "sha256-vtjbLqeIGzWwOA9V+67R1Wv+P9o6AmB0Ww9dXqzteyk="
}
}
},
@@ -11192,20 +11192,20 @@
},
{
"path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.2",
"path": "com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.18.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"jackson-module-jaxb-annotations-2.18.2.pom": {
"sha1": "36b8fbaf3577061bb92ecf23d6aa9d802558fdb4",
"sha256": "sha256-T2FGzIFi5nDA1ERI8q1Iqf9WSeQHFmhM+gSua2Bm+fA="
"jackson-module-jaxb-annotations-2.18.0.pom": {
"sha1": "40eb69b3a20fb98faf66bee669b60e0fbda324ad",
"sha256": "sha256-rOb/zJ9+f89Atu3uRVB6FQJdI5N6PbBSxDNSeVdJQ9c="
},
"jackson-module-jaxb-annotations-2.18.2.jar": {
"sha1": "048c96032e5a428739e28ff04973717c032df598",
"sha256": "sha256-ZFyk3imYBHPxmubAjXws4OP9JzJE0xVbXao7yC+hPUE="
"jackson-module-jaxb-annotations-2.18.0.jar": {
"sha1": "62cc7b7517b752360fef4796e396363a2396d29c",
"sha256": "sha256-WStXNngYHG2Te1dJnDqGrON3knBrVoRFc3FcC7muw30="
},
"jackson-module-jaxb-annotations-2.18.2.module": {
"sha1": "2c300d407906f321a9e3d3ecc01cc56696ffc660",
"sha256": "sha256-wRlrUgwa7RJ88R3ka0l9gbxPNVquWqvIFwcwfX6x30U="
"jackson-module-jaxb-annotations-2.18.0.module": {
"sha1": "7adb3648b6e45a0ce0afd75efca142268ca592a1",
"sha256": "sha256-66HSqRlv9sC7h9CrfZ6Ta5i2y7eZH8DUShi2gtBDmns="
}
}
},
@@ -12215,16 +12215,16 @@
},
{
"path": "com/google/errorprone/error_prone_annotations/2.36.0",
"path": "com/google/errorprone/error_prone_annotations/2.35.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_annotations-2.36.0.pom": {
"sha1": "daf188a28315b31852ebd550f78f6b764972ee1f",
"sha256": "sha256-15z9N8hfdta3VMdQHuHchEe3smQsI4LXeCUhZr0zHpw="
"error_prone_annotations-2.35.1.pom": {
"sha1": "7b4b876b40f04941ede1e324f2af6261ad514a7b",
"sha256": "sha256-un1clTzvrQU6AlOiJ46g1u+aiW4ZKgMnzHiO9EJBeBc="
},
"error_prone_annotations-2.36.0.jar": {
"sha1": "227d4d4957ccc3dc5761bd897e3a0ee587e750a7",
"sha256": "sha256-d0QOJwsLyaJJkDxaB2w2pyLEiGyk9CZ18pA6HFPtYaU="
"error_prone_annotations-2.35.1.jar": {
"sha1": "c36f9e12192226278c2b163bf61990b131e59903",
"sha256": "sha256-A7Y/7jjjqG/aMRr1oDV+ZO6kSQmqtSUe0XgRknBQj/U="
}
}
},
@@ -12362,12 +12362,12 @@
},
{
"path": "com/google/errorprone/error_prone_parent/2.36.0",
"path": "com/google/errorprone/error_prone_parent/2.35.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_parent-2.36.0.pom": {
"sha1": "f280159378f00e9f428f10887e22f84ebb2c7e9f",
"sha256": "sha256-Okz8imvtYetI6Wl5b8MeoNJwtj5nBZmUamGIOttwlNw="
"error_prone_parent-2.35.1.pom": {
"sha1": "ec496cb2eecb573bac52f53e75e677d21b7d79dd",
"sha256": "sha256-vclIzC9eZtiTxFLrVEXgU1TS8PrejWxkUxDYJgEWu0k="
}
}
},
@@ -12953,12 +12953,12 @@
},
{
"path": "com/google/protobuf/protobuf-bom/4.29.0",
"path": "com/google/protobuf/protobuf-bom/4.29.0-RC2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-bom-4.29.0.pom": {
"sha1": "5542df7ac3708da8bf30756f4ee6d804d04b8c9b",
"sha256": "sha256-3L/Apl6DmDAE0HFOmL8NIGBwEUVbYhk5cowAkmvIyZk="
"protobuf-bom-4.29.0-RC2.pom": {
"sha1": "9a1d56ef3dcd903fe6188028b41a08cd95b7aed6",
"sha256": "sha256-+fpeoeIYK8Z1Ug+VW8oKTMXIqjvw0QlYTlSXaC7Z268="
}
}
},
@@ -13204,16 +13204,16 @@
},
{
"path": "com/google/protobuf/protobuf-java/4.29.0",
"path": "com/google/protobuf/protobuf-java/4.29.0-RC2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-java-4.29.0.pom": {
"sha1": "27c4abe9c47f4aed31cf7acff86853a05f7e85f0",
"sha256": "sha256-7cHftEVG5yel+sU/CQUGv6aN2DB65vEHbv+tVy+S16Q="
"protobuf-java-4.29.0-RC2.pom": {
"sha1": "6a3b8220cf0191d1cac58f518e8fe089105a6215",
"sha256": "sha256-laBUKUQ7qipRaJ2LniTI0JIqMOTbBMbK2MPX5F6+G9A="
},
"protobuf-java-4.29.0.jar": {
"sha1": "ffea90ab158435d68de76951857ef5f8b0f98365",
"sha256": "sha256-FpAYUevl6J/oiqrTwmhmNzaVvC4wYnu4kyhH4vX8LnY="
"protobuf-java-4.29.0-RC2.jar": {
"sha1": "2c26bef798eaf3604cae2487cc7f98fbc30b34b2",
"sha256": "sha256-7UEwvtFLpLMrQFVkcnZC1J3sqc14fsugWtO2/2377YQ="
}
}
},
@@ -13333,12 +13333,12 @@
},
{
"path": "com/google/protobuf/protobuf-parent/4.29.0",
"path": "com/google/protobuf/protobuf-parent/4.29.0-RC2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-parent-4.29.0.pom": {
"sha1": "c35e0844930aea715cc8f4335fee49223b1fe35c",
"sha256": "sha256-jU6O2nh45revZuPCtvWHE839P7bNsHGS3My2HN0uSTA="
"protobuf-parent-4.29.0-RC2.pom": {
"sha1": "87f14265eeeddd4c78ccaed313fe4125e7681442",
"sha256": "sha256-awus769PZSQsjKRKvb1PZe3Z0XoiZ1PetQE3m7dICzU="
}
}
},
@@ -15259,16 +15259,16 @@
},
{
"path": "io/netty/netty-tcnative-classes/2.0.69.Final",
"path": "io/netty/netty-tcnative-classes/2.0.66.Final",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"netty-tcnative-classes-2.0.69.Final.pom": {
"sha1": "ee65d639d3c5312a4b6369f0d59504ad0c8dfe0b",
"sha256": "sha256-WdoPlJ4r7on1cR6z4Mb9jPeRTmtwwAfza56waIJDAVw="
"netty-tcnative-classes-2.0.66.Final.pom": {
"sha1": "75dca372aa373fac57023721582360f84c79e44c",
"sha256": "sha256-SULNAuKRbB+094zKiEHw9yGbuQ+CirdImokCfC76kes="
},
"netty-tcnative-classes-2.0.69.Final.jar": {
"sha1": "0f018f36b688bafabe4573af230a8b59cf3c0713",
"sha256": "sha256-C7woSMsJnrP29Ow2UBs2AOGChFfNpB1TMGh/YB7gS+8="
"netty-tcnative-classes-2.0.66.Final.jar": {
"sha1": "9588bd2f891157538a78d86c945aa34bf9308dda",
"sha256": "sha256-ZpqBGhk9wefJ74bLVHpKuS8PNMzo+bhCuQKb9c+gfMU="
}
}
},
@@ -15285,12 +15285,12 @@
},
{
"path": "io/netty/netty-tcnative-parent/2.0.69.Final",
"path": "io/netty/netty-tcnative-parent/2.0.66.Final",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"netty-tcnative-parent-2.0.69.Final.pom": {
"sha1": "ba3c1cc69d48f0196ee84ecd3c5157c52a987931",
"sha256": "sha256-KVMCcZZjdhDIlPMr2nBQk82HaDFcnxpXOVGnXxeGmvw="
"netty-tcnative-parent-2.0.66.Final.pom": {
"sha1": "91784588e56a54734c698f08118b4f3b94a58ec1",
"sha256": "sha256-KwF/s8He6rXR6uvsE0ZZt96ueMFNXr/D1JwLMITqc2U="
}
}
},
@@ -15804,6 +15804,17 @@
}
},
{
"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",
"repo": "https://repo.maven.apache.org/maven2",
@@ -15815,17 +15826,6 @@
}
},
{
"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",
"repo": "https://repo.maven.apache.org/maven2",
@@ -15856,6 +15856,21 @@
}
},
{
"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",
"repo": "https://repo.maven.apache.org/maven2",
@@ -15871,21 +15886,6 @@
}
},
{
"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",
"repo": "https://repo.maven.apache.org/maven2",
@@ -16726,12 +16726,12 @@
},
{
"path": "org/apache/commons/commons-parent/78",
"path": "org/apache/commons/commons-parent/74",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-parent-78.pom": {
"sha1": "c59670d5fff6efd8b31013cb579732c75a250b4c",
"sha256": "sha256-Ai0gLmVe3QTyoQ7L5FPZKXeSTTg4Ckyow1nxgXqAMg4="
"commons-parent-74.pom": {
"sha1": "704abf062c1f6e03f8bcf6929b4777b9af5048a5",
"sha256": "sha256-gOthsMh/3YJqBpMTsotnLaPxiFgy2kR7Uebophl+fss="
}
}
},
@@ -17471,20 +17471,20 @@
},
{
"path": "org/checkerframework/checker-qual/3.48.2",
"path": "org/checkerframework/checker-qual/3.48.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"checker-qual-3.48.2.pom": {
"sha1": "95acb8356a028eeb22171b7330f7bb78cf0f9506",
"sha256": "sha256-Sk+LlzEYgyx4SrUIpzAJ2tAt5Nq/0dFJLWa45MC6HRE="
"checker-qual-3.48.1.pom": {
"sha1": "b6dca63179b1aedebea4b5eb877342e3f6ff8916",
"sha256": "sha256-4vslCCqCrdKE9gwb/yXZMBzX6bJhOIEs3tGEXutCJ8k="
},
"checker-qual-3.48.2.jar": {
"sha1": "2a4797df796b23026b8215545b0d2936bacc52af",
"sha256": "sha256-ryPyDJlbL+3jWx66gRd6mmaUTsZ7jk3uGapMwLcQxrU="
"checker-qual-3.48.1.jar": {
"sha1": "7d8cf1c00aec0042df92f8d71d7f15baaf9773f4",
"sha256": "sha256-Iejf6BA+El2WoyllPKgeh6xDAybb2/KZzqPcGuPwOaI="
},
"checker-qual-3.48.2.module": {
"sha1": "cdf30d8d4b97e12fc85e65e1bd55210a1a084b10",
"sha256": "sha256-D2RjlMmz5KL1aitsZ6C0NAkqxrq3pJvC/wGtjKf08NU="
"checker-qual-3.48.1.module": {
"sha1": "f1e778df44d6ca615e580cf2bf3c0ad7ad898d6e",
"sha256": "sha256-2By/MdXdg8qGleCloaRz6TS5mq3GpN2UnvT1ll8lYAM="
}
}
},
@@ -17820,27 +17820,27 @@
},
{
"path": "org/easymock/easymock-parent/5.5.0",
"path": "org/easymock/easymock-parent/5.4.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"easymock-parent-5.5.0.pom": {
"sha1": "a30937cb15aa72370d3841ca217dd04cd24d506c",
"sha256": "sha256-e7FiABT3ApRLbKcywPIh6jLHwyfQ9fM6zuGf/gtAJ6A="
"easymock-parent-5.4.0.pom": {
"sha1": "ac49fe5a7d9cfec46d7386f713c5cd5c5afed89f",
"sha256": "sha256-sKGUgoX4OZNIqWxgWTXYJVCnVKTDNfw0SfogL74qAnI="
}
}
},
{
"path": "org/easymock/easymock/5.5.0",
"path": "org/easymock/easymock/5.4.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"easymock-5.5.0.pom": {
"sha1": "a711c875746fa00d8c929824b0f99ed7f103ac75",
"sha256": "sha256-0TuotyX47NbHANkl9v78MwXLkIGtzLN97cUxr9HzfQY="
"easymock-5.4.0.pom": {
"sha1": "d566a45d12ee304ab0fba3877ebd93ef64469ea8",
"sha256": "sha256-v/kNdi/BrWVB5jCrgeBzJPVflbd5BhE6NKpnqn2HPhk="
},
"easymock-5.5.0.jar": {
"sha1": "b07e2bcbc7b6bcae190a18b9ced742b6fd9ceec3",
"sha256": "sha256-vwW1axAr6Rx80LutFoTVgJrCzNA4DmhPlEW/3hRBj38="
"easymock-5.4.0.jar": {
"sha1": "eb56bad81c203765f4a5c74aed28142fb0d79354",
"sha256": "sha256-SDUEf+QbVDSRB8EaGEuhIvo8P8cIQHU0ZfdCtJ5+A6M="
}
}
},
@@ -19901,16 +19901,16 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0",
"path": "org/jetbrains/kotlin/kotlin-reflect/2.1.0-Beta2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-reflect-2.1.0.pom": {
"sha1": "6c72cb76dbf12249eec091d5a7d6ea27a27fcc87",
"sha256": "sha256-nNhLPU9xfJYjXkujtydolcz/1V3kEcfOCz97q1Yu/kI="
"kotlin-reflect-2.1.0-Beta2.pom": {
"sha1": "3e7baa22fcb4cc619f4bd40486276a93f3f2a0c3",
"sha256": "sha256-Mh8VtvMp1G9QUK5EgUhLQ0nCEefVB7U0spO9fTwzNkg="
},
"kotlin-reflect-2.1.0.jar": {
"sha1": "dc3753b59b67d79b7d2f546d51e22a0ec1f082d8",
"sha256": "sha256-tfYI7fqYqM+iNyzBLRitqXS+HFbBCT7/BswGH0/AiLI="
"kotlin-reflect-2.1.0-Beta2.jar": {
"sha1": "d776709bc948b0d4d1f06d0da76c3754d80d6f50",
"sha256": "sha256-gBuxZsoD8bj+VXCQtpxdW3CeUiyFTSnSWyTW0JLqjRo="
}
}
},
@@ -21579,24 +21579,24 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.0",
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.1.0-Beta2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-stdlib-2.1.0.pom": {
"sha1": "b7c581edbfc43221bf7a18ea76cc482111bba949",
"sha256": "sha256-E05IwXeWwcECfsvmyfHHXHkvU1mHq4nh4d2kP4w2b14="
"kotlin-stdlib-2.1.0-Beta2.pom": {
"sha1": "9bf48efa052a62e8f741b1da18105848536e0b98",
"sha256": "sha256-yK+DAGdGa23mj4Gpm5qTnpn65U2VBdfG8eXQKG9Ckuw="
},
"kotlin-stdlib-2.1.0-all.jar": {
"kotlin-stdlib-2.1.0-Beta2-all.jar": {
"sha1": "37a691f3c171dc54afc64aedcd63da3440df12d3",
"sha256": "sha256-p0EvZtcbzSchw5gweXL7tflAn5RWQ+7gXRCAsomjOcs="
},
"kotlin-stdlib-2.1.0.jar": {
"sha1": "85f8b81009cda5890e54ba67d64b5e599c645020",
"sha256": "sha256-1vkbew8wbMopn+x0+3w05IdNb17FuSWgtN4hkB4RnD8="
"kotlin-stdlib-2.1.0-Beta2.jar": {
"sha1": "9b6eab04a97dfca8f091764bc5bc89604afc7b01",
"sha256": "sha256-a+9Pxnj5YEdA0GUcZbg0Rw2GM8nxKfMZzNWstMvztLs="
},
"kotlin-stdlib-2.1.0.module": {
"sha1": "10243b69a055e7a0aac5eff98c9509f34b4b5d1e",
"sha256": "sha256-3PvI6L8yzWen763ZHTEVK86YcJEdbsUIePT9tuA+cOI="
"kotlin-stdlib-2.1.0-Beta2.module": {
"sha1": "fc5281ea91c36234d3aa0de8e0c70e0f8892a677",
"sha256": "sha256-3yeZ0iUo792hyfKjSIBL692eYtrGQGxNURFP++ylC2w="
}
}
},
@@ -22698,6 +22698,21 @@
}
},
{
"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",
"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.clans:fab:1.6.4
com.github.gundy:semver4j:0.16.4
com.github.status-im.status-keycard-java:android:3.1.2
com.github.status-im.status-keycard-java:lib:3.1.2
com.github.status-im.status-keycard-java:android:3.1.1
com.github.status-im.status-keycard-java:lib:3.1.1
com.github.status-im:function:0.0.1
com.github.wix-playground:ahbottomnavigation:3.3.0
com.github.wix-playground:reflow-animator:1.0.6
+27 -26
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://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/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.2/lib-3.1.2.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/lib/3.1.1/lib-3.1.1.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/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.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.18.0/commons-io-2.18.0.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-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.pom
@@ -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/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.18.2/jackson-annotations-2.18.2.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-core/2.11.1/jackson-core-2.11.1.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-core/2.18.0/jackson-core-2.18.0.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.2/jackson-databind-2.18.2.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/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.18.2/jackson-base-2.18.2.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-bom/2.11.1/jackson-bom-2.11.1.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-bom/2.18.0/jackson-bom-2.18.0.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.1/jackson-parent-2.18.1.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/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.2/jackson-modules-base-2.18.2.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-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.2/jackson-module-jaxb-annotations-2.18.2.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-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/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.11.0/error_prone_annotations-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.36.0/error_prone_annotations-2.36.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.35.1/error_prone_annotations-2.35.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
@@ -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.11.0/error_prone_parent-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.0/error_prone_parent-2.27.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.36.0/error_prone_parent-2.36.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.35.1/error_prone_parent-2.35.1.pom
https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
@@ -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.19.2/protobuf-bom-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.3/protobuf-bom-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.29.0/protobuf-bom-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.29.0-RC2/protobuf-bom-4.29.0-RC2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.17.2/protobuf-javalite-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.19.2/protobuf-javalite-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
@@ -826,7 +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.19.2/protobuf-java-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.3/protobuf-java-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.29.0/protobuf-java-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.29.0-RC2/protobuf-java-4.29.0-RC2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-lite/3.0.1/protobuf-lite-3.0.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
@@ -837,7 +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.19.2/protobuf-parent-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.3/protobuf-parent-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.29.0/protobuf-parent-4.29.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.29.0-RC2/protobuf-parent-4.29.0-RC2.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.4/truth-parent-1.4.4.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.4/truth-1.4.4.pom
https://repo.maven.apache.org/maven2/com/google/zxing/core/3.4.1/core-3.4.1.pom
@@ -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/5.0.0.Alpha2/netty-resolver-5.0.0.Alpha2.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.46.Final/netty-tcnative-classes-2.0.46.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.69.Final/netty-tcnative-classes-2.0.69.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-classes/2.0.66.Final/netty-tcnative-classes-2.0.66.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.46.Final/netty-tcnative-parent-2.0.46.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.69.Final/netty-tcnative-parent-2.0.69.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-tcnative-parent/2.0.66.Final/netty-tcnative-parent-2.0.66.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.34.Final/netty-transport-4.1.34.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.52.Final/netty-transport-4.1.52.Final.pom
https://repo.maven.apache.org/maven2/io/netty/netty-transport/4.1.72.Final/netty-transport-4.1.72.Final.pom
@@ -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-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.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.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.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.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/5.6.0/jna-5.6.0.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/71/commons-parent-71.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/72/commons-parent-72.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/78/commons-parent-78.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/74/commons-parent-74.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
@@ -1135,7 +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/3.5.0/checker-qual-3.5.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.48.2/checker-qual-3.48.2.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.48.1/checker-qual-3.48.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
@@ -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/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/5.5.0/easymock-parent-5.5.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/easymock/easymock-parent/5.4.0/easymock-parent-5.4.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/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/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.7.10/kotlin-reflect-1.7.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.0/kotlin-reflect-2.1.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.1.0-Beta2/kotlin-reflect-2.1.0-Beta2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.20/kotlin-scripting-common-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.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
@@ -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.22/kotlin-stdlib-1.9.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.25/kotlin-stdlib-1.9.25.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.0/kotlin-stdlib-2.1.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.1.0-Beta2/kotlin-stdlib-2.1.0-Beta2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-metadata/1.6.20/kotlin-tooling-metadata-1.6.20.pom
@@ -1471,6 +1471,7 @@ 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.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/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.5.1/ow2-1.5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
+1 -5
View File
@@ -11,7 +11,7 @@
, outputFileName ? "status-go-${source.shortRev}-${platform}.aar" }:
let
inherit (lib) concatStringsSep optionalString optional splitString fileContents;
inherit (lib) concatStringsSep optionalString optional splitString;
isIOS = platform == "ios";
isAndroid = platform == "android";
enforceXCodeAvailable = callPackage ./enforceXCodeAvailable.nix { };
@@ -46,10 +46,6 @@ in buildGoPackage rec {
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
# Sentry for status-go
SENTRY_CONTEXT_NAME = "status-mobile";
SENTRY_CONTEXT_VERSION = fileContents ../../../VERSION;
preBuild = ''
echo 'Generate static files'
pushd go/src/$goPackagePath
+1 -1
View File
@@ -66,7 +66,7 @@
"react-native-shake": "^3.3.1",
"react-native-share": "10.0.2",
"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.6.3",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.39",
"react-native-svg": "13.10.0",
"react-native-webview": "13.6.3",
"react-syntax-highlighter": "^15.5.0"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

-1
View File
@@ -45,7 +45,6 @@ SECRETS_ENV_VARS=(
'MIXPANEL_APP_ID'
'MIXPANEL_TOKEN'
'POKT_TOKEN'
'SENTRY_DSN_STATUS_GO'
)
# Secrets like this can't be passed via args or they end up in derivation.
+1 -2
View File
@@ -123,8 +123,7 @@
status-im.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
status-im.config/SENTRY_DSN_STATUS_GO #shadow/env "SENTRY_DSN_STATUS_GO"}
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"}
:compiler-options {:output-feature-set :es6
;;disable for android build as there
;;is an intermittent warning with deftype
+4 -4
View File
@@ -1,8 +1,8 @@
import { useDerivedValue, withTiming, Easing } from 'react-native-reanimated';
const slideAnimationDuration = 300;
const totalPages = 3;
const pageSize = 25;
const totalPages = 4;
const pageSize = 100 / totalPages;
const easeOut = {
duration: slideAnimationDuration,
@@ -13,7 +13,7 @@ const easeOut = {
export function dynamicProgressBarWidth(staticProgressBarWidth, progress) {
return useDerivedValue(function () {
'worklet';
return (staticProgressBarWidth * (progress.value || 0)) / 75;
return (staticProgressBarWidth * (progress.value || 0)) / 100;
});
}
@@ -26,6 +26,6 @@ export function carouselLeftPosition(windowWidth, progress, isDragging, dragAmou
const baseOffset = (Math.floor(progressValue / pageSize) % totalPages) * windowWidth;
const adjustedOffset = baseOffset === 0 && dragAmountValue > 0 ? baseOffset : -baseOffset + dragAmountValue;
return isDragging.value ? adjustedOffset : withTiming(-baseOffset, easeOut);
return isDragging.value ? withTiming(adjustedOffset, easeOut) : withTiming(-baseOffset, easeOut);
});
}
@@ -1,13 +1,10 @@
(ns legacy.status-im.ui.screens.advanced-settings.views
(:require
[clojure.string :as string]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.config :as config]
[status-im.feature-flags :as ff]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
(:require-macros [legacy.status-im.utils.views :as views]))
@@ -25,23 +22,7 @@
peer-syncing-enabled?]}]
(keep
identity
[;; TODO(ilmotta): REMOVE BEFORE MERGE
{:size :small
:title (str "Is MixPanel token set?"
(if (string/blank? config/mixpanel-token)
"No"
"Yes"))
:on-press identity}
(when (ff/enabled? ::ff/app-monitoring.intentional-crash)
{:size :small
:title (str "Force crash immediately"
(when (string/blank? config/sentry-dsn-status-go)
" (Sentry DSN is not set)"))
:accessibility-label :intended-panic
:on-press (fn []
(re-frame/dispatch [:app-monitoring/intended-panic
"status-mobile intentional panic"]))})
{:size :small
[{:size :small
:title (i18n/label :t/log-level)
:accessibility-label :log-level-settings-button
:on-press
-4
View File
@@ -581,7 +581,3 @@
(.createAccountFromPrivateKey ^js (account-manager)
(types/clj->json {:privateKey private-key})
callback)))
(defn intended-panic
[message]
(.intendedPanic ^js (status) message))
@@ -10,6 +10,5 @@
[:subtitle :string]
[:dismissible? {:optional true} :boolean]
[:on-press {:optional true} fn?]
[:on-press-close {:optional true} fn?]
[:container-style {:optional true} :map]]]]
[:on-press-close {:optional true} fn?]]]]
:any])
@@ -3,14 +3,13 @@
[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))
[theme]
(assoc (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)))
(def top-container
{:flex-direction :row
@@ -9,12 +9,12 @@
[schema.core :as schema]))
(defn- view-internal
[{:keys [image title subtitle dismissible? on-press on-press-close container-style]}]
[{:keys [image title subtitle dismissible? on-press on-press-close]}]
(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/pressable
{:on-press on-press
:accessibility-label :wallet-card}
[rn/view {:style (style/root-container theme)}
[rn/view {:style style/top-container}
[fast-image/fast-image
{:style style/image
+25 -8
View File
@@ -1,6 +1,7 @@
(ns quo.components.utilities.token.view
(:require
[clojure.string :as string]
[quo.components.markdown.text :as quo]
[quo.components.utilities.token.loader :as token-loader]
[react-native.core :as rn]
[schema.core :as schema]
@@ -32,7 +33,22 @@
:height size-number)))
(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
[b64-image]
@@ -53,12 +69,13 @@
"
[{:keys [token size style image-source]
:or {size 32}}]
(let [img-src (if (string? image-source)
(normalize-b64-string image-source)
image-source)
token-image (or img-src (token-loader/get-token-image token) default-token-image)]
[rn/image
{:style (token-style style size)
:source token-image}]))
(let [img-src (if (string? image-source)
(normalize-b64-string image-source)
image-source)]
(if-let [existing-source (or img-src (token-loader/get-token-image token))]
[rn/image
{:style (token-style style size)
:source existing-source}]
[temp-empty-symbol token size style])))
(def view (schema/instrument #'view-internal ?schema))
+21 -26
View File
@@ -121,38 +121,33 @@
[linear-gradient/linear-gradient
{:start {:x 0 :y 0}
:end {:x 1 :y 0}
:colors [(colors/theme-colors colors/white colors/neutral-95 theme)
(colors/theme-colors colors/white-opa-10 colors/neutral-95-opa-10 theme)]
:colors [(colors/theme-colors colors/white colors/neutral-100 theme)
(colors/theme-colors colors/white-opa-10 colors/neutral-100-opa-10 theme)]
:style style/gradient-start}])
(when (and overflow? disabled?)
[linear-gradient/linear-gradient
{:start {:x 0 :y 0}
:end {:x 1 :y 0}
:colors [(colors/theme-colors colors/white-opa-10 colors/neutral-95-opa-10 theme)
(colors/theme-colors colors/white colors/neutral-95 theme)]
:colors [(colors/theme-colors colors/white-opa-10 colors/neutral-100-opa-10 theme)
(colors/theme-colors colors/white colors/neutral-100 theme)]
:style style/gradient-end}])
(if-not input-disabled?
[rn/text-input
(cond-> {:ref set-input-ref
:style (style/input disabled? error? theme)
:placeholder-text-color (colors/theme-colors colors/neutral-40
colors/neutral-50
theme)
:keyboard-type :numeric
:editable (not input-disabled?)
:auto-focus auto-focus?
:on-focus on-input-focus
:on-change-text on-change-text
:on-layout on-layout-text-input
:on-selection-change on-selection-change
:show-soft-input-on-focus show-keyboard?
:default-value default-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")])]
[rn/text-input
(cond-> {:ref set-input-ref
:style (style/input disabled? error? theme)
:placeholder-text-color (colors/theme-colors colors/neutral-40
colors/neutral-50
theme)
:keyboard-type :numeric
:editable (not input-disabled?)
:auto-focus auto-focus?
:on-focus on-input-focus
:on-change-text on-change-text
:on-layout on-layout-text-input
:on-selection-change on-selection-change
:show-soft-input-on-focus show-keyboard?
:default-value default-value
:placeholder "0"}
controlled-input? (assoc :value value))]]
[text/text
{:size :paragraph-2
:weight :semi-bold
@@ -6,8 +6,7 @@
[:catn
[:props
[:map
[:transaction {:optional true}
[:maybe [:enum :receive :send :swap :bridge :buy :destroy :mint :approval]]]
[:transaction {:optional true} [:maybe [:enum :receive :send :swap :bridge :buy :destroy :mint]]]
[:status {:optional true} [:maybe [:enum :pending :confirmed :finalised :failed]]]
[:counter {:optional true} [:maybe :int]]
[:timestamp {:optional true} [:maybe :string]]
@@ -41,8 +41,7 @@
colors/white-opa-10)})
(def timestamp-container
{:margin-left 4
:flex 1})
{:margin-left 4})
(defn timestamp
[theme blur?]
@@ -12,24 +12,22 @@
[utils.i18n :as i18n]))
(def transaction-translation
{:receive [i18n/label :t/receive]
:send [i18n/label :t/send]
:swap [i18n/label :t/swap]
:bridge [i18n/label :t/bridge]
:buy [i18n/label :t/buy]
:destroy [i18n/label :t/destroy]
:mint [i18n/label :t/mint]
:approval [i18n/label :t/set-spending-cap]})
{:receive [i18n/label :t/receive]
:send [i18n/label :t/send]
:swap [i18n/label :t/swap]
:bridge [i18n/label :t/bridge]
:buy [i18n/label :t/buy]
:destroy [i18n/label :t/destroy]
:mint [i18n/label :t/mint]})
(def transaction-icon
{:receive :i/receive
:send :i/send
:swap :i/transaction
:bridge :i/bridge
:buy :i/buy
:destroy :i/destroy
:mint :i/mint
:approval :i/token-sales})
{:receive :i/receive
:send :i/send
:swap :i/transaction
:bridge :i/bridge
:buy :i/buy
:destroy :i/destroy
:mint :i/mint})
(def status-icon
{:pending :i/pending-state
@@ -41,8 +39,7 @@
[{:keys [transaction
timestamp
counter
blur?
on-press-options]
blur?]
:or {transaction :receive
counter 1}}
theme]
@@ -67,13 +64,7 @@
:size :label
:style (style/timestamp theme blur?)
:accessibility-label :transaction-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}]])])
timestamp]]])
(defn transaction-icon-view
[{:keys [blur? transaction status]
@@ -129,8 +120,8 @@
:accessibility-label :wallet-activity
:disabled (= state :disabled)
:on-press on-press
:on-press-in (when on-press on-press-in)
:on-press-out (when on-press on-press-out)}
:on-press-in on-press-in
:on-press-out on-press-out}
[rn/view {:style style/container}
[transaction-icon-view props theme]
[rn/view {:style {:flex 1}}
-1
View File
@@ -91,7 +91,6 @@
;;95 with transparency
(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-70 (alpha neutral-95 0.7))
(def neutral-95-opa-80 (alpha neutral-95 0.8))
+12 -17
View File
@@ -9,7 +9,6 @@
gestureHandlerRootHOC
FlatList
ScrollView)]
[react-native.core :as rn]
[react-native.flat-list :as rn-flat-list]
[reagent.core :as reagent]))
@@ -113,21 +112,17 @@
render-fn]
:or {sticky-section-headers-enabled true}
:as props}]
(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])]
(let [data (flatten-sections sections)]
[flat-list
(merge props
{:data data
:render-fn render-item
:sticky-header-indices
(when sticky-section-headers-enabled
(find-sticky-indices data))})]))
{:data data
:render-fn (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])])
:sticky-header-indices (when sticky-section-headers-enabled
(find-sticky-indices data))})]))
@@ -1,8 +0,0 @@
(ns status-im.common.app-monitoring.effects
(:require
[native-module.core :as native-module]
[utils.re-frame :as rf]))
(rf/reg-fx :effects.app-monitoring/intended-panic
(fn [message]
(native-module/intended-panic message)))
@@ -1,8 +0,0 @@
(ns status-im.common.app-monitoring.events
(:require
status-im.common.app-monitoring.effects
[utils.re-frame :as rf]))
(rf/reg-event-fx :app-monitoring/intended-panic
(fn [_ [message]]
{:fx [[:effects.app-monitoring/intended-panic message]]}))
@@ -47,8 +47,7 @@
animating? (reagent/atom true)
set-animating-true #(reset! animating? true)
set-animating-false (fn [ms]
(js/setTimeout #(reset! animating? false) ms))
on-scroll-update #(on-scroll % curr-scroll)]
(js/setTimeout #(reset! animating? false) ms))]
(fn [{:keys [content skip-background?]}]
(let [theme (quo.theme/use-theme)
{:keys [top] :as insets} (safe-area/get-insets)
@@ -95,5 +94,5 @@
:close close
:scroll-enabled? scroll-enabled?
:current-scroll curr-scroll
:on-scroll on-scroll-update
:on-scroll #(on-scroll % curr-scroll)
:sheet-animating? animating?}]]]]))))
@@ -150,19 +150,15 @@
(defn- fiat->crypto
[value conversion-rate]
(if-not (string/blank? value)
(-> value
(money/fiat->crypto conversion-rate)
(wallet-utils/cut-crypto-decimals-to-fit-usd-cents conversion-rate))
""))
(-> value
(money/fiat->crypto conversion-rate)
(wallet-utils/cut-crypto-decimals-to-fit-usd-cents conversion-rate)))
(defn- crypto->fiat
[value conversion-rate]
(if-not (string/blank? value)
(-> value
(money/crypto->fiat conversion-rate)
(wallet-utils/cut-fiat-balance-to-two-decimals))
""))
(-> value
(money/crypto->fiat conversion-rate)
(wallet-utils/cut-fiat-balance-to-two-decimals)))
(defn ->crypto
[state conversion-rate]
+2 -2
View File
@@ -159,10 +159,10 @@
:add-divider? needs-divider?}))
(defn clear-history-entry
[chat needs-divider?]
[chat-id needs-divider?]
(entry {:icon :i/delete
:label (i18n/label :t/clear-history)
:on-press #(clear-history-action chat)
:on-press #(clear-history-action chat-id)
:danger? true
:sub-label nil
:accessibility-label :clear-history
+1 -3
View File
@@ -3,7 +3,6 @@
(def ui
{:add-new-contact (js/require "../resources/images/ui2/add-contact.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-logged-in (js/require
"../resources/images/ui2/desktop-how-to-pair-logged-in.png")
@@ -20,6 +19,7 @@
: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")
:onboarding-illustration (js/require "../resources/images/ui2/onboarding_illustration.png")
:qr-code (js/require "../resources/images/ui2/qr-code.png")
:keycard-logo (js/require "../resources/images/ui2/keycard-logo.png")
:keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png")
@@ -35,9 +35,7 @@
:notifications (js/require "../resources/images/ui2/notifications.png")
:nfc-prompt (js/require "../resources/images/ui2/nfc-prompt.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")
: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-wrong (js/require "../resources/images/ui2/syncing_wrong.png")
:buy (js/require "../resources/images/ui2/buy.png")
-11
View File
@@ -35,12 +35,6 @@
(def sepolia-chain-explorer-link "https://sepolia.etherscan.io/address/")
(def optimism-sepolia-chain-explorer-link "https://sepolia-optimistic.etherscan.io/address/")
(def arbitrum-sepolia-chain-explorer-link "https://sepolia.arbiscan.io/address/")
(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-tesnet-link "https://testnets.opensea.io")
@@ -150,8 +144,3 @@
(goog-define STATUS_BACKEND_SERVER_ROOT_DATA_DIR "")
;; if you're using android simulator, I suggest set the env variable to "http://10.0.2.2:"
(goog-define STATUS_BACKEND_SERVER_IMAGE_SERVER_URI_PREFIX "https://localhost:")
;;;; Sentry
;; Documentation: status-go/internal/sentry/README.md
(goog-define SENTRY_DSN_STATUS_GO "")
(def sentry-dsn-status-go SENTRY_DSN_STATUS_GO)
-2
View File
@@ -639,5 +639,3 @@
:more-than-five-minutes 4})
(def ^:const wallet-connect-transaction-refresh-interval-ms 10000)
(def ^:const native-token-symbol "ETH")
@@ -4,6 +4,7 @@
[re-frame.interceptor :as interceptor]
status-im.contexts.centralized-metrics.effects
[status-im.contexts.centralized-metrics.tracking :as tracking]
[taoensso.timbre :as log]
[utils.re-frame :as rf]))
(defn push-event?
@@ -15,6 +16,7 @@
[context]
(when (push-event? (interceptor/get-coeffect context :db))
(when-let [event (tracking/metrics-event (interceptor/get-coeffect context :event))]
(log/debug "tracking event" event)
(if (or (seq? event) (vector? event))
(doseq [e event]
(native-module/add-centralized-metric e))
@@ -6,15 +6,12 @@
[status-im.navigation.screens :as screens]))
(defn key-value-event
([event-name]
(key-value-event event-name nil))
([event-name event-value]
(cond-> {:metric
{:eventName event-name
:platform platform/os
:appVersion build/app-short-version}}
event-value
(assoc-in [:metric :eventValue] event-value))))
[event-name event-value]
{:metric
{:eventName event-name
:platform platform/os
:appVersion build/app-short-version
:eventValue event-value}})
(defn user-journey-event
[action]
@@ -44,16 +41,11 @@
(defn track-view-id-event
[view-id]
(let [screen (get screens/screens-by-name view-id)]
(cond-> []
(get-in screen [:metrics :track?])
(conj (screen-event screen {}))
(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")))))
(if-let [screen (get screens/screens-by-name view-id)]
(when (get-in screen [:metrics :track?])
(screen-event screen {}))
(when (contains? view-ids-to-track view-id)
(navigation-event (name view-id)))))
(defn navigated-to-collectibles-tab-event
[location]
@@ -68,13 +60,6 @@
:centralized-metrics/toggle-centralized-metrics
(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
(track-view-id-event rf-event-parameter)
@@ -42,19 +42,19 @@
(deftest track-view-id-event-test
(testing "returns correct navigation event for view-id"
(is (= [{:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "communities-stack"}}}]
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "communities-stack"}}}
(tracking/track-view-id-event :communities-stack)))
(is (= [{:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "onboarding.create-profile-info"}}}]
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "onboarding.create-profile-info"}}}
(tracking/track-view-id-event :screen/onboarding.create-profile)))
(is (= [] (tracking/track-view-id-event :unknown-stack)))))
(is (nil? (tracking/track-view-id-event :unknown-stack)))))
(deftest tracked-event-test
(testing "returns correct event for given inputs"
@@ -70,16 +70,16 @@
:appVersion app-version
:eventValue {:enabled true}}}
(tracking/metrics-event [:centralized-metrics/toggle-centralized-metrics true])))
(is (= [{:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "wallet-stack"}}}]
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "wallet-stack"}}}
(tracking/metrics-event [:set-view-id :wallet-stack])))
(is (nil? (tracking/metrics-event [:unknown-event])))
(is (= [{:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "onboarding.intro"}}}]
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "onboarding.intro"}}}
(tracking/metrics-event [:set-view-id :screen/onboarding.intro])))))
@@ -70,7 +70,7 @@
(re-frame/dispatch [:select-contact public-key])))))
(defn contact-item-render
[{:keys [public-key] :as item} _ _ {:keys [set-has-error]}]
[{:keys [public-key] :as item} set-has-error]
(let [user-selected? (rf/sub [:is-contact-selected? public-key])
on-toggle (fn []
(-> public-key
@@ -86,7 +86,7 @@
item]))
(defn view
[{:keys [on-scroll close]}]
[{:keys [scroll-enabled? on-scroll close]}]
(let [theme (quo.theme/use-theme)
contacts (rf/sub [:contacts/sorted-and-grouped-by-first-letter])
selected-contacts-count (rf/sub [:selected-contacts-count])
@@ -94,6 +94,9 @@
customization-color (rf/sub [:profile/customization-color])
one-contact-selected? (= selected-contacts-count 1)
[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)
{:keys [primary-name public-key]} (when one-contact-selected?
(rf/sub [:contacts/contact-by-identity
@@ -133,8 +136,8 @@
:render-section-header-fn contact-list/contacts-section-header
:render-section-footer-fn contact-list/contacts-section-footer
:content-container-style {:padding-bottom 70}
:render-fn contact-item-render
:render-data {:set-has-error set-has-error}
:render-fn render-fn
:scroll-enabled @scroll-enabled?
:on-scroll on-scroll}])
(when contacts-selected?
[rn/view
@@ -130,12 +130,4 @@
:role-permissions? true}
:profile/test-networks-enabled? false})
(h/render [options/community-options-bottom-sheet {:id "test"}])
(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))))
(h/is-truthy (h/get-by-translation-text :t/unmute-community))))
@@ -124,14 +124,6 @@
:on-press #(rf/dispatch [:show-bottom-sheet
{: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
[id request-id]
{:icon :i/block
@@ -143,7 +135,7 @@
request-id])}])})
(defn not-joined-options
[{:keys [id join-pending? spectated? token-gated? intro-message test-networks-enabled?]}]
[id token-gated? intro-message test-networks-enabled?]
(let [common [(show-qr id) (share-community id)]
specific (cond
(and token-gated? (not test-networks-enabled?))
@@ -154,22 +146,19 @@
(not token-gated?)
[(view-members id) (view-rules id intro-message) (invite-contacts id)])]
[(concat specific
common
(when (and spectated? (not join-pending?))
[(assoc (close-community id) :add-divider? true)]))]))
[(concat specific common)]))
(defn join-request-sent-options
[{:keys [id request-id] :as config}]
[(conj (first (not-joined-options config))
[id token-gated? request-id intro-message test-networks-enabled?]
[(conj (first (not-joined-options id token-gated? intro-message test-networks-enabled?))
(assoc (cancel-request-to-join id request-id) :add-divider? true))])
(defn banned-options
[config]
(not-joined-options config))
[id token-gated? intro-message test-networks-enabled?]
(not-joined-options id token-gated? intro-message test-networks-enabled?))
(defn joined-options
[{:keys [id token-gated? muted? muted-till color intro-message]}]
[id token-gated? muted? muted-till color intro-message]
[[(view-members id)
(view-rules id intro-message)
(when token-gated? (view-token-gating id))
@@ -184,7 +173,7 @@
[(assoc (leave-community id color) :add-divider? true)]])
(defn owner-options
[{:keys [id token-gated? muted? muted-till intro-message]}]
[id token-gated? muted? muted-till intro-message]
[[(view-members id)
(view-rules id intro-message)
(when token-gated? (view-token-gating id))
@@ -197,29 +186,22 @@
(defn get-context-drawers
[{:keys [id]}]
(let [{:keys
[id admin joined
banList color muted muted-till
spectated role-permissions?
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}]
(let [{:keys [role-permissions? admin joined
muted banList muted-till color
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?])]
(cond
admin (owner-options config)
joined (joined-options config)
request-id (join-request-sent-options config)
banList (banned-options config)
:else (not-joined-options config))))
admin
(owner-options id role-permissions? muted muted-till intro-message)
joined
(joined-options id role-permissions? muted muted-till color intro-message)
request-id
(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
[id]
@@ -1,6 +1,7 @@
(ns status-im.contexts.keycard.nfc.sheets.events
(: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
(fn [{:keys [db]} [{:keys [on-cancel-event-vector]} :as args]]
@@ -8,16 +9,20 @@
{:db (assoc-in db
[:keycard :connection-sheet-opts]
{:on-close #(rf/dispatch on-cancel-event-vector)})
:fx [[:effects.keycard.ios/start-nfc nil]
[:dismiss-keyboard true]
:fx [[:dismiss-keyboard true]
[:show-nfc-sheet nil]]}
{:effects.keycard.ios/start-nfc
{:on-success #(rf/dispatch [:keycard.ios/on-start-nfc-success args])}})))
{:on-success
(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
(fn [{:keys [db]}]
(if platform/android?
{:db (assoc-in db [:keycard :connection-sheet-opts] nil)
:fx [[:effects.keycard.ios/stop-nfc nil]
[:hide-nfc-sheet nil]]}
:fx [[:hide-nfc-sheet nil]]}
{:effects.keycard.ios/stop-nfc nil})))
@@ -15,7 +15,6 @@
(or
(= error "Tag was lost.")
(= error "NFCError:100")
(= error "NFCError:102")
(= error "Malformed card response")
(re-matches #".*NFCError:100.*" error)))
@@ -8,12 +8,6 @@
:flex 1
:overflow :hidden})
(defn background-image-container
[width]
{:flex 1
:flex-direction :row
:width width})
(def background-blur-overlay
{:position :absolute
:left 0
@@ -14,23 +14,20 @@
(def header-text
[{:text (i18n/label :t/own-your-crypto)
:sub-text (i18n/label :t/use-the-multichain-wallet)}
{:text (i18n/label :t/store-your-asets-on-keycard)
:sub-text (i18n/label :t/be-safe-with-secure-cold-wallet)}
{:text (i18n/label :t/chat-with-friends)
:sub-text (i18n/label :t/with-full-encryption)}
{:text (i18n/label :t/store-your-asets-on-keycard)
:sub-text (i18n/label :t/be-safe-with-secure-cold-wallet)}])
{:text (i18n/label :t/discover-web3)
:sub-text (i18n/label :t/explore-the-decentralized-web)}])
(defn background-image
[window-width]
[rn/view {:style (style/background-image-container (* window-width 3))}
[rn/image
{:source (resources/get-image :own-buy-and-swap-your-crypto)
:style {:align-self :center :width window-width}}]
[rn/image
{:source (resources/get-image :chat-privately-with-friends)
:style {:align-self :center :width window-width}}]
[rn/image
{:source (resources/get-image :store-your-assets-on-keycard)
:style {:align-self :center :width window-width}}]])
[image-view-width]
[rn/image
{:resize-mode :stretch
:style {:flex 1
:width image-view-width}
:source (resources/get-image :onboarding-illustration)}])
(defonce progress (atom nil))
(defonce paused? (atom nil))
@@ -64,7 +61,7 @@
:drag-amount drag-amount
:header-background true
:gesture :swipeable
:background [background-image window-width]}]
:background [background-image (* 4 window-width)]}]
(when dark-overlay?
[quo/blur
{:style style/background-blur-overlay
@@ -8,9 +8,9 @@
(def ^:const progress-bar-animation-delay 300)
(def ^:const progress-bar-animation-duration 4000)
(def ^:const initial-division-quotient 4)
(def ^:const initial-division-quotient 5)
(def ^:const progress-threshold 25)
(def ^:const drag-limit 75)
(def ^:const drag-limit 100)
(defn slide-animation
[progress-percentage & [duration]]
@@ -50,6 +50,7 @@
(animate-progress-value (animation-value q 1))
(animate-progress-value (animation-value q 2))
(animate-progress-value (animation-value q 3))
(animate-progress-value (animation-value q 4))
(animate-progress-value (calculate-remainder next-progress drag-limit)))
-1)
paused?))))
@@ -23,10 +23,10 @@
(defn content-view
[{:keys [window-width status-bar-height index header-text header-background]} content]
(let [content-width (* 3 window-width)]
(let [content-width (* 4 window-width)]
[rn/view {:style {:flex 1}}
[rn/view {:style (style/header-container status-bar-height content-width index header-background)}
(for [index (range 3)]
(for [index (range 4)]
^{:key index}
[header-text-view index window-width header-text])]
(when content content)]))
@@ -37,6 +37,7 @@
{:style (style/progress-bar progress-bar-width)}
[rn/view {:style (style/progress-bar-item static? false)}]
[rn/view {:style (style/progress-bar-item static? false)}]
[rn/view {:style (style/progress-bar-item static? false)}]
[rn/view {:style (style/progress-bar-item static? true)}]])
(defn f-dynamic-progress-bar
@@ -64,7 +65,7 @@
nil)]
[rn/view {:style {:flex 1}}
[gesture/gesture-detector {:gesture identified-gesture}
[container-view {:style (style/carousel-container carousel-left animate? (* 3 window-width))}
[container-view {:style (style/carousel-container carousel-left animate? (* 4 window-width))}
(for [index (range 1)]
^{:key index}
[content-view
+27 -22
View File
@@ -3,6 +3,8 @@
[re-frame.core :as re-frame]
status-im.common.biometric.events
[status-im.constants :as constants]
[status-im.contexts.profile.create.events :as profile.create]
[status-im.contexts.profile.recover.events :as profile.recover]
[status-im.contexts.shell.constants :as shell.constants]
[taoensso.timbre :as log]
[utils.i18n :as i18n]
@@ -76,28 +78,30 @@
(fn [_ [error]]
{:dispatch [:biometric/show-message (ex-cause error)]}))
(rf/reg-event-fx :onboarding/create-account-and-login
(fn [{:keys [db]}]
(let [{:keys [seed-phrase]
:as profile} (:onboarding/profile db)
syncing-account-recovered? (and (seq (:syncing/key-uid db))
(= (:syncing/key-uid db)
(get-in db [:onboarding/profile :key-uid])))]
{:db (-> db
(dissoc :profile/login)
(dissoc :auth-method)
(assoc :onboarding/new-account? true))
:fx [[:dispatch
[:navigate-to-within-stack
[:screen/onboarding.preparing-status
(get db
:onboarding/navigated-to-enter-seed-phrase-from-screen
:screen/onboarding.new-to-status)]]]
(when-not syncing-account-recovered?
[:dispatch [:syncing/clear-syncing-installation-id]])
(if seed-phrase
[:dispatch [:profile.recover/recover-and-login profile]]
[:dispatch [:profile.create/create-and-login profile]])]})))
(rf/defn create-account-and-login
{:events [:onboarding/create-account-and-login]}
[{:keys [db] :as cofx}]
(let [{:keys [seed-phrase]
:as profile} (:onboarding/profile db)
syncing-account-recovered? (and (seq (:syncing/key-uid db))
(= (:syncing/key-uid db)
(get-in db [:onboarding/profile :key-uid])))]
(rf/merge cofx
{:fx [[:dispatch
[:navigate-to-within-stack
[:screen/onboarding.preparing-status
(get db
:onboarding/navigated-to-enter-seed-phrase-from-screen
:screen/onboarding.new-to-status)]]]
(when-not syncing-account-recovered?
[:dispatch [:syncing/clear-syncing-installation-id]])]
:db (-> db
(dissoc :profile/login)
(dissoc :auth-method)
(assoc :onboarding/new-account? true))}
(if seed-phrase
(profile.recover/recover-profile-and-login profile)
(profile.create/create-profile-and-login profile)))))
(rf/defn on-delete-profile-success
{:events [:onboarding/on-delete-profile-success]}
@@ -203,3 +207,4 @@
:on-error #(log/error "failed to save biometrics"
{:key-uid key-uid
:error %})}))))
@@ -152,8 +152,7 @@
{:key :bridge}
{:key :buy}
{:key :destroy}
{:key :mint}
{:key :approval}]}
{:key :mint}]}
{:key :status
:type :select
:options [{:key :pending}
@@ -220,8 +219,7 @@
:descriptor descriptor
:blur? (:blur? @component-state)
:show-blur-background? true}
[rn/view {:style {:flex 1}}
[rn/view {:style {:align-self :center}}
[quo/wallet-activity
(merge {:on-press #(js/alert "Activity pressed")
:on-press-options #(js/alert "Options pressed")}
(merge {:on-press #(js/alert "Dropdown pressed")}
@component-state)]]])))
@@ -6,13 +6,14 @@
[utils.re-frame :as rf]
[utils.security.core :as security]))
(rf/reg-event-fx :profile.create/create-and-login
(fn [{:keys [db]} [{:keys [display-name password image-path color]}]]
(let [login-sha3-password (native-module/sha3 (security/safe-unmask-data password))]
{:db (assoc-in db [:syncing :login-sha3-password] login-sha3-password)
:fx [[:effects.profile/create-and-login
(assoc (profile.config/create)
:displayName display-name
:password login-sha3-password
:imagePath (profile.config/strip-file-prefix image-path)
:customizationColor color)]]})))
(rf/defn create-profile-and-login
{:events [:profile.create/create-and-login]}
[{:keys [db]} {:keys [display-name password image-path color]}]
(let [login-sha3-password (native-module/sha3 (security/safe-unmask-data password))]
{:db (assoc-in db [:syncing :login-sha3-password] login-sha3-password)
:effects.profile/create-and-login
(assoc (profile.config/create)
:displayName display-name
:password login-sha3-password
:imagePath (profile.config/strip-file-prefix image-path)
:customizationColor color)}))
@@ -37,7 +37,6 @@
{:dataDir (native-module/backup-disabled-data-dir)
:mixpanelAppId config/mixpanel-app-id
:mixpanelToken config/mixpanel-token
:sentryDSN config/sentry-dsn-status-go
:mediaServerEnableTLS (config/enabled? config/STATUS_BACKEND_SERVER_MEDIA_SERVER_ENABLE_TLS)
:logEnabled (not (string/blank? config/log-level))
:logLevel config/log-level
@@ -14,11 +14,8 @@
network/status network/expensive?
centralized-metrics/user-confirmed?]
network-type :network/network-type
:as db}]
:as _db}]
(assoc db/app-db
;; We must carry over the current `:selected-stack-id`, otherwise the
;; app will start with `:view-id` as nil.
:shell/selected-stack-id (:shell/selected-stack-id db)
:profile/logging-out? true
:centralized-metrics/user-confirmed? user-confirmed?
:network/type network-type
@@ -47,3 +44,4 @@
[:dispatch-later
{:ms 100
:dispatch [:profile.logout/reset-state]}]]}))
@@ -7,22 +7,23 @@
[utils.re-frame :as rf]
[utils.security.core :as security]))
(rf/reg-event-fx :profile.recover/recover-and-login
(fn [{:keys [db]} [{:keys [display-name password image-path color seed-phrase]}]]
(let [login-sha3-password (native-module/sha3 (security/safe-unmask-data password))]
{:db
(-> db
(assoc :onboarding/recovered-account? true)
(assoc-in [:syncing :login-sha3-password] login-sha3-password))
:fx
[[:effects.profile/restore-and-login
(assoc (profile.config/create)
:displayName display-name
:mnemonic (security/safe-unmask-data seed-phrase)
:password login-sha3-password
:imagePath (profile.config/strip-file-prefix image-path)
:customizationColor (or color constants/profile-default-color)
:fetchBackup true)]]})))
(rf/defn recover-profile-and-login
{:events [:profile.recover/recover-and-login]}
[{:keys [db]} {:keys [display-name password image-path color seed-phrase]}]
(let [login-sha3-password (native-module/sha3 (security/safe-unmask-data password))]
{:db
(-> db
(assoc :onboarding/recovered-account? true)
(assoc-in [:syncing :login-sha3-password] login-sha3-password))
:effects.profile/restore-and-login
(assoc (profile.config/create)
:displayName display-name
:mnemonic (security/safe-unmask-data seed-phrase)
:password login-sha3-password
:imagePath (profile.config/strip-file-prefix image-path)
:customizationColor (or color constants/profile-default-color)
:fetchBackup true)}))
(rf/reg-event-fx :profile.recover/validate-recovery-phrase
(fn [_ [phrase {:keys [on-success on-error]}]]
@@ -1,22 +0,0 @@
(ns status-im.contexts.settings.keycard.style
(:require
[quo.foundations.colors :as colors]))
(def registered-keycards-container
{:gap 12
:padding-horizontal 20})
(def keycard-row
{:gap 12
:padding 12
:border-radius 16
:flex-direction :row
:background-color colors/white-opa-5})
(def keycard-owner
{:gap 4
:flex-direction :row
:align-items :center})
(def keycard-owner-name
{:color colors/white-opa-40})
@@ -5,45 +5,9 @@
[status-im.common.events-helper :as events-helper]
[status-im.common.resources :as resources]
[status-im.constants :as constants]
[status-im.contexts.settings.keycard.style :as style]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn registered-keycard
[{:keys [profile-name profile-image customization-color]}]
[rn/view {:style style/keycard-row}
[quo/icon :i/keycard-card
{:size 20
:color colors/white-70-blur}]
[rn/view
[quo/text profile-name]
[rn/view {:style style/keycard-owner}
[quo/user-avatar
{:full-name profile-name
:profile-picture profile-image
:customization-color customization-color
:status-indicator false
:ring? false
:size :xxxs}]
[quo/text
{:size :paragraph-2
:style style/keycard-owner-name}
profile-name]]]])
(defn registered-keycards
[]
(let [keycards (rf/sub [:keycard/registered-keycards])]
[:<>
[quo/divider-label
{:counter? false
:tight? true
:blur? true}
(i18n/label :t/registered-keycards)]
[rn/view {:style style/registered-keycards-container}
(for [keycard keycards]
^{:key (:keycard-uid keycard)}
[registered-keycard keycard])]]))
(defn view
[]
(let [keycard-profile? (rf/sub [:keycard/keycard-profile?])]
@@ -56,7 +20,7 @@
[quo/page-top
{:title (i18n/label :t/keycard)}]
(if keycard-profile?
[registered-keycards]
[:<>]
[rn/view {:style {:padding-horizontal 28 :padding-top 20}}
[quo/small-option-card
{:variant :main
@@ -13,8 +13,6 @@
(def first-tab-id :assets)
;; NOTE: If the id of the tabs are changed, please check 'wallet/select-account-tab' event as
;; a activity event depends on it
(def tabs-data
[{:id :assets :label (i18n/label :t/assets) :accessibility-label :assets-tab}
{:id :collectibles :label (i18n/label :t/collectibles) :accessibility-label :collectibles-tab}
@@ -32,6 +30,8 @@
(hot-reload/use-safe-unmount (fn []
(rf/dispatch [:wallet/close-account-page])
(rf/dispatch [:wallet/clean-current-viewing-account])))
(rn/use-mount
#(rf/dispatch [:wallet/fetch-activities-for-current-account]))
[rn/view {:style {:flex 1}}
[account-switcher/view
{:type :wallet-networks
@@ -15,26 +15,11 @@
(let [parsed-keypairs (data-store/rpc->keypairs keypairs)
default-key-uid (->> parsed-keypairs
(some #(when (= (:type %) :profile) %))
:key-uid)
keycard? (get-in db [:profile/profile :keycard-pairing])
keypair (first parsed-keypairs)
keycard (when (and keycard? (= (count parsed-keypairs) 1) (empty? (:keycards keypair)))
{:keycard-uid (get-in db [:profile/profile :keycard-instance-uid])
:key-uid default-key-uid
:keycard-name ""
:accounts-addresses [(some #(when (:wallet %) (:address %))
(:accounts keypair))]})]
:key-uid)]
{:db (-> db
(assoc-in [:wallet :keypairs]
(cond-> (utils.collection/index-by :key-uid parsed-keypairs)
keycard
(assoc-in [default-key-uid :keycards] [keycard])))
(assoc-in [:wallet :ui :create-account :selected-keypair-uid] default-key-uid))
;; this is a temporary solution, should be done properly in statu-go instead
:fx [(when keycard
[:json-rpc/call
[{:method "accounts_saveOrUpdateKeycard"
:params [keycard true]}]])]}))
(assoc-in [:wallet :keypairs] (utils.collection/index-by :key-uid parsed-keypairs))
(assoc-in [:wallet :ui :create-account :selected-keypair-uid] default-key-uid))}))
(rf/reg-event-fx :wallet/get-keypairs-success get-keypairs-success)
(defn confirm-account-origin
@@ -1,104 +0,0 @@
(ns status-im.contexts.wallet.common.activity-tab.activity-types.view
(:require [quo.core :as quo]
[status-im.contexts.wallet.common.activity-tab.options.view :as activity-options]
[utils.re-frame :as rf]))
;; Common helpers
(defn- open-options
[transactions]
(rf/dispatch
[:show-bottom-sheet
{:content #(activity-options/view (first transactions))}]))
(defn- common-activity-props
[{:keys [tx-type relative-date status transactions]}]
{:transaction tx-type
:timestamp relative-date
:status status
:blur? false
:on-press-options #(open-options transactions)})
(defn- network-tag
[{:keys [network-name network-logo]}]
{:type :network
:network-name network-name
:network-logo network-logo})
(defn- collectible-tag
[{:keys [nft-url nft-name amount token-id]}]
{:type :collectible
:collectible nft-url
:collectible-name (if (> amount 1)
(str amount " " nft-name)
nft-name)
:collectible-number (when (not= token-id "0")
token-id)})
(defn- token-tag
[{:keys [token amount]}]
{:type :token
:token token
:amount amount})
;; Activity type views
(defn send-activity
[{:keys [symbol-out amount-out token-id sender-tag recipient-tag network-name-out network-logo-out]
:as activity-data}]
(let [base-props (common-activity-props activity-data)
first-tag (if token-id
(collectible-tag activity-data)
(token-tag {:token symbol-out :amount amount-out}))]
[quo/wallet-activity
(assoc base-props
:first-tag first-tag
:second-tag-prefix :t/from
:second-tag sender-tag
:third-tag-prefix :t/to
:third-tag recipient-tag
:fourth-tag-prefix :t/on
:fourth-tag (network-tag {:network-name network-name-out
:network-logo network-logo-out}))]))
(defn bridge-activity
[{:keys [symbol-out amount-out network-name-out network-logo-out network-name-in network-logo-in
sender-tag]
:as activity-data}]
[quo/wallet-activity
(assoc (common-activity-props activity-data)
:first-tag (token-tag {:token symbol-out :amount amount-out})
:second-tag-prefix :t/from
:second-tag (network-tag {:network-name network-name-out
:network-logo network-logo-out})
:third-tag-prefix :t/to
:third-tag (network-tag {:network-name network-name-in
:network-logo network-logo-in})
:fourth-tag-prefix :t/in
:fourth-tag sender-tag)])
(defn swap-activity
[{:keys [symbol-out amount-out symbol-in amount-in sender-tag network-name-out network-logo-out]
:as activity-data}]
[quo/wallet-activity
(assoc (common-activity-props activity-data)
:first-tag (token-tag {:token symbol-out :amount amount-out})
:second-tag-prefix :t/to
:second-tag (token-tag {:token symbol-in :amount amount-in})
:third-tag-prefix :t/in
:third-tag sender-tag
:fourth-tag-prefix :t/on
:fourth-tag (network-tag {:network-name network-name-out
:network-logo network-logo-out}))])
(defn approval-activity
[{:keys [symbol-out amount-out sender-tag spender-tag network-name-out network-logo-out]
:as activity-data}]
[quo/wallet-activity
(assoc (common-activity-props activity-data)
:first-tag (token-tag {:token symbol-out :amount amount-out})
:second-tag-prefix :t/in
:second-tag sender-tag
:third-tag-prefix :t/for
:third-tag spender-tag
:fourth-tag-prefix :t/on
:fourth-tag (network-tag {:network-name network-name-out
:network-logo network-logo-out}))])
@@ -1,5 +1,6 @@
(ns status-im.contexts.wallet.common.activity-tab.constants)
(def ^:const wallet-activity-error-code-success 1)
(def ^:const wallet-activity-error-code-task-canceled 2)
(def ^:const wallet-activity-error-code-failed 3)
@@ -11,7 +12,6 @@
(def ^:const wallet-activity-type-bridge 4)
(def ^:const wallet-activity-type-contract-deployment 5)
(def ^:const wallet-activity-type-mint 6)
(def ^:const wallet-activity-type-approval 7)
(def ^:const wallet-activity-status-failed 0)
(def ^:const wallet-activity-status-pending 1)
@@ -62,3 +62,4 @@
wallet-activity-type-buy :t/via
wallet-activity-type-swap :t/via
wallet-activity-type-bridge :t/in})
@@ -1,126 +1,70 @@
(ns status-im.contexts.wallet.common.activity-tab.events
(:require [camel-snake-kebab.extras :as cske]
[utils.collection :as collection]
[utils.ethereum.chain :as chain]
[utils.re-frame :as rf]
[utils.transforms :as transforms]))
(def ^:const limit-per-request 20)
(defonce ^:private request-id-atom (atom 0))
(defn- nested-merge
[& maps]
(apply merge-with merge maps))
(defn- create-default-filters
(defn- get-unique-request-id
[]
{:period {:startTimestamp 0
:endTimestamp 0}
:types []
:statuses []
:counterpartyAddresses []
:assets []
:collectibles []
:filterOutAssets false
:filterOutCollectibles false})
(rf/reg-event-fx
:wallet/store-session-id-for-activity-filter-session
(fn [{:keys [db]} [request-id]]
{:db (assoc-in db [:wallet :ui :activity-tab :request :request-id] request-id)}))
(swap! request-id-atom inc)
@request-id-atom)
(rf/reg-event-fx
:wallet/fetch-activities-for-current-account
(fn [{:keys [db]}]
(let [address (get-in db [:wallet :current-viewing-account-address])
chain-ids (chain/chain-ids db)
params [[address] chain-ids (create-default-filters) limit-per-request]]
{:db (-> db
(update-in [:wallet :activities] dissoc address)
(update-in [:wallet :ui :activity-tab :request] dissoc :request-id)
(update-in [:wallet :ui :activity-tab :request]
assoc
:address address
:loading? true
:initial-request? true))
(let [address (-> db :wallet :current-viewing-account-address)
chain-ids (chain/chain-ids db)
request-id (get-unique-request-id)
filters {:period {:startTimestamp 0
:endTimestamp 0}
:types []
:statuses []
:counterpartyAddresses []
:assets []
:collectibles []
:filterOutAssets false
:filterOutCollectibles false}
offset 0
limit 50
request-params [request-id [address] chain-ids filters offset limit]]
{:db (assoc-in db [:wallet :ui :activity-tab :request request-id] address)
:fx [[:json-rpc/call
[{:method "wallet_startActivityFilterSessionV2"
:params params
:on-success [:wallet/store-session-id-for-activity-filter-session]
:on-error [:wallet/log-rpc-error
{:event :wallet/fetch-activities-for-current-account
:params params}]}]]]})))
(rf/reg-event-fx
:wallet/stop-activity-filter-session
(fn [{:keys [db]}]
(when-let [session-id (get-in db [:wallet :ui :activity-tab :request :request-id])]
{:db (update-in db [:wallet :ui :activity-tab] dissoc :request)
:fx [[:json-rpc/call
[{:method "wallet_stopActivityFilterSession"
:params [session-id]
[{;; This method is deprecated and will be replaced by
;; "wallet_startActivityFilterSession"
;; https://github.com/status-im/status-mobile/issues/19864
:method "wallet_filterActivityAsync"
:params request-params
:on-error [:wallet/log-rpc-error
{:event :wallet/stop-activity-filter-session
:params [session-id]}]}]]]})))
{:event :wallet/fetch-activities-for-current-account
:params request-params}]}]]]})))
(rf/reg-event-fx
:wallet/get-more-for-activities-filter-session
(fn [{:keys [db]}]
(let [session-id (get-in db [:wallet :ui :activity-tab :request :request-id])
has-more? (get-in db [:wallet :ui :activity-tab :request :has-more?])
params [session-id limit-per-request]]
(when (and session-id has-more?)
{:fx [[:json-rpc/call
[{:method "wallet_getMoreForActivityFilterSession"
:params params
:on-error [:wallet/log-rpc-error
{:event :wallet/get-more-for-activities-filter-session
:params params}]}]]]}))))
(rf/reg-event-fx
:wallet/reset-activities-filter-session
(fn [{:keys [db]}]
(when-let [session-id (get-in db [:wallet :ui :activity-tab :request :request-id])]
{:db (assoc-in db [:wallet :ui :activity-tab :request :initial-request?] true)
:fx [[:json-rpc/call
[{:method "wallet_resetActivityFilterSession"
:params [session-id limit-per-request]
:on-error [:wallet/log-rpc-error
{:event :wallet/reset-activities-filter-session
:params [session-id limit-per-request]}]}]]]})))
(def ^:private activity-transaction-id (comp hash :transaction))
(rf/reg-event-fx
:wallet/activity-filtering-for-current-account-done
(fn [{:keys [db]} [{:keys [message]}]]
(let [{:keys [address initial-request?]} (get-in db [:wallet :ui :activity-tab :request])
{:keys [activities offset hasMore]} (transforms/json->clj message)
new-activities (->> activities
(cske/transform-keys transforms/->kebab-case-keyword)
(collection/index-by :key))
existing-activities (get-in db [:wallet :activities address])
updated-activities (if initial-request?
new-activities
(nested-merge existing-activities new-activities))]
{:db (-> db
(assoc-in [:wallet :activities address] updated-activities)
(assoc-in [:wallet :ui :activity-tab :request :offset] offset)
(assoc-in [:wallet :ui :activity-tab :request :has-more?] hasMore)
(assoc-in [:wallet :ui :activity-tab :request :loading?] false)
(assoc-in [:wallet :ui :activity-tab :request :initial-request?] false))})))
(fn [{:keys [db]} [{:keys [message requestId]}]]
(let [address (get-in db [:wallet :ui :activity-tab :request requestId])
activities (->> message
(transforms/json->clj)
(:activities)
(cske/transform-keys transforms/->kebab-case-keyword))
activities-indexed (zipmap (map activity-transaction-id activities)
activities)]
{:db (assoc-in db [:wallet :activities address] activities-indexed)})))
(def ^:private nested-merge (partial merge-with merge))
(rf/reg-event-fx
:wallet/activities-filtering-entries-updated
(fn [{:keys [db]} [{:keys [message requestId]}]]
(when (= requestId (get-in db [:wallet :ui :activity-tab :request :request-id]))
(let [address (get-in db [:wallet :ui :activity-tab :request :address])
updated-activities (->> message
transforms/json->clj
(cske/transform-keys transforms/->kebab-case-keyword)
(collection/index-by :key))]
{:db (update-in db [:wallet :activities address] nested-merge updated-activities)}))))
(rf/reg-event-fx
:wallet/activities-session-updated
(fn [_ [{:keys [message]}]]
(let [{:keys [hasNewOnTop]} (transforms/json->clj message)]
(when hasNewOnTop
{:fx [[:dispatch [:wallet/reset-activities-filter-session]]]}))))
(let [address (get-in db [:wallet :ui :activity-tab :request requestId])
activities (->> message
(transforms/json->clj)
(cske/transform-keys transforms/->kebab-case-keyword))
activities-indexed (zipmap (map activity-transaction-id activities)
activities)]
{:db (-> db
(update-in [:wallet :ui :activity-tab :request] dissoc requestId)
(update-in [:wallet :activities address] nested-merge activities-indexed))})))
@@ -1,49 +0,0 @@
(ns status-im.contexts.wallet.common.activity-tab.options.view
(:require [quo.core :as quo]
[react-native.clipboard :as clipboard]
[react-native.core :as rn]
[status-im.contexts.wallet.common.utils.external-links :as external-links]
[status-im.contexts.wallet.common.utils.networks :as network-utils]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn view
[{:keys [chain-id]
tx-hash :hash}]
(let [{:keys [view-on-block-explorer-label
link-to-block-explorer-label]} (network-utils/get-network-details chain-id)
tx-details-link-on-block-explorer (external-links/get-link-to-tx-details chain-id tx-hash)
open-tx-on-block-explorer (rn/use-callback
#(rf/dispatch [:browser.ui/open-url
tx-details-link-on-block-explorer])
[tx-details-link-on-block-explorer])
copy-tx-hash-to-clipboard (rn/use-callback
(fn []
(clipboard/set-string tx-hash)
(rf/dispatch
[:toasts/upsert
{:type :positive
:text
(i18n/label
:t/transaction-hash-copied-to-clipboard)}]))
[tx-hash])
share-link-to-block-explorer (rn/use-callback
#(rf/dispatch [:open-share
{:options
{:message
tx-details-link-on-block-explorer}}])
[tx-details-link-on-block-explorer])]
[quo/action-drawer
[[{:icon :i/link
:accessibility-label :view-on-block-explorer
:on-press open-tx-on-block-explorer
:label (i18n/label view-on-block-explorer-label)
:right-icon :i/external}]
[{:icon :i/copy
:accessibility-label :copy-transaction-hash
:label (i18n/label :t/copy-transaction-hash)
:on-press copy-tx-hash-to-clipboard}]
[{:icon :i/share
:accessibility-label :share-link-to-block-explorer
:label (i18n/label link-to-block-explorer-label)
:on-press share-link-to-block-explorer}]]]))
@@ -1,49 +1,157 @@
(ns status-im.contexts.wallet.common.activity-tab.view
(:require
[clojure.string :as string]
[quo.core :as quo]
[quo.theme]
[react-native.core :as rn]
[status-im.common.resources :as resources]
[status-im.constants :as constants]
[status-im.contexts.shell.constants :as shell.constants]
[status-im.contexts.wallet.common.activity-tab.activity-types.view :as activity-type]
[status-im.contexts.wallet.common.empty-tab.view :as empty-tab]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn send-and-receive-activity
[{:keys [transaction relative-date status sender recipient token amount network-name
network-logo token-id nft-url nft-name]}]
(if token-id
[quo/wallet-activity
{:transaction transaction
:timestamp relative-date
:status status
:counter 1
:first-tag {:size 24
:type :collectible
:collectible nft-url
:collectible-name (if (> amount 1)
(str amount " " nft-name)
nft-name)
:collectible-number (when (not= token-id "0")
token-id)}
:second-tag-prefix :t/from
:second-tag {:type :address :address sender}
:third-tag-prefix :t/to
:third-tag {:type :address :address recipient}
:fourth-tag-prefix :t/via
:fourth-tag {:size 24
:type :network
:network-name network-name
:network-logo network-logo}
:blur? false}]
[quo/wallet-activity
{:transaction transaction
:timestamp relative-date
:status status
:counter 1
:first-tag {:size 24
:type :token
:token token
:amount amount}
:second-tag-prefix :t/from
:second-tag {:type :address :address sender}
:third-tag-prefix :t/to
:third-tag {:type :address :address recipient}
:fourth-tag-prefix :t/via
:fourth-tag {:size 24
:type :network
:network-name network-name
:network-logo network-logo}
:blur? false}]))
;; WIP to add the mint activity.
;(defn mint-activity
; [{:keys [transaction relative-date status recipient network-name
; network-logo nft-name nft-url token-id]}]
; [quo/wallet-activity
; {:transaction transaction
; :timestamp relative-date
; :status status
; :counter 1
; :first-tag {:size 24
; :type :collectible
; :collectible nft-url
; :collectible-name nft-name
; :collectible-number token-id}
; :second-tag-prefix :t/at
; :second-tag {:type :address :address recipient}
; :third-tag-prefix :t/to
; :third-tag {:type :address :address recipient}
; :fourth-tag-prefix :t/via
; :fourth-tag {:size 24
; :type :network
; :network-name network-name
; :network-logo network-logo}
; :blur? false}])
(defn- section-header
[{:keys [title]}]
[quo/divider-date title])
(defn- activity-item
[{:keys [tx-type] :as activity}]
(case tx-type
:send [activity-type/send-activity activity]
:bridge [activity-type/bridge-activity activity]
:swap [activity-type/swap-activity activity]
:approval [activity-type/approval-activity activity]
(defn activity-item
[{:keys [transaction] :as activity}]
(case transaction
(:send :receive) [send-and-receive-activity activity]
;; WIP to add the mint activity.
;; :mint [mint-activity activity]
nil))
(defn- pressable-text
[{:keys [on-press text]}]
[rn/text
{:style {:text-decoration-line :underline}
:on-press on-press}
text])
(defn view
[]
(let [theme (quo.theme/use-theme)
loading? (rf/sub [:wallet/activity-tab-loading?])
activity-list (rf/sub [:wallet/activities-for-current-viewing-account])
on-end-reached (rn/use-callback
#(rf/dispatch
[:wallet/get-more-for-activities-filter-session]))]
(if (and (and (some? loading?) (false? loading?)) (empty? activity-list))
[empty-tab/view
{:title (i18n/label :t/no-activity)
:description (i18n/label :t/empty-tab-description)
:image (resources/get-themed-image :no-activity theme)}]
[rn/section-list
{:sections activity-list
:sticky-section-headers-enabled false
:style {:flex 1
(let [theme (quo.theme/use-theme)
address (rf/sub [:wallet/current-viewing-account-address])
activity-list (rf/sub [:wallet/activities-for-current-viewing-account])
open-eth-chain-explorer (rn/use-callback
#(rf/dispatch [:wallet/navigate-to-chain-explorer
{:address address
:network constants/mainnet-network-name}])
[address])
open-oeth-chain-explorer (rn/use-callback
#(rf/dispatch [:wallet/navigate-to-chain-explorer
{:address address
:network constants/optimism-network-name}])
[address])
open-arb-chain-explorer (rn/use-callback
#(rf/dispatch [:wallet/navigate-to-chain-explorer
{:address address
:network constants/arbitrum-network-name}])
[address])]
[:<>
[quo/information-box
{:type :informative
:icon :i/info
:closable? false
:style {:margin-horizontal 20 :margin-vertical 8}}
[:<>
(str (i18n/label :t/wallet-activity-beta-message) " ")
[pressable-text
{:on-press open-eth-chain-explorer
:text (i18n/label :t/etherscan)}]
", "
[pressable-text
{:on-press open-oeth-chain-explorer
:text (i18n/label :t/op-explorer)}]
(str ", " (string/lower-case (i18n/label :t/or)) " ")
[pressable-text
{:on-press open-arb-chain-explorer
:text (i18n/label :t/arbiscan)}]
"."]]
(if (empty? activity-list)
[empty-tab/view
{:title (i18n/label :t/no-activity)
:description (i18n/label :t/empty-tab-description)
:image (resources/get-themed-image :no-activity theme)}]
[rn/section-list
{:sections activity-list
:sticky-section-headers-enabled false
:style {:flex 1
:padding-horizontal 8}
:content-container-style {:padding-bottom shell.constants/floating-shell-button-height}
:shows-vertical-scroll-indicator false
:render-fn activity-item
:render-section-header-fn section-header
:on-end-reached on-end-reached
:on-end-reached-threshold 2}])))
:content-container-style {:padding-bottom shell.constants/floating-shell-button-height}
:render-fn activity-item
:render-section-header-fn section-header}])]))
+14 -14
View File
@@ -178,6 +178,20 @@
(let [price (get-market-value currency token prices-per-token)]
(money/crypto->fiat balance price)))
(defn formatted-token-fiat-value
"Converts a token balance into its equivalent fiat value, formatted with a currency symbol.
If the fiat value is below $0.01, it returns a <$0.01 string"
[{:keys [currency currency-symbol balance token prices-per-token]}]
(let [price (or (get-market-value currency token prices-per-token) 0)
price-zero? (zero? price)
balance (or balance 0)
balance-positive? (pos? balance)
fiat-value (money/crypto->fiat balance price)
fiat-value-zero? (money/equal-to fiat-value (money/bignumber 0))]
(if (and fiat-value-zero? (not price-zero?) balance-positive?)
(number/small-number-threshold 2 currency-symbol)
(str currency-symbol fiat-value))))
(defn sanitized-token-amount-to-display
"Formats a token amount to a specified number of decimals.
Returns a threshold value if the formatted amount is less than the minimum value represented by the decimals."
@@ -265,20 +279,6 @@
money/absolute-value
(money/to-fixed 2)))
(defn formatted-token-fiat-value
"Converts a token balance into its equivalent fiat value, formatted with a currency symbol.
If the fiat value is below $0.01, it returns a <$0.01 string"
[{:keys [currency currency-symbol balance token prices-per-token]}]
(let [price (or (get-market-value currency token prices-per-token) 0)
price-zero? (zero? price)
balance (or balance 0)
balance-positive? (pos? balance)
fiat-value (money/crypto->fiat balance price)
fiat-value-zero? (money/equal-to fiat-value (money/bignumber 0))]
(if (and fiat-value-zero? (not price-zero?) balance-positive?)
(number/small-number-threshold 2 currency-symbol)
(fiat-formatted-for-ui currency-symbol fiat-value))))
(defn calculate-token-value
"This function returns token values in the props of token-value (quo) component"
[{:keys [token color currency currency-symbol prices-per-token market-values-per-token]}]
@@ -24,30 +24,3 @@
config/optimism-sepolia-chain-explorer-link
:else config/mainnet-chain-explorer-link))
(defn get-base-url-for-tx-details-by-chain-id
[chain-id]
(condp = chain-id
constants/ethereum-mainnet-chain-id
config/mainnet-tx-details-base-link
constants/arbitrum-mainnet-chain-id
config/arbitrum-mainnet-tx-details-base-link
constants/optimism-mainnet-chain-id
config/optimism-mainnet-tx-details-base-link
constants/ethereum-sepolia-chain-id
config/mainnet-sepolia-tx-details-base-link
constants/arbitrum-sepolia-chain-id
config/arbitrum-sepolia-tx-details-base-link
constants/optimism-sepolia-chain-id
config/optimism-sepolia-tx-details-base-link
config/mainnet-tx-details-base-link))
(defn get-link-to-tx-details
[chain-id tx-hash]
(str (get-base-url-for-tx-details-by-chain-id chain-id) "/" tx-hash))
@@ -139,31 +139,25 @@
[(butlast $) (last $)]))
(def mainnet-network-details
{:source (resources/get-network constants/mainnet-network-name)
:short-name constants/mainnet-short-name
:full-name constants/mainnet-full-name
:network-name constants/mainnet-network-name
:abbreviated-name constants/mainnet-abbreviated-name
:view-on-block-explorer-label :t/view-on-eth
:link-to-block-explorer-label :t/share-link-to-eth})
{:source (resources/get-network constants/mainnet-network-name)
:short-name constants/mainnet-short-name
:full-name constants/mainnet-full-name
:network-name constants/mainnet-network-name
:abbreviated-name constants/mainnet-abbreviated-name})
(def arbitrum-network-details
{:source (resources/get-network constants/arbitrum-network-name)
:short-name constants/arbitrum-short-name
:full-name constants/arbitrum-full-name
:network-name constants/arbitrum-network-name
:abbreviated-name constants/arbitrum-abbreviated-name
:view-on-block-explorer-label :t/view-on-arb
:link-to-block-explorer-label :t/share-link-to-arb})
{:source (resources/get-network constants/arbitrum-network-name)
:short-name constants/arbitrum-short-name
:full-name constants/arbitrum-full-name
:network-name constants/arbitrum-network-name
:abbreviated-name constants/arbitrum-abbreviated-name})
(def optimism-network-details
{:source (resources/get-network constants/optimism-network-name)
:short-name constants/optimism-short-name
:full-name constants/optimism-full-name
:network-name constants/optimism-network-name
:abbreviated-name constants/optimism-abbreviated-name
:view-on-block-explorer-label :t/view-on-oeth
:link-to-block-explorer-label :t/share-link-to-oeth})
{:source (resources/get-network constants/optimism-network-name)
:short-name constants/optimism-short-name
:full-name constants/optimism-full-name
:network-name constants/optimism-network-name
:abbreviated-name constants/optimism-abbreviated-name})
(defn get-network-details
[chain-id]
@@ -185,16 +185,16 @@
:balance 0.5
:token {:symbol "ETH"}
:prices-per-token {:ETH {:usd 2000}}}]
(is (= (utils/formatted-token-fiat-value default-params) "$1000.00"))
(is (= (utils/formatted-token-fiat-value (assoc default-params :balance 0)) "$0.00"))
(is (= (utils/formatted-token-fiat-value default-params) "$1000"))
(is (= (utils/formatted-token-fiat-value (assoc default-params :balance 0)) "$0"))
(is (= (utils/formatted-token-fiat-value (assoc default-params :balance 0.000001)) "<$0.01"))
(is (= (utils/formatted-token-fiat-value (assoc default-params :balance nil)) "$0.00"))
(is (= (utils/formatted-token-fiat-value (assoc default-params :balance nil)) "$0"))
(is (= (utils/formatted-token-fiat-value
(assoc default-params :balance 1 :prices-per-token {:ETH {:usd nil}}))
"$0.00"))
"$0"))
(is (= (utils/formatted-token-fiat-value
(assoc default-params :balance 1 :prices-per-token {:ETH {:usd 0}}))
"$0.00")))))
"$0")))))
(deftest sanitized-token-amount-to-display-test
(testing "sanitized-token-amount-to-display function"
@@ -233,12 +233,9 @@
(defn new->old-route-path
[new-path]
(let [to-bignumber (fn [k] (-> new-path k money/bignumber))]
{:approval-fee (to-bignumber :approval-fee)
:approval-l-1-fee (to-bignumber :approval-l-1-fee)
:bonder-fees (to-bignumber :tx-bonder-fees)
:token-fees (to-bignumber :tx-token-fees)
:from (:from-chain new-path)
(let [bonder-fees (-> new-path :tx-bonder-fees money/bignumber)
token-fees (-> new-path :tx-token-fees money/bignumber)]
{:from (:from-chain new-path)
:amount-in-locked (:amount-in-locked new-path)
:amount-in (:amount-in new-path)
:max-amount-in (:max-amount-in new-path)
@@ -276,9 +273,15 @@
:approval-contract-address (:approval-contract-address new-path)
:approval-required (:approval-required new-path)
:estimated-time (:estimated-time new-path)
:approval-gas-fees (* (money/wei->ether (get-in new-path
[:suggested-levels-for-max-fees-per-gas
:medium]))
(:approval-gas-amount new-path))
:to (:to-chain new-path)
:bonder-fees bonder-fees
:approval-amount-required (:approval-amount-required new-path)
;; :cost () ;; tbd not used on desktop
:token-fees token-fees
:gas-amount (:tx-gas-amount new-path)}))
(defn tokens-never-loaded?
+32 -14
View File
@@ -19,6 +19,7 @@
[status-im.feature-flags :as ff]
[taoensso.timbre :as log]
[utils.collection]
[utils.ethereum.chain :as chain]
[utils.ethereum.eip.eip55 :as eip55]
[utils.i18n :as i18n]
[utils.number]
@@ -39,12 +40,14 @@
(rf/reg-event-fx :wallet/navigate-to-account
(fn [{:keys [db]} [address]]
{:db (assoc-in db [:wallet :current-viewing-account-address] address)
:fx [[:dispatch [:navigate-to :screen/wallet.accounts address]]]}))
:fx [[:dispatch [:navigate-to :screen/wallet.accounts address]]
[:dispatch [:wallet/fetch-activities-for-current-account]]]}))
(rf/reg-event-fx :wallet/navigate-to-account-within-stack
(fn [{:keys [db]} [address]]
{:db (assoc-in db [:wallet :current-viewing-account-address] address)
:fx [[:dispatch [:navigate-to-within-stack [:screen/wallet.accounts :shell-stack] address]]]}))
:fx [[:dispatch [:navigate-to-within-stack [:screen/wallet.accounts :shell-stack] address]]
[:dispatch [:wallet/fetch-activities-for-current-account]]]}))
(rf/reg-event-fx :wallet/navigate-to-new-account
(fn [{:keys [db]} [address]]
@@ -55,11 +58,7 @@
(rf/reg-event-fx :wallet/select-account-tab
(fn [{:keys [db]} [tab]]
(let [activity-tab-selected? (= tab :activity)]
{:db (assoc-in db [:wallet :ui :account-page :active-tab] tab)
:fx [(if activity-tab-selected?
[:dispatch [:wallet/fetch-activities-for-current-account]]
[:dispatch [:wallet/stop-activity-filter-session]])]})))
{:db (assoc-in db [:wallet :ui :account-page :active-tab] tab)}))
(rf/reg-event-fx :wallet/select-home-tab
(fn [{:keys [db]} [tab]]
@@ -67,8 +66,7 @@
(rf/reg-event-fx :wallet/clear-account-tab
(fn [{:keys [db]}]
{:db (assoc-in db [:wallet :ui :account-page :active-tab] nil)
:fx [[:dispatch [:wallet/stop-activity-filter-session]]]}))
{:db (assoc-in db [:wallet :ui :account-page :active-tab] nil)}))
(rf/reg-event-fx :wallet/switch-current-viewing-account
(fn [{:keys [db]} [address]]
@@ -96,8 +94,7 @@
(let [just-completed-transaction? (get-in db [:wallet :ui :send :just-completed-transaction?])]
{:db (update db :wallet dissoc :current-viewing-account-address)
:fx [(when-not just-completed-transaction?
[:dispatch [:wallet/clear-account-tab]])
[:dispatch [:wallet/stop-activity-filter-session]]]})))
[:dispatch [:wallet/clear-account-tab]])]})))
(defn log-rpc-error
[_ [{:keys [event params]} error]]
@@ -109,13 +106,15 @@
(def refresh-accounts-fx-dispatches
[[:dispatch [:wallet/get-wallet-token-for-all-accounts]]
[:dispatch [:wallet/request-collectibles-for-all-accounts {:new-request? true}]]])
[:dispatch [:wallet/request-collectibles-for-all-accounts {:new-request? true}]]
[:dispatch [:wallet/check-recent-history-for-all-accounts]]])
(rf/reg-event-fx
:wallet/fetch-assets-for-address
(fn [_ [address]]
{:fx [[:dispatch [:wallet/get-wallet-token-for-account address]]
[:dispatch [:wallet/request-collectibles-for-account address]]]}))
[:dispatch [:wallet/request-collectibles-for-account address]]
[:dispatch [:wallet/check-recent-history-for-account address]]]}))
(defn- reconcile-accounts
[db-accounts-by-address new-accounts]
@@ -215,7 +214,7 @@
{:db (assoc-in db [:wallet :ui :tokens-loading address] true)
:fx [[:json-rpc/call
[{:method "wallet_fetchOrGetCachedWalletBalances"
:params [[address] true]
:params [[address]]
:on-success [:wallet/store-wallet-token address]
:on-error [:wallet/get-wallet-token-for-account-failed address]}]]]}))
@@ -492,6 +491,25 @@
[{:method "wallet_startWallet"
:on-error [:wallet/log-rpc-error {:event :wallet/start-wallet}]}]]]}))
(rf/reg-event-fx :wallet/check-recent-history-for-all-accounts
(fn [{:keys [db]}]
{:fx (->> (get-in db [:wallet :accounts])
vals
(mapv (fn [{:keys [address]}]
[:dispatch [:wallet/check-recent-history-for-account address]])))}))
(rf/reg-event-fx
:wallet/check-recent-history-for-account
(fn [{:keys [db]} [address]]
(let [chain-ids (chain/chain-ids db)
params [chain-ids [address]]]
{:fx [[:json-rpc/call
[{:method "wallet_checkRecentHistoryForChainIDs"
:params params
:on-error [:wallet/log-rpc-error
{:event :wallet/check-recent-history-for-account
:params params}]}]]]})))
(rf/reg-event-fx :wallet/initialize
(fn []
{:fx [[:dispatch [:wallet/start-wallet]]
+13 -1
View File
@@ -125,12 +125,24 @@
(let [expected-effects {:db {:wallet {:ui {:tokens-loading {address true}}}}
:fx [[:json-rpc/call
[{:method "wallet_fetchOrGetCachedWalletBalances"
:params [[address] true]
:params [[address]]
:on-success [:wallet/store-wallet-token address]
:on-error [:wallet/get-wallet-token-for-account-failed
address]}]]]}]
(is (match? expected-effects (dispatch [event-id address])))))
(h/deftest-event :wallet/check-recent-history-for-all-accounts
[event-id dispatch]
(testing "check recent history for all accounts"
(let [address-1 "0x1"
address-2 "0x2"
expected-fx [[:dispatch [:wallet/check-recent-history-for-account address-1]]
[:dispatch [:wallet/check-recent-history-for-account address-2]]]]
(reset! rf-db/app-db
{:wallet {:accounts {address-1 {:address address-1}
address-2 {:address address-2}}}})
(is (match? expected-fx (:fx (dispatch [event-id])))))))
(h/deftest-event :wallet/reconcile-keypairs
[event-id dispatch]
(let [keypair-key-uid (:key-uid raw-account)]
@@ -7,8 +7,6 @@
(def buy-and-receive-cta-container
{:flex-direction :row
:justify-content :space-between
:padding-horizontal 20
:padding-vertical 8})
(def cta-card
{:flex 1})
@@ -26,17 +26,15 @@
[rn/view
{:style style/buy-and-receive-cta-container}
[quo/wallet-card
{:image (resources/get-image :buy)
:title (i18n/label :t/ways-to-buy)
:subtitle (i18n/label :t/via-card-or-bank)
:container-style (assoc style/cta-card :margin-right 12)
:on-press buy-assets}]
{:image (resources/get-image :buy)
:title (i18n/label :t/ways-to-buy)
:subtitle (i18n/label :t/via-card-or-bank)
:on-press buy-assets}]
[quo/wallet-card
{:image (resources/get-image :receive)
:title (i18n/label :t/receive)
:subtitle (i18n/label :t/deposit-to-your-wallet)
:container-style style/cta-card
:on-press receive-assets}]])
{:image (resources/get-image :receive)
:title (i18n/label :t/receive)
:subtitle (i18n/label :t/deposit-to-your-wallet)
:on-press receive-assets}]])
(if tokens-loading?
[quo/skeleton-list
{:content :assets
@@ -336,13 +336,6 @@
:start-flow? start-flow?
:flow-id :wallet-send-flow}]]]})))
(rf/reg-event-fx
:wallet/build-transaction-for-collectible-route
(fn [{:keys [db]}]
(let [last-request-uuid (get-in db [:wallet :ui :send :last-request-uuid])]
{:db (update-in db [:wallet :ui :send] dissoc :transaction-for-signing)
:fx [[:dispatch [:wallet/build-transactions-from-route {:request-uuid last-request-uuid}]]]})))
(rf/reg-event-fx
:wallet/set-token-amount-to-bridge
(fn [{:keys [db]} [{:keys [amount stack-id start-flow?]}]]
@@ -630,6 +623,7 @@
(fn [{:keys [db]}]
(let [address (get-in db [:wallet :current-viewing-account-address])]
{:fx [[:dispatch [:wallet/navigate-to-account-within-stack address]]
[:dispatch [:wallet/fetch-activities-for-current-account]]
[:dispatch [:wallet/select-account-tab :activity]]
[:dispatch-later
[{:ms 20
@@ -700,6 +694,7 @@
:params [{:uuid (get-in transaction-for-signing [:sendDetails :uuid])
:signatures signatures-map}]
:on-success (fn []
(rf/dispatch [:wallet/clean-send-data])
(rf/dispatch [:hide-bottom-sheet]))
:on-error (fn [error]
(log/error "failed to send router transactions with signatures"
@@ -330,7 +330,7 @@
:status (when (controlled-input/input-error input-state) :error)}]}]
[routes/view
{:token token-by-symbol
:input-value input-value
:send-amount-in-crypto amount-in-crypto
:valid-input? valid-input?
:token-not-supported-in-receiver-networks? unsupported-token-in-receiver?
:current-screen-id current-screen-id
@@ -180,7 +180,7 @@
(defn view
[{:keys [token theme valid-input? request-fetch-routes on-press-to-network current-screen-id
token-not-supported-in-receiver-networks? input-value]}]
token-not-supported-in-receiver-networks? send-amount-in-crypto]}]
(let [token-symbol (:symbol token)
nav-current-screen-id (rf/sub [:view-id])
active-screen? (= nav-current-screen-id current-screen-id)
@@ -204,7 +204,7 @@
(when (and active-screen?
(> (count token-available-networks-for-suggested-routes) 0))
(request-fetch-routes 2000)))
[input-value valid-input?])
[send-amount-in-crypto valid-input?])
(rn/use-effect
#(when (and active-screen? (> (count token-available-networks-for-suggested-routes) 0))
(request-fetch-routes 0))

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