diff --git a/android/app/build.gradle b/android/app/build.gradle index 0370f2a33c..62fec3971d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -358,6 +358,7 @@ dependencies { implementation 'com.github.status-im:function:0.0.1' implementation 'com.facebook.fresco:fresco:2.2.0' implementation 'com.facebook.fresco:animated-gif:2.2.0' + implementation "com.squareup.okhttp3:okhttp-tls:3.12.12" } def getLocalNDKDir = { -> diff --git a/android/app/src/main/java/im/status/ethereum/MainApplication.java b/android/app/src/main/java/im/status/ethereum/MainApplication.java index 6f0edb8c64..de35591a23 100644 --- a/android/app/src/main/java/im/status/ethereum/MainApplication.java +++ b/android/app/src/main/java/im/status/ethereum/MainApplication.java @@ -15,12 +15,14 @@ import com.reactnativenavigation.NavigationApplication; import com.reactnativenavigation.react.NavigationReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.ReactInstanceManager; +import com.facebook.react.modules.network.OkHttpClientProvider; import java.util.List; import im.status.ethereum.keycard.RNStatusKeycardPackage; import im.status.ethereum.module.StatusPackage; import im.status.ethereum.pushnotifications.PushNotificationPackage; +import im.status.ethereum.StatusOkHttpClientFactory; public class MainApplication extends NavigationApplication { @@ -56,7 +58,9 @@ public class MainApplication extends NavigationApplication { @Override public void onCreate() { super.onCreate(); - + + OkHttpClientProvider.setOkHttpClientFactory(new StatusOkHttpClientFactory()); + WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1"); initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } diff --git a/android/app/src/main/java/im/status/ethereum/StatusOkHttpClientFactory.java b/android/app/src/main/java/im/status/ethereum/StatusOkHttpClientFactory.java new file mode 100644 index 0000000000..f2b5c36e50 --- /dev/null +++ b/android/app/src/main/java/im/status/ethereum/StatusOkHttpClientFactory.java @@ -0,0 +1,44 @@ +package im.status.ethereum; + +import android.util.Log; + +import com.facebook.react.modules.network.OkHttpClientFactory; +import com.facebook.react.modules.network.OkHttpClientProvider; + +import okhttp3.OkHttpClient; +import okhttp3.Interceptor; +import okhttp3.tls.HandshakeCertificates; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.lang.RuntimeException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; + +import im.status.ethereum.module.StatusPackage; + +class StatusOkHttpClientFactory implements OkHttpClientFactory { + public OkHttpClient createNewNetworkModuleClient() { + String certPem = StatusPackage.getImageTLSCert(); + X509Certificate cert; + + try { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + cert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certPem.getBytes())); + } catch(Exception e) { + Log.e("StatusOkHttpClientFactory", "Could not parse certificate"); + cert = null; + } + + HandshakeCertificates clientCertificates = new HandshakeCertificates.Builder() + .addPlatformTrustedCertificates() + .addTrustedCertificate(cert) + .build(); + + return OkHttpClientProvider.createClientBuilder() + .sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager()) + .build(); + } +} diff --git a/ios/StatusIm/AppDelegate.m b/ios/StatusIm/AppDelegate.m index e173d55388..f7a9cb2245 100644 --- a/ios/StatusIm/AppDelegate.m +++ b/ios/StatusIm/AppDelegate.m @@ -19,10 +19,23 @@ #import #import +#import #import #import +#import +#import + +#import + +//TODO: properly import the framework +extern NSString* StatusgoImageServerTLSCert(); + +@interface StatusDownloaderOperation : SDWebImageDownloaderOperation + + (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler; +@end + /* #if DEBUG #import @@ -45,7 +58,7 @@ static void InitializeFlipper(UIApplication *application) { #endif */ -@implementation AppDelegate +@implementation AppDelegate { UIView *_blankView; } @@ -84,6 +97,8 @@ static void InitializeFlipper(UIApplication *application) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; + SDWebImageDownloaderConfig.defaultDownloaderConfig.operationClass = [StatusDownloaderOperation class]; + return YES; } @@ -124,7 +139,7 @@ static void InitializeFlipper(UIApplication *application) { [UIView animateWithDuration:0.5 animations:^{ _blankView.alpha = 1; }]; - } + } } - (void)applicationDidBecomeActive:(UIApplication *)application { @@ -169,14 +184,67 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { NSDictionary *userInfo = notification.request.content.userInfo; - + NSString *notificationType = userInfo[@"notificationType"]; // check your notification type if (![notificationType isEqual: @"local-notification"]) { // we silence all notifications which are not local completionHandler(UNNotificationPresentationOptionNone); return; } - + completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); } @end + +@implementation StatusDownloaderOperation + ++ (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { + NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + __block NSURLCredential *credential = nil; + + NSString *pemCert = StatusgoImageServerTLSCert(); + pemCert = [pemCert stringByReplacingOccurrencesOfString:@"-----BEGIN CERTIFICATE-----\n" withString:@""]; + pemCert = [pemCert stringByReplacingOccurrencesOfString:@"\n-----END CERTIFICATE-----" withString:@""]; + NSData *derCert = [[NSData alloc] initWithBase64EncodedString:pemCert options:NSDataBase64DecodingIgnoreUnknownCharacters]; + SecCertificateRef certRef = SecCertificateCreateWithData(NULL, (__bridge_retained CFDataRef) derCert); + CFArrayRef certArrayRef = CFArrayCreate(NULL, (void *)&certRef, 1, NULL); + SecTrustSetAnchorCertificates(challenge.protectionSpace.serverTrust, certArrayRef); + + SecTrustResultType trustResult; + SecTrustEvaluate(challenge.protectionSpace.serverTrust, &trustResult); + + if ((trustResult == kSecTrustResultProceed) || (trustResult == kSecTrustResultUnspecified)) { + disposition = NSURLSessionAuthChallengeUseCredential; + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + } + + if (completionHandler) { + completionHandler(disposition, credential); + } +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] && + [challenge.protectionSpace.host isEqualToString:@"localhost"]) { + [StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler]; + } else { + [super URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler]; + } +} + +@end + +@implementation RCTHTTPRequestHandler (SelfSigned) + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] && + [challenge.protectionSpace.host isEqualToString:@"localhost"]) { + [StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler]; + } else { + if (completionHandler) { + completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); + } + } +} + +@end \ No newline at end of file diff --git a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusPackage.java b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusPackage.java index 03de68d400..18e93a87fa 100644 --- a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusPackage.java +++ b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusPackage.java @@ -10,10 +10,16 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import statusgo.Statusgo; + public class StatusPackage implements ReactPackage { private boolean rootedDevice; + public static String getImageTLSCert() { + return Statusgo.imageServerTLSCert(); + } + public StatusPackage(boolean rootedDevice) { this.rootedDevice = rootedDevice; } diff --git a/nix/deps/gradle/deps.json b/nix/deps/gradle/deps.json index da27b3b1f9..d04b3aabb4 100644 --- a/nix/deps/gradle/deps.json +++ b/nix/deps/gradle/deps.json @@ -3933,48 +3933,6 @@ } }, - { - "path": "com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3", - "host": "https://plugins.gradle.org/m2", - "type": "jar", - "pom": { - "sha1": "de3576b735ff4fb2c9b60701b7c346c905c48433", - "sha256": "1pra3yy7pig69a9dz508wxarl1g4m7rdhvyga22lh16szpvc5rsk" - }, - "jar": { - "sha1": "c4540aecb99b9ec380acef6c10bb6f700de8ac2c", - "sha256": "1h0whgk0bj7zid7kdy4hwz5n3jxcz8wi5mycqwjsqsndvlyk3ip2" - } - }, - - { - "path": "com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0", - "host": "https://plugins.gradle.org/m2", - "type": "aar", - "pom": { - "sha1": "78b6dd76ca355a13262d1b6fe97ea225d5b8c445", - "sha256": "0p5j7nix6q86xa3fiq0i2bnnb6qaszdl2yyq0w5c8yva86drvfrw" - }, - "jar": { - "sha1": "36a4f4a3f4173cd4bdfe9a7f078e56fc93b63e64", - "sha256": "0kbv37kcj3lr3bikjfyfk48a0cq06n8jadbcyl7i6w7pr9lh7hlc" - } - }, - - { - "path": "com/facebook/flipper/flipper/0.54.0/flipper-0.54.0", - "host": "https://plugins.gradle.org/m2", - "type": "aar", - "pom": { - "sha1": "f1e963be185c5c5d5a8416faf16af29fddeaf1ab", - "sha256": "023hmlkczyswy2bdl559rasw7w3fi8210qkspl2wdh70axq8qvjq" - }, - "jar": { - "sha1": "55d7417b5db25a08ac19048a6d03a44770ef1f68", - "sha256": "0aifn1d43f9b2xvww0r3xn59hv4np3s84m737xd2rkhvl38hcr5p" - } - }, - { "path": "com/facebook/fresco/drawee/2.2.0/drawee-2.2.0", "host": "https://plugins.gradle.org/m2", @@ -4101,20 +4059,6 @@ } }, - { - "path": "com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1", - "host": "https://plugins.gradle.org/m2", - "type": "jar", - "pom": { - "sha1": "59f786ef9485f034cfed3f0c9cd7bdee8155314b", - "sha256": "1c11zbpsmfyaklgjc5r401li1155jb89f9mx53hb84zp4zd28nqk" - }, - "jar": { - "sha1": "3d015bb821875657ac8e4b808a223aae339defb2", - "sha256": "02czcs5blwl6l60ka82h5k355ib4szfrawg7s8dnba0jrdm8gs4z" - } - }, - { "path": "antlr/antlr/2.7.7/antlr-2.7.7", "host": "https://repo.maven.apache.org/maven2", @@ -5109,6 +5053,20 @@ } }, + { + "path": "com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "de3576b735ff4fb2c9b60701b7c346c905c48433", + "sha256": "1pra3yy7pig69a9dz508wxarl1g4m7rdhvyga22lh16szpvc5rsk" + }, + "jar": { + "sha1": "c4540aecb99b9ec380acef6c10bb6f700de8ac2c", + "sha256": "1h0whgk0bj7zid7kdy4hwz5n3jxcz8wi5mycqwjsqsndvlyk3ip2" + } + }, + { "path": "com/facebook/fbjni/fbjni/0.0.2/fbjni-0.0.2", "host": "https://repo.maven.apache.org/maven2", @@ -5123,6 +5081,34 @@ } }, + { + "path": "com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0", + "host": "https://repo.maven.apache.org/maven2", + "type": "aar", + "pom": { + "sha1": "78b6dd76ca355a13262d1b6fe97ea225d5b8c445", + "sha256": "0p5j7nix6q86xa3fiq0i2bnnb6qaszdl2yyq0w5c8yva86drvfrw" + }, + "jar": { + "sha1": "36a4f4a3f4173cd4bdfe9a7f078e56fc93b63e64", + "sha256": "0kbv37kcj3lr3bikjfyfk48a0cq06n8jadbcyl7i6w7pr9lh7hlc" + } + }, + + { + "path": "com/facebook/flipper/flipper/0.54.0/flipper-0.54.0", + "host": "https://repo.maven.apache.org/maven2", + "type": "aar", + "pom": { + "sha1": "f1e963be185c5c5d5a8416faf16af29fddeaf1ab", + "sha256": "023hmlkczyswy2bdl559rasw7w3fi8210qkspl2wdh70axq8qvjq" + }, + "jar": { + "sha1": "55d7417b5db25a08ac19048a6d03a44770ef1f68", + "sha256": "0aifn1d43f9b2xvww0r3xn59hv4np3s84m737xd2rkhvl38hcr5p" + } + }, + { "path": "com/facebook/fresco/animated-base/2.2.0/animated-base-2.2.0", "host": "https://repo.maven.apache.org/maven2", @@ -5501,6 +5487,20 @@ } }, + { + "path": "com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "59f786ef9485f034cfed3f0c9cd7bdee8155314b", + "sha256": "1c11zbpsmfyaklgjc5r401li1155jb89f9mx53hb84zp4zd28nqk" + }, + "jar": { + "sha1": "3d015bb821875657ac8e4b808a223aae339defb2", + "sha256": "02czcs5blwl6l60ka82h5k355ib4szfrawg7s8dnba0jrdm8gs4z" + } + }, + { "path": "com/github/bumptech/glide/annotations/4.12.0/annotations-4.12.0", "host": "https://repo.maven.apache.org/maven2", @@ -5960,16 +5960,16 @@ }, { - "path": "com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0", + "path": "com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "972fdb73175fce135e78555269ede8c8d3b36f74", - "sha256": "1k6021km41hzmh68yzzj9hhsfs5i1qjw7cljv7facxwaaygxr06n" + "sha1": "ced1afa200bbf344ccdef14b92aa84f7863f395c", + "sha256": "026z5plz8bpn8g4nnjr9zf2v68v3qm15vrzcw8marsfjy80wlq82" }, "jar": { - "sha1": "9bc20b94d3ac42489cf6ce1e42509c86f6f861a1", - "sha256": "18940w3fbh9z4d9xrazfkw69y640ymfk7z42dhgd91pvbp9d8jd2" + "sha1": "c5a0ace696d3f8b1c1d8cc036d8c03cc0cbe6b69", + "sha256": "1v5p6w0ml7hy0n9vjqr2nvlf3f684m94s43xhiba0vxl88cbj73j" } }, @@ -6014,12 +6014,12 @@ }, { - "path": "com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0", + "path": "com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0", "host": "https://repo.maven.apache.org/maven2", "type": "pom", "pom": { - "sha1": "0d70888ba27b15543d639b0be077b1d0d6d38c40", - "sha256": "1yl9y1rcgq47cdk11y3xi8f0fvnbq5gfkglp430h1ychqj3im287" + "sha1": "bd585f378139da5b5e670840892c48e75d03cf7b", + "sha256": "0l85aka3gs1x3jarlp38ndl5lwcaic5xhvqb6ffsf9668k5z10w2" } }, @@ -6537,6 +6537,20 @@ } }, + { + "path": "com/squareup/okhttp3/okhttp-tls/3.12.12/okhttp-tls-3.12.12", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "46fd244a7b499ca9c9915617267bf5bb67709816", + "sha256": "0lq2fwzq3i8h5361x9zbgnc0z3nqkczbh4kk5qxiwqnl5wgfq7xb" + }, + "jar": { + "sha1": "05abcbe1626d83fb6c82306396ec479b49683675", + "sha256": "1cm73al26q0vv2dpb258yjbc375161bhbjrsjqn93mbca006c42f" + } + }, + { "path": "com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12", "host": "https://repo.maven.apache.org/maven2", @@ -6594,16 +6608,16 @@ }, { - "path": "com/squareup/okhttp3/okhttp/5.0.0-alpha.3/okhttp-5.0.0-alpha.3", + "path": "com/squareup/okhttp3/okhttp/5.0.0-alpha.4/okhttp-5.0.0-alpha.4", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "f57e69bf80c4307a338188b1629fd0dc09814df4", - "sha256": "1nsq0ar2sr9yhhkip3f6jzpyp66jz1vzb1mb2b7xn0hn24zd2nbd" + "sha1": "928427ff8d8c2326263733462bc5f8ea1021b5cb", + "sha256": "11iwhxf9ndkd6qmnb3iim97hm9h20v3fkvr8hnav5ypy44mgxilk" }, "jar": { - "sha1": "b1636a6c8b77837a3a34f197ebdf8e9f48bdc1d7", - "sha256": "1a3iya8n1gc50m79pjh1520gckgbfs7882kmkzj8frhg5sjc97gh" + "sha1": "bca0daab030b78fbc74e97e45dd01c6826cf4959", + "sha256": "0s305pbn9rc8y37grz2gmzgmzpi4zdhg9r0sm4fknnimyzdk6j5x" } }, @@ -6637,20 +6651,6 @@ } }, - { - "path": "com/squareup/okio/okio-jvm/3.0.0/okio-jvm-3.0.0", - "host": "https://repo.maven.apache.org/maven2", - "type": "jar", - "pom": { - "sha1": "63dca88e80ade884bc68585baa9940f5c8027bfa", - "sha256": "1ym2ydp7b9nqfi9nfmliyjqhwhny926698jk58xmhyb39i277jxh" - }, - "jar": { - "sha1": "0ab5a73fa2ccb4a36b0b5c69fe10b16d0255bcf8", - "sha256": "01z946cpr2dzjyrrbi1qsw4chwmgaxspxpbhr7arrsi83z6a0r5y" - } - }, - { "path": "com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0", "host": "https://repo.maven.apache.org/maven2", @@ -6993,6 +6993,34 @@ } }, + { + "path": "com/willowtreeapps/assertk/assertk/0.25/assertk-0.25", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "557170cd696a66845f2f97c36b20b372739dff34", + "sha256": "0d6lqsv2j6z9bjzag72bffyswnbbgrz1qcaydm7i2kc34wxz5hjs" + }, + "jar": { + "sha1": "c20894404c38109ed837f6f6d254987777a06b0c", + "sha256": "0341gbcpz37abbk61xyfxmj5gjxggpvwpq5s16zrjkkrgx7v1sfi" + } + }, + + { + "path": "com/willowtreeapps/opentest4k/opentest4k/1.2.2/opentest4k-1.2.2", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "e5c64dc093a91d1e2f591d0742798bb8f325b0ea", + "sha256": "1wn81995g9qdnxfgbscrm4a07m565dmk7mnycrw575w6vjjl0sca" + }, + "jar": { + "sha1": "cc1388f1517c5fb7b83009abbc2f0eb2883739ef", + "sha256": "0g31fw5nvd09nc3pkgzpiwmbvizbxw2wv0vz76m2xbpy8wh8n9jg" + } + }, + { "path": "de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3", "host": "https://repo.maven.apache.org/maven2", @@ -8519,6 +8547,20 @@ } }, + { + "path": "org/bouncycastle/bcprov-jdk15on/1.70/bcprov-jdk15on-1.70", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "696dce53f1cd6ea922402e76a6adce522cedda05", + "sha256": "1c5b2vhc175kf34qkjq76s0awm3iwn2s435dciv02qlhdnvvbx3d" + }, + "jar": { + "sha1": "4636a0d01f74acaf28082fb62b317f1080118371", + "sha256": "1m1hmjyv3jkg94k70amn76ngimyh6xx8bm786dpx4rfmwbij0g4g" + } + }, + { "path": "org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2", "host": "https://repo.maven.apache.org/maven2", @@ -8534,16 +8576,16 @@ }, { - "path": "org/checkerframework/checker-qual/3.21.1/checker-qual-3.21.1", + "path": "org/checkerframework/checker-qual/3.21.2/checker-qual-3.21.2", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "8702ac7cebf178330090c6a3a9149a33a5c32ade", - "sha256": "1ajmkrhrpvdwp2qldnp7cp7nd3z4d8rp65bghzx2il270fv6jsw7" + "sha1": "5210da6cfdbdeb9371e82e7c763b40da9d9cf729", + "sha256": "15d34cvi8vyb81lsxia5qn4w66kzhnddi16mpi05mxkpj5qd9iw1" }, "jar": { - "sha1": "cfa7c49db84e21f9fd7799584d7d09f28a665db7", - "sha256": "0czlxlbxzpa7ys9rjpz9kwm729dpbf7jfah25x35h88syvvxsyvn" + "sha1": "630f15607e9850363c10c81283a65bfbce622146", + "sha256": "1s7cm30zbr6qpw8c8lmnivxspv449jkf7kwn2gk3kf5r0b4m91by" } }, @@ -8600,16 +8642,16 @@ }, { - "path": "org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20", + "path": "org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "4daa545f375cc4e539a97425fb75aa52f856d5e4", - "sha256": "149f92fjjr21y0hv0sxfwaayl3dwgm8sadi472i6dchvpaj6wdz6" + "sha1": "4468907f1901b842bab7bc4c7ef16f84d6e576df", + "sha256": "1br40cgyfpv32xr6c3mb3fzg5sx6my1kp8s6d3nhicxgjq0drsnd" }, "jar": { - "sha1": "0d98c2b001fcb9031859ec9d21914c2ce78912a5", - "sha256": "1b12fpkw0gz0d04jd0bpqr70jx6fw3qddlccq3svihidrbgl9pdy" + "sha1": "419a9acd297cb6fe6f91b982d909f2c20e9fa5c0", + "sha256": "0m0xcnqk1v9bkcf52bkgac7ksnsjp32f4c5nayd9a93yjcf8899g" } }, @@ -8634,12 +8676,12 @@ }, { - "path": "org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20", + "path": "org/codehaus/mojo/animal-sniffer-parent/1.21/animal-sniffer-parent-1.21", "host": "https://repo.maven.apache.org/maven2", "type": "pom", "pom": { - "sha1": "a1725fa054a1b943fa3a8e7ee72f1b57b507488d", - "sha256": "1bqwv253zjjgm0fdm3hinqmbmvgj8vpwh650cvfrvcg6mdsfd4y4" + "sha1": "33f21501882f382578c943ddf5e9035de80ee9fa", + "sha256": "1z2i1kl10l44w6vwmxg37b51c60b8c3ibn12ja4a3flf9fkmfqs2" } }, @@ -8664,12 +8706,12 @@ }, { - "path": "org/codehaus/mojo/mojo-parent/61/mojo-parent-61", + "path": "org/codehaus/mojo/mojo-parent/65/mojo-parent-65", "host": "https://repo.maven.apache.org/maven2", "type": "pom", "pom": { - "sha1": "11fdf4908dbf89fc128efc868ad990ad0a0a8b8a", - "sha256": "1bh5g5nzl8624prasq9r4r8i3r7cw7b7bwa9g7342rghbjsl4cvm" + "sha1": "0599365e99855a082531d962070c67aeba360d0e", + "sha256": "0xm6m26l5c52a4p59s1kn276i4wla6ccb2hhrbn3xf4plm0b97y8" } }, @@ -9771,6 +9813,20 @@ } }, + { + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.5.30/kotlin-stdlib-common-1.5.30", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "850c3ca345e0afacbfaf203f5259e3e1be59df9e", + "sha256": "1g74j6k1lbnljsy2dif47mmc3hrwqch6j6zi1mdp4mh11r812w6d" + }, + "jar": { + "sha1": "649ffab7767038323fec0cc41e2d7b0a8f65a378", + "sha256": "1f346x78anwcxyj1lbywjz4vwa66la5sgfyhz3h2514p199srcwf" + } + }, + { "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31", "host": "https://repo.maven.apache.org/maven2", @@ -9785,6 +9841,20 @@ } }, + { + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10", + "host": "https://repo.maven.apache.org/maven2", + "type": "jar", + "pom": { + "sha1": "d3974425e52440bfe098563c1f10f5712471453d", + "sha256": "157hbi7c8zk5mbz762rr384jl29j9841iq70n43rxpfqrlbz4npp" + }, + "jar": { + "sha1": "0c118700e3a33c8a0d9adc920e9dec0831171925", + "sha256": "1zgg6x5lfnq2cr84fnb12zrbihnx8yqc30gf96d0qmp4jh4xs398" + } + }, + { "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71", "host": "https://repo.maven.apache.org/maven2", @@ -9841,20 +9911,6 @@ } }, - { - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.5.31/kotlin-stdlib-jdk7-1.5.31", - "host": "https://repo.maven.apache.org/maven2", - "type": "jar", - "pom": { - "sha1": "b3f53ded7aa6f0f85abfeca4b1a721849587de2d", - "sha256": "0y4p0y6csx1h7knpn649z4da3gq0yx2pg1v8f0cnhfi9xs4q84r3" - }, - "jar": { - "sha1": "77e0f2568912e45d26c31fd417a332458508acdf", - "sha256": "0py1sypb9rq10f6pzagvwxrk99r1sqbfbpmx7j29v2ffadrz8nx2" - } - }, - { "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71", "host": "https://repo.maven.apache.org/maven2", @@ -9911,20 +9967,6 @@ } }, - { - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.5.31/kotlin-stdlib-jdk8-1.5.31", - "host": "https://repo.maven.apache.org/maven2", - "type": "jar", - "pom": { - "sha1": "6b1353e3e341eeddeea8e67db3d89bed51ceb920", - "sha256": "1pwkm0nx186pma90db27hxzb7lhqmwnjpc07b20jnybl02mhl4a5" - }, - "jar": { - "sha1": "ff5d99aecd328872494e8921b72bf6e3af97af3e", - "sha256": "1p2z9ifcwm1mwa307dhrvsz3wvdx883l8ivy8792kw5cg9vgfj5m" - } - }, - { "path": "org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0", "host": "https://repo.maven.apache.org/maven2", @@ -10107,20 +10149,6 @@ } }, - { - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.5.31/kotlin-stdlib-1.5.31", - "host": "https://repo.maven.apache.org/maven2", - "type": "jar", - "pom": { - "sha1": "f0765608cf114ef9fd254be913fcc39797b40cc4", - "sha256": "0v1fhm2dhr0jvdiislprp39vjxdd3gfk7w6914q8fkmc0h0pcxlg" - }, - "jar": { - "sha1": "6628d61d0f5603568e72d2d5915d2c034b4f1c55", - "sha256": "0s3y58i395qvpga35fjfxb8yl62kwfw58w88kaavj2zcnancw028" - } - }, - { "path": "org/jetbrains/kotlin/kotlin-test-common/1.4.31/kotlin-test-common-1.4.31", "host": "https://repo.maven.apache.org/maven2", @@ -10215,6 +10243,16 @@ } }, + { + "path": "org/junit/junit-bom/5.8.2/junit-bom-5.8.2", + "host": "https://repo.maven.apache.org/maven2", + "type": "pom", + "pom": { + "sha1": "90eab8a5a400f15b8e1cb6e65af0ceb616f23bba", + "sha256": "1ql6yb1zqznlzn26vl9zplvz2qqj57d24qip91pcbqwfkv56jq43" + } + }, + { "path": "org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0", "host": "https://repo.maven.apache.org/maven2", @@ -10960,54 +10998,54 @@ }, { - "path": "org/slf4j/jcl-over-slf4j/2.0.0-alpha5/jcl-over-slf4j-2.0.0-alpha5", + "path": "org/slf4j/jcl-over-slf4j/2.0.0-alpha6/jcl-over-slf4j-2.0.0-alpha6", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "10fd59906c5a47da77f96834c464da7fd472851a", - "sha256": "11k9830p0ifvwdrravzxm3l3b116k9978bw54lg1av4x8w48d737" + "sha1": "0c2080c93f767a568f99911768b2ab2abcb78009", + "sha256": "0nkpxccmxdgzma06nh7rknxiymv1m3yd8m5i2z9c159bhia446zs" }, "jar": { - "sha1": "b7bf757b84f08ee7449da3122aa1ad5462ab6eec", - "sha256": "1ck382s2x4dxv9svvxlbd5m9czy5nk3ynjsjjgwc5hx0i0phxsz2" + "sha1": "1833f64b12761f8e4fafac490df27379db2c8b58", + "sha256": "1bqx6k6gw6124skxr3pwi6x5awxpf1wvzm9c6agjs879hbsjylqq" } }, { - "path": "org/slf4j/slf4j-api/2.0.0-alpha5/slf4j-api-2.0.0-alpha5", + "path": "org/slf4j/slf4j-api/2.0.0-alpha6/slf4j-api-2.0.0-alpha6", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "81b5496c77956334945b92738f2407d6c6eb8065", - "sha256": "1swyj4dk8b1g93b9kw5jrx5m1jx5jin0nap13i3agjq5ld1hkwqn" + "sha1": "0435fb3801e7b028a169062383f34a1aa7b12e1a", + "sha256": "1z0nx6rw8l2shn3w18cmy4455i69pc3z7b2wgs9qarf2sqh57mqa" }, "jar": { - "sha1": "241721b0e0ef3cd6cf584b8f0e24d24ea80799ea", - "sha256": "1nzyyj2mjyv2n70r6g0nb75gnn5prizjqcxa392ca3lmjm8r77r9" + "sha1": "4dbe258ca244936b915f15bc6006cb4224421390", + "sha256": "0bjgx4biww7na0cjcwm9m8nbr38jgzw2lnfyxrriw2yq94gkls4b" } }, { - "path": "org/slf4j/slf4j-jdk14/2.0.0-alpha5/slf4j-jdk14-2.0.0-alpha5", + "path": "org/slf4j/slf4j-jdk14/2.0.0-alpha6/slf4j-jdk14-2.0.0-alpha6", "host": "https://repo.maven.apache.org/maven2", "type": "jar", "pom": { - "sha1": "9055ded49a361930af4696831f2e5c9ea92e52b9", - "sha256": "1b6yw0lwlmd51sjcqw143x894xzf82z16dj9db0pa1cizlpb2c0c" + "sha1": "a3434dc6e8c66d7c0043192fcd2b2bc3ac58ad64", + "sha256": "0skwqjwzvvysva5kd6lgxl5z0y51bsnj13vfznppcsagia1xaa88" }, "jar": { - "sha1": "303aca334e7eccf86bfe61d3c8f769bc1b81ae82", - "sha256": "0krwvrda0p9gqvv14gqzd8cxwgndgsrwfh2336zyzv741xlqfgkc" + "sha1": "26af0196ec5f631d9565257bcfb10993e7b2c5fa", + "sha256": "0jj3vln4s0gw443cyfs93n8309y9an3n4q20vrz4azpkg3586pib" } }, { - "path": "org/slf4j/slf4j-parent/2.0.0-alpha5/slf4j-parent-2.0.0-alpha5", + "path": "org/slf4j/slf4j-parent/2.0.0-alpha6/slf4j-parent-2.0.0-alpha6", "host": "https://repo.maven.apache.org/maven2", "type": "pom", "pom": { - "sha1": "7099e8b69993614780298f3ec9be6621a45a12c8", - "sha256": "01rj9wp9x09685ds1w14alzs7nfr3gks9yss9gh8am2xp45akbya" + "sha1": "22a1b39a5a2298f1ec637604000423988700627d", + "sha256": "09ra3bf0yz6r5k0rcpr0mw0w0xfk26sybgcsfby4z4apsjjw5gwv" } }, diff --git a/nix/deps/gradle/deps.list b/nix/deps/gradle/deps.list index dace1b82b9..d4b5183f1e 100644 --- a/nix/deps/gradle/deps.list +++ b/nix/deps/gradle/deps.list @@ -390,6 +390,7 @@ com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0 com.parse.bolts:bolts-applinks:1.4.0 com.parse.bolts:bolts-tasks:1.4.0 com.squareup.assertj:assertj-android:1.1.1 +com.squareup.okhttp3:okhttp-tls:3.12.12 com.squareup.okhttp3:okhttp-urlconnection:3.12.12 com.squareup.okhttp3:okhttp:3.12.12 com.squareup.okio:okio:1.15.0 diff --git a/nix/deps/gradle/deps.urls b/nix/deps/gradle/deps.urls index 19a639fc06..6ad2e11b3e 100644 --- a/nix/deps/gradle/deps.urls +++ b/nix/deps/gradle/deps.urls @@ -279,9 +279,6 @@ https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4. 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 -https://plugins.gradle.org/m2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom -https://plugins.gradle.org/m2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom -https://plugins.gradle.org/m2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/drawee/2.2.0/drawee-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/fbcore/2.2.0/fbcore-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/fresco/2.2.0/fresco-2.2.0.pom @@ -291,7 +288,6 @@ https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-java/2.2.0/memory- https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-native/2.2.0/memory-type-native-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/nativeimagefilters/2.2.0/nativeimagefilters-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/stetho/2.2.0/stetho-2.2.0.pom -https://plugins.gradle.org/m2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom https://repo.maven.apache.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.pom https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.pom @@ -363,7 +359,10 @@ https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.3.1/sdk-com https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.5.0/sdk-common-24.5.0.pom https://repo.maven.apache.org/maven2/com/drewnoakes/metadata-extractor/2.9.1/metadata-extractor-2.9.1.pom https://repo.maven.apache.org/maven2/com/facebook/conceal/conceal/1.1.3/conceal-1.1.3.pom +https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni/0.0.2/fbjni-0.0.2.pom +https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom +https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-base/2.2.0/animated-base-2.2.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-drawable/2.2.0/animated-drawable-2.2.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-gif/2.2.0/animated-gif-2.2.0.pom @@ -391,6 +390,7 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.6.0/soload https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.8.2/soloader-0.8.2.pom https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.9.0/soloader-0.9.0.pom https://repo.maven.apache.org/maven2/com/facebook/stetho/stetho/1.3.1/stetho-1.3.1.pom +https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/annotations/4.12.0/annotations-4.12.0.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/compiler/4.12.0/compiler-4.12.0.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/disklrucache/4.12.0/disklrucache-4.12.0.pom @@ -426,12 +426,12 @@ 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.1.2/error_prone_annotations-2.1.2.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.pom -https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom +https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.1.2/error_prone_parent-2.1.2.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom -https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.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/google/1/google-1.pom https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom @@ -473,15 +473,15 @@ https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tas https://repo.maven.apache.org/maven2/com/squareup/assertj/assertj-android/1.1.1/assertj-android-1.1.1.pom https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom +https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-tls/3.12.12/okhttp-tls-3.12.12.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.12/okhttp-3.12.12.pom -https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.3/okhttp-5.0.0-alpha.3.pom +https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.4/okhttp-5.0.0-alpha.4.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-3.12.12.pom -https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.0.0/okio-jvm-3.0.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0/okio-3.0.0.pom @@ -511,6 +511,8 @@ https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4-master/4.9.0/an https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4-runtime/4.5/antlr4-runtime-4.5.pom https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4-runtime/4.9.0/antlr4-runtime-4.9.0.pom https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4/4.5/antlr4-4.5.pom +https://repo.maven.apache.org/maven2/com/willowtreeapps/assertk/assertk/0.25/assertk-0.25.pom +https://repo.maven.apache.org/maven2/com/willowtreeapps/opentest4k/opentest4k/1.2.2/opentest4k-1.2.2.pom https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom @@ -636,19 +638,20 @@ https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.pom +https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.70/bcprov-jdk15on-1.70.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom -https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.21.1/checker-qual-3.21.1.pom +https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.21.2/checker-qual-3.21.2.pom https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom -https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20.pom +https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom -https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20.pom +https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.21/animal-sniffer-parent-1.21.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom -https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/61/mojo-parent-61.pom +https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/65/mojo-parent-65.pom https://repo.maven.apache.org/maven2/org/conscrypt/conscrypt-android/2.0.0/conscrypt-android-2.0.0.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 @@ -730,17 +733,17 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1 https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.30/kotlin-stdlib-common-1.4.30.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.31/kotlin-stdlib-common-1.4.31.pom +https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.30/kotlin-stdlib-common-1.5.30.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31.pom +https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.20/kotlin-stdlib-jdk7-1.3.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.31/kotlin-stdlib-jdk7-1.4.31.pom -https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.5.31/kotlin-stdlib-jdk7-1.5.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.20/kotlin-stdlib-jdk8-1.3.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.31/kotlin-stdlib-jdk8-1.4.31.pom -https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.5.31/kotlin-stdlib-jdk8-1.5.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.pom @@ -754,7 +757,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/k https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.30/kotlin-stdlib-1.4.30.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.31/kotlin-stdlib-1.4.31.pom -https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.31/kotlin-stdlib-1.5.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test-common/1.4.31/kotlin-test-common-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test/1.4.31/kotlin-test-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50.pom @@ -762,6 +764,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.4.31/ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.4.31/kotlin-util-klib-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.0/junit-bom-5.7.0.pom +https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom @@ -818,10 +821,10 @@ https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.4/shadowapi-4.4 https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.4/shadows-framework-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.4/utils-reflector-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/utils/4.4/utils-4.4.pom -https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha5/jcl-over-slf4j-2.0.0-alpha5.pom -https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha5/slf4j-api-2.0.0-alpha5.pom -https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha5/slf4j-jdk14-2.0.0-alpha5.pom -https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha5/slf4j-parent-2.0.0-alpha5.pom +https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha6/jcl-over-slf4j-2.0.0-alpha6.pom +https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha6/slf4j-api-2.0.0-alpha6.pom +https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha6/slf4j-jdk14-2.0.0-alpha6.pom +https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha6/slf4j-parent-2.0.0-alpha6.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/4/oss-parent-4.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom diff --git a/nix/deps/gradle/proj.list b/nix/deps/gradle/proj.list index da89d9c449..0b4b79d160 100644 --- a/nix/deps/gradle/proj.list +++ b/nix/deps/gradle/proj.list @@ -1,5 +1,6 @@ app react-native-background-timer +react-native-blob-util react-native-camera-kit react-native-community_async-storage react-native-community_audio-toolkit diff --git a/package.json b/package.json index 29926d60d9..3ae6eeda56 100644 --- a/package.json +++ b/package.json @@ -40,18 +40,19 @@ "react-native-device-info": "^7.4.0", "react-native-dialogs": "^1.0.4", "react-native-draggable-flatlist": "^3.0.3", - "react-native-fast-image": "8.5.11", + "react-native-fast-image": "^8.5.11", "react-native-fetch-polyfill": "^1.1.2", "react-native-fs": "^2.14.1", "react-native-gesture-handler": "^1.8.0", "react-native-haptic-feedback": "^1.9.0", "react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0", "react-native-image-resizer": "^1.2.3", - "react-native-image-viewing": "git+https://github.com/Ferossgp/react-native-image-viewing.git#v0.2.1", + "react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status", "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status", "react-native-languages": "^3.0.2", "react-native-linear-gradient": "^2.5.6", "react-native-mail": "^6.1.1", + "react-native-blob-util": "^0.13.18", "react-native-navigation": "^7.13.0", "react-native-permissions": "^2.1.5", "react-native-reanimated": "^2.1.0", diff --git a/src/status_im/chat/models/images.cljs b/src/status_im/chat/models/images.cljs index c31813793a..1faffe320c 100644 --- a/src/status_im/chat/models/images.cljs +++ b/src/status_im/chat/models/images.cljs @@ -2,6 +2,7 @@ (:require [re-frame.core :as re-frame] [status-im.utils.fx :as fx] ["@react-native-community/cameraroll" :as CameraRoll] + ["react-native-blob-util" :default ReactNativeBlobUtil] [status-im.utils.types :as types] [status-im.utils.config :as config] [status-im.ui.components.permissions :as permissions] @@ -12,6 +13,7 @@ [status-im.i18n.i18n :as i18n] [status-im.utils.utils :as utils] [status-im.utils.platform :as platform] + [status-im.utils.fs :as fs] [status-im.chat.models :as chat])) (def maximum-image-size-px 2000) @@ -37,31 +39,27 @@ (.-localIdentifier result) (.-path result))) -(defn android-save-image-to-gallery [base64-uri] - (react/image-get-size - base64-uri - (fn [width height] - (image-processing/resize - base64-uri - width - height - 100 - (fn [^js resized-image] - (let [path (.-path resized-image) - path (if (string/starts-with? path "file") path (str "file://" path))] - (.save CameraRoll path))) - #(log/error "could not resize image" %))))) +(def temp-image-url (str (fs/cache-dir) "/StatusIm_Image.jpeg")) + +(defn download-image-http [base64-uri on-success] + (-> (.config ReactNativeBlobUtil (clj->js {:trusty platform/ios? + :path temp-image-url})) + (.fetch "GET" base64-uri) + (.then #(on-success (.path %))) + (.catch #(log/error "could not save image")))) + +(defn save-to-gallery [path] (.save CameraRoll path)) (re-frame/reg-fx ::save-image-to-gallery (fn [base64-uri] (if platform/ios? - (-> (.save CameraRoll base64-uri) + (-> (download-image-http base64-uri save-to-gallery) (.catch #(utils/show-popup (i18n/label :t/error) (i18n/label :t/external-storage-denied)))) (permissions/request-permissions {:permissions [:write-external-storage] - :on-allowed #(android-save-image-to-gallery base64-uri) + :on-allowed #(download-image-http base64-uri save-to-gallery) :on-denied (fn [] (utils/set-timeout #(utils/show-popup (i18n/label :t/error) diff --git a/src/status_im/ui/screens/chat/image/preview/views.cljs b/src/status_im/ui/screens/chat/image/preview/views.cljs index 38630ef46c..40609c512f 100644 --- a/src/status_im/ui/screens/chat/image/preview/views.cljs +++ b/src/status_im/ui/screens/chat/image/preview/views.cljs @@ -9,13 +9,10 @@ ["react-native-image-viewing" :default image-viewing] [status-im.utils.share :as share] [taoensso.timbre :as log] - [status-im.utils.fs :as fs] - [clojure.string :as string])) + [status-im.chat.models.images :as images])) -(def temp-image-url (str (fs/cache-dir) "/image.jpeg")) - -(defn share [] - (share/open {:url (str (when platform/android? "file://") temp-image-url) +(defn share [path] + (share/open {:url (str (when platform/android? "file://") path) :type "image/jpeg"} #(log/debug "image shared successfully") #(log/error "could not share image"))) @@ -40,12 +37,7 @@ :height 24} :color colors/white-persist}]] [react/touchable-opacity - {:on-press (fn [] - (fs/write-file - temp-image-url - (last (string/split (get-in message [:content :image]) ",")) "base64" - #(share) - #(log/error "error writing image to cache dir"))) + {:on-press #(images/download-image-http (get-in message [:content :image]) share) :style {:margin-left 10} :accessibility-label :share-button} [icons/icon :main-icons/share-default {:container-style {:width 24 diff --git a/src/status_im/ui/screens/chat/message/message.cljs b/src/status_im/ui/screens/chat/message/message.cljs index 92b1834970..3eacb0aa72 100644 --- a/src/status_im/ui/screens/chat/message/message.cljs +++ b/src/status_im/ui/screens/chat/message/message.cljs @@ -99,11 +99,11 @@ (if (and image ;; Disabling images for public-chats (not public?)) - [react/image {:style {:width 56 - :height 56 - :background-color :black - :border-radius 4} - :source {:uri image}}] + [react/fast-image {:style {:width 56 + :height 56 + :background-color :black + :border-radius 4} + :source {:uri image}}] [react/text {:style (style/quoted-message-text (and outgoing (not pinned))) :number-of-lines 5} (components.reply/get-quoted-text-with-mentions parsed-text)])])) @@ -341,24 +341,27 @@ (def image-max-height 192) (defn image-set-size [dimensions] - (fn [width height] - (when (< width height) - ;; if width less than the height we reduce width proportionally to height - (let [k (/ height image-max-height)] - (when (not= (/ width k) (first @dimensions)) - (reset! dimensions [(/ width k) image-max-height])))))) + (fn [evt] + (let [width (.-width (.-nativeEvent evt)) + height (.-height (.-nativeEvent evt))] + (if (< width height) + ;; if width less than the height we reduce width proportionally to height + (let [k (/ height image-max-height)] + (when (not= (/ width k) (first @dimensions)) + (reset! dimensions {:width (/ width k) :height image-max-height :loaded true}))) + (swap! dimensions assoc :loaded true))))) (defn message-content-image [{:keys [content outgoing in-popover?] :as message} {:keys [on-long-press]}] - (let [dimensions (reagent/atom [image-max-width image-max-height]) + (let [dimensions (reagent/atom {:width image-max-width :height image-max-height :loaded false}) visible (reagent/atom false) uri (:image content)] - (react/image-get-size uri (image-set-size dimensions)) (fn [] (let [style-opts {:outgoing outgoing - :width (first @dimensions) - :height (second @dimensions)}] + :opacity (if (:loaded @dimensions) 1 0) + :width (:width @dimensions) + :height (:height @dimensions)}] [:<> [preview/preview-image {:message message :visible @visible @@ -371,10 +374,10 @@ :disabled in-popover?} [react/view {:style (style/image-message style-opts) :accessibility-label :image-message} - [react/image {:style (dissoc style-opts :outgoing) - :resize-mode :cover - :source {:uri uri}} - [react/view {:style (style/image-message-border style-opts)}]]]]])))) + [react/fast-image {:style (dissoc style-opts :outgoing) + :on-load (image-set-size dimensions) + :source {:uri uri}}] + [react/view {:style (style/image-message-border style-opts)}]]]])))) (defmulti ->message :content-type) diff --git a/src/status_im/ui/screens/chat/photos.cljs b/src/status_im/ui/screens/chat/photos.cljs index 06cdd643ba..97a5aed020 100644 --- a/src/status_im/ui/screens/chat/photos.cljs +++ b/src/status_im/ui/screens/chat/photos.cljs @@ -12,10 +12,9 @@ (fn [photo-path size accessibility-label _] (let [identicon? (when photo-path (profile.db/base64-png? photo-path))] [react/view {:style (style/photo-container size)} - [react/image {:source (utils.image/source photo-path) - :style (style/photo size) - :resize-mode :cover - :accessibility-label (or accessibility-label :chat-icon)}] + [react/fast-image {:source (utils.image/source photo-path) + :style (style/photo size) + :accessibility-label (or accessibility-label :chat-icon)}] (when identicon? [react/view {:style (style/photo-border size)}])])))) @@ -37,8 +36,7 @@ (defn member-identicon [identicon] (let [size style/default-size] [react/view {:style (style/photo-container size)} - [react/image {:source {:uri identicon} - :style (style/photo size) - :resize-mode :cover - :accessibility-label :member-photo}] + [react/fast-image {:source {:uri identicon} + :style (style/photo size) + :accessibility-label :member-photo}] [react/view {:style (style/photo-border size)}]])) diff --git a/src/status_im/ui/screens/status/views.cljs b/src/status_im/ui/screens/status/views.cljs index 6f7b2d43d7..99346c9497 100644 --- a/src/status_im/ui/screens/status/views.cljs +++ b/src/status_im/ui/screens/status/views.cljs @@ -24,40 +24,29 @@ (defonce messages-list-ref (atom nil)) (def image-max-dimension 192) -(def image-sizes (atom {})) -(defn image-set-size [dimensions uri] - (fn [width height] - (swap! image-sizes assoc uri {:initialized? true}) - (when (< width height) - ;; if width less than the height we reduce width proportionally to height - (let [k (/ height image-max-dimension)] - (when (not= (/ width k) (first @dimensions)) - (swap! image-sizes assoc uri {:width (/ width k)}) - (reset! dimensions [(/ width k) image-max-dimension])))))) +(defn image-set-size [width] + (fn [evt] + (reset! width (/ (.-width (.-nativeEvent evt)) (/ (.-height (.-nativeEvent evt)) image-max-dimension))))) -(defn message-content-image [uri _] - (let [stored-image (get @image-sizes uri) - dimensions (reagent/atom [nil image-max-dimension])] - (if stored-image - (reset! dimensions [(:width stored-image) image-max-dimension]) - (js/setTimeout #(react/image-get-size uri (image-set-size dimensions uri)) 20)) +(defn message-content-image [_ _] + (let [width (reagent/atom nil)] (fn [uri show-close?] - [react/view {:style {:width (first @dimensions) + [react/view {:style {:width @width :height image-max-dimension :overflow :hidden + :opacity (if @width 1 0) :border-radius 16 :margin-top 8} :accessibility-label :image-message} - [react/image {:style {:width (first @dimensions) - :height image-max-dimension} - :cache :force-cache - :resize-mode :cover - :source {:uri uri}}] + [react/fast-image {:style {:width @width + :height image-max-dimension} + :on-load (image-set-size width) + :source {:uri uri}}] [react/view {:border-width 1 :top 0 :left 0 - :width (first @dimensions) + :width @width :height image-max-dimension :border-radius 16 :position :absolute diff --git a/status-go-version.json b/status-go-version.json index 86c886b3eb..f5475a45fb 100644 --- a/status-go-version.json +++ b/status-go-version.json @@ -3,7 +3,7 @@ "_comment": "Instead use: scripts/update-status-go.sh ", "owner": "status-im", "repo": "status-go", - "version": "v0.93.5", - "commit-sha1": "54b35b051052a0eaa74e4d0b123aca3427a27734", - "src-sha256": "14d55yd4rdm9hdc5k888xlm5sjl3iclggzrgxsmjlvfvcg81lf85" + "version": "v0.94.0", + "commit-sha1": "5925b3b7cca127805c200a631e9b88d4ce5d31d5", + "src-sha256": "0wzlvap62m85rqn69vy7a3ny1kjcaxfhrzcjsx2p16xwjmi0i1rm" } diff --git a/yarn.lock b/yarn.lock index 6c4ddfbf08..b5975c53ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1987,7 +1987,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-64@^0.1.0: +base-64@0.1.0, base-64@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= @@ -3741,6 +3741,18 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -6586,6 +6598,14 @@ react-native-background-timer@^2.1.1: resolved "https://registry.yarnpkg.com/react-native-background-timer/-/react-native-background-timer-2.2.0.tgz#ff82d30899209b924983cc00e6ce174b8de5054a" integrity sha512-Y7N6diSFko/FCJPMmB0PoBlmY1kEcma7qDVwn8t7zi12GLqpe/Vwls97onkSD8/QL+BR33BygUHOrLTPwgeKfg== +react-native-blob-util@^0.13.18: + version "0.13.18" + resolved "https://registry.yarnpkg.com/react-native-blob-util/-/react-native-blob-util-0.13.18.tgz#7b924d55607bda380d6e9862b621ed1ac0c007ec" + integrity sha512-f9NyydQKMd24QiyW+LZmDg2rjCTi4GBff3UJzP1BDgEQ8aoHMs4MZmPs5erNH4E577qhEFp5v7HGzXVRQL8SnQ== + dependencies: + base-64 "0.1.0" + glob "^7.1.6" + react-native-camera-kit@^8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/react-native-camera-kit/-/react-native-camera-kit-8.0.4.tgz#8e350b37a205054ceb140a8babe1d032acdcdbd5" @@ -6623,7 +6643,7 @@ react-native-draggable-flatlist@^3.0.3: resolved "https://registry.yarnpkg.com/react-native-draggable-flatlist/-/react-native-draggable-flatlist-3.0.3.tgz#e85503585253be01ad251f78d5b341ac22f9d952" integrity sha512-bDro6aqQMvvTm/CuHre9dAjSBKosAfZRLDx3nmrjOz799kxcn0bq+uCB6yF6m+g1Xd/gVPl7E3Ss4uX+oPUlHg== -react-native-fast-image@8.5.11: +react-native-fast-image@^8.5.11: version "8.5.11" resolved "https://registry.yarnpkg.com/react-native-fast-image/-/react-native-fast-image-8.5.11.tgz#e3dc969d0e4e8df026646bf18194465aa55cbc2b" integrity sha512-cNW4bIJg3nvKaheG8vGMfqCt5LMWX9MS5+wMudgKIHbGO51spRr4sgnlhVgwHLcZ5aeNOVJ8CPRxDIWKRq/0QA== @@ -6665,9 +6685,9 @@ react-native-image-resizer@^1.2.3: resolved "https://registry.yarnpkg.com/react-native-image-resizer/-/react-native-image-resizer-1.2.3.tgz#21cb2b158ff950e55a0fc01c2cb61375bd5a03ba" integrity sha512-RDPNJglRmWDZ/7hvu+CbpsKYl6AQmseL8cWX4UkLAHxQWNc5ZdYhP/9avC5xCfyiwkRw+Zmkmv78HO0kt0ewhQ== -"react-native-image-viewing@git+https://github.com/Ferossgp/react-native-image-viewing.git#v0.2.1": +"react-native-image-viewing@git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status": version "0.2.1" - resolved "git+https://github.com/Ferossgp/react-native-image-viewing.git#8ef67cdce7b7c66065a939847e45db71347c678e" + resolved "git+https://github.com/status-im/react-native-image-viewing.git#94af89356f2e4e08f462370c77e4778d7626ce2f" "react-native-keychain@git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status": version "3.0.0-rc.3"