Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6b19c021f | ||
|
|
a258717e83 | ||
|
|
a8395e51a4 | ||
|
|
db501b5efd | ||
|
|
44732e9736 | ||
|
|
d12c05aab6 |
+4
-2
@@ -881,7 +881,9 @@ PODS:
|
||||
- React-Core
|
||||
- react-native-blur (4.3.3):
|
||||
- React-Core
|
||||
- react-native-cameraroll (5.10.0):
|
||||
- react-native-cameraroll (7.5.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2022.05.16.00)
|
||||
- React-Core
|
||||
- react-native-config (1.5.0):
|
||||
- react-native-config/App (= 1.5.0)
|
||||
@@ -1475,7 +1477,7 @@ SPEC CHECKSUMS:
|
||||
react-native-biometrics: 352e5a794bfffc46a0c86725ea7dc62deb085bdc
|
||||
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
|
||||
react-native-blur: c6d0a1dc2b4b519f7afe3b14d8151998632b6d18
|
||||
react-native-cameraroll: 4701ae7c3dbcd3f5e9e150ca17f250a276154b35
|
||||
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
|
||||
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
|
||||
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
|
||||
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native-async-storage/async-storage": "1.19.3",
|
||||
"@react-native-camera-roll/camera-roll": "git+https://github.com/status-im/react-native-camera-roll.git#refs/tags/v5.1.1.1",
|
||||
"@react-native-camera-roll/camera-roll": "7.5.2",
|
||||
"@react-native-clipboard/clipboard": "1.13.2",
|
||||
"@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6",
|
||||
"@react-native-community/blur": "git+https://github.com/status-im/react-native-blur.git#refs/tags/v4.3.3-status",
|
||||
@@ -48,7 +48,7 @@
|
||||
"react-native-keychain": "8.1.2",
|
||||
"react-native-linear-gradient": "^2.8.0",
|
||||
"react-native-lottie-splash-screen": "^1.0.1",
|
||||
"react-native-mail": "git+https://github.com/status-im/react-native-mail.git#refs/tags/v6.1.2-status",
|
||||
"react-native-mail": "6.1.1",
|
||||
"react-native-navigation": "7.38.3",
|
||||
"react-native-orientation-locker": "^1.5.0",
|
||||
"react-native-permissions": "3.8.0",
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.re8kHerusA/CameraRoll.ts 2024-04-16 15:17:12.942432000 +0200
|
||||
+++ ./node_modules/@react-native-camera-roll/camera-roll/src/CameraRoll.ts 2024-04-16 15:17:42.455250986 +0200
|
||||
@@ -239,6 +239,19 @@
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Returns total iOS image count
|
||||
+ */
|
||||
+ static getPhotosCountiOS(): Promise<number> {
|
||||
+ return RNCCameraRoll.getPhotosCountiOS('');
|
||||
+ }
|
||||
+ /**
|
||||
+ * Returns favorites and their count iOS
|
||||
+ */
|
||||
+ static getFavoritesiOS(): Promise<Album> {
|
||||
+ return RNCCameraRoll.getFavoritesiOS('');
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* Saves the photo or video to the camera roll or photo library, and returns the URI of the newly created asset.
|
||||
*
|
||||
* @deprecated `save(...)` is deprecated - use `saveAsset(...)` instead.
|
||||
@@ -0,0 +1,11 @@
|
||||
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.juxTO1BeCM/NativeCameraRollModule.ts 2024-04-16 15:21:28.379979000 +0200
|
||||
+++ ./node_modules/@react-native-camera-roll/camera-roll/src/NativeCameraRollModule.ts 2024-04-16 15:21:40.490391291 +0200
|
||||
@@ -81,6 +81,8 @@
|
||||
getPhotos(params: Object): Promise<PhotoIdentifiersPage>;
|
||||
getAlbums(params: Object): Promise<Album[]>;
|
||||
deletePhotos(photoUris: Array<string>): Promise<void>;
|
||||
+ getPhotosCountiOS(arg: string): Promise<number>;
|
||||
+ getFavoritesiOS(arg: string): Promise<Album>;
|
||||
getPhotoByInternalID(
|
||||
internalID: string,
|
||||
options: Object,
|
||||
@@ -0,0 +1,56 @@
|
||||
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.O0mkyjqnsy/RNCCameraRoll.mm 2024-04-16 15:26:23.070258000 +0200
|
||||
+++ ./node_modules/@react-native-camera-roll/camera-roll/ios/RNCCameraRoll.mm 2024-04-16 15:26:32.664996066 +0200
|
||||
@@ -955,6 +955,53 @@
|
||||
return [albumTitles copy];
|
||||
}
|
||||
|
||||
+RCT_EXPORT_METHOD(getPhotosCountiOS:(NSString *)blank
|
||||
+ resolve:(RCTPromiseResolveBlock)resolve
|
||||
+ reject:(RCTPromiseRejectBlock)reject)
|
||||
+{
|
||||
+ __block NSInteger intTotalCount=0;
|
||||
+ PHFetchOptions *allPhotosOptions = [PHFetchOptions new];
|
||||
+ allPhotosOptions.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d ",PHAssetMediaTypeImage];
|
||||
+ PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithOptions:allPhotosOptions];
|
||||
+ intTotalCount+=allPhotosResult.count;
|
||||
+
|
||||
+ resolve(@(intTotalCount));
|
||||
+}
|
||||
+
|
||||
+RCT_EXPORT_METHOD(getFavoritesiOS:(NSString *)blank
|
||||
+ resolve:(RCTPromiseResolveBlock)resolve
|
||||
+ reject:(RCTPromiseRejectBlock)reject)
|
||||
+{
|
||||
+ __block NSInteger intTotalCount=0;
|
||||
+ PHFetchOptions *fetchOptions = [PHFetchOptions new];
|
||||
+ NSString *format = @"(favorite == true)";
|
||||
+ fetchOptions.predicate = [NSPredicate predicateWithFormat:format];
|
||||
+ PHFetchResult<PHAsset *> *const assetsFetchResult = [PHAsset fetchAssetsWithOptions:fetchOptions];
|
||||
+ PHAsset *imageAsset = [assetsFetchResult firstObject];
|
||||
+ NSMutableArray * result = [NSMutableArray new];
|
||||
+
|
||||
+ for (PHAsset* asset in assetsFetchResult) {
|
||||
+ NSArray *resources = [PHAssetResource assetResourcesForAsset:asset ];
|
||||
+ if ([resources count] < 1) continue;
|
||||
+ NSString *orgFilename = ((PHAssetResource*)resources[0]).originalFilename;
|
||||
+ NSString *uit = ((PHAssetResource*)resources[0]).uniformTypeIdentifier;
|
||||
+ NSString *mimeType = (NSString *)CFBridgingRelease(UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(uit), kUTTagClassMIMEType));
|
||||
+ CFStringRef extension = UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(uit), kUTTagClassFilenameExtension);
|
||||
+ [result addObject:@{
|
||||
+ @"width": @([asset pixelWidth]),
|
||||
+ @"height": @([asset pixelHeight]),
|
||||
+ @"filename": orgFilename ?: @"",
|
||||
+ @"mimeType": mimeType ?: @"",
|
||||
+ @"id": [asset localIdentifier],
|
||||
+ @"creationDate": [asset creationDate],
|
||||
+ @"uri": [NSString stringWithFormat:@"ph://%@", [asset localIdentifier]],
|
||||
+ @"duration": @([asset duration])
|
||||
+ }];
|
||||
+ }
|
||||
+ [result addObject:@{@"count": @(assetsFetchResult.count)}];
|
||||
+ resolve(result);
|
||||
+}
|
||||
+
|
||||
static void checkPhotoLibraryConfig()
|
||||
{
|
||||
#if RCT_DEV
|
||||
@@ -0,0 +1,15 @@
|
||||
--- /tmp/tmp-status-mobile-6e854428f/tmp.PSruc8WtHx/build.gradle 2024-04-17 11:08:46.857319000 +0200
|
||||
+++ ./node_modules/react-native-mail/android/build.gradle 2024-04-17 11:09:22.935436792 +0200
|
||||
@@ -1,7 +1,11 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
+def safeExtGet(prop, fallback) {
|
||||
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
||||
+}
|
||||
+
|
||||
android {
|
||||
- compileSdkVersion project.hasProperty('compileSdkVersion') ? project.compileSdkVersion : 23
|
||||
+ compileSdkVersion safeExtGet('compileSdkVersion', 30)
|
||||
buildToolsVersion project.hasProperty('buildToolsVersion') ? project.buildToolsVersion : "23.0.1"
|
||||
|
||||
defaultConfig {
|
||||
@@ -28,9 +28,9 @@
|
||||
:theme :light/:dark
|
||||
only icon
|
||||
[button {:icon-only? true} :i/close-circle]"
|
||||
[{:keys [on-press on-long-press disabled? type background size icon-left icon-right icon-top
|
||||
customization-color accessibility-label icon-only? container-style inner-style
|
||||
pressed? on-press-in on-press-out allow-multiple-presses?]
|
||||
[{:keys [on-press on-long-press disabled? type background size icon-left icon-left-color icon-right
|
||||
icon-right-color icon-top icon-top-color customization-color accessibility-label icon-only?
|
||||
container-style inner-style pressed? on-press-in on-press-out allow-multiple-presses?]
|
||||
:or {type :primary
|
||||
size 40
|
||||
customization-color (if (= type :primary) :blue nil)}}
|
||||
@@ -94,7 +94,7 @@
|
||||
[quo.icons/icon icon-top
|
||||
{:container-style {:margin-bottom 2
|
||||
:opacity (when disabled? 0.3)}
|
||||
:color icon-color
|
||||
:color (or icon-top-color icon-color)
|
||||
:size icon-size}]])
|
||||
(when icon-left
|
||||
[rn/view
|
||||
@@ -103,7 +103,7 @@
|
||||
:icon-size icon-size
|
||||
:disabled? disabled?})}
|
||||
[quo.icons/icon icon-left
|
||||
{:color icon-color
|
||||
{:color (or icon-left-color icon-color)
|
||||
:size icon-size}]])
|
||||
[rn/view
|
||||
(cond
|
||||
@@ -130,5 +130,5 @@
|
||||
:icon-size icon-size
|
||||
:disabled? disabled?})}
|
||||
[quo.icons/icon icon-right
|
||||
{:color icon-color
|
||||
{:color (or icon-right-color icon-color)
|
||||
:size icon-size}]])]]]))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
[rn/view {:padding-top 4 :width 32}]))
|
||||
|
||||
(defn author
|
||||
[{:keys [response-to
|
||||
[{:keys [content
|
||||
compressed-key
|
||||
last-in-group?
|
||||
pinned-by
|
||||
@@ -61,7 +61,7 @@
|
||||
show-reactions?
|
||||
in-reaction-and-action-menu?
|
||||
show-user-info?]
|
||||
(when (or (and (seq response-to) quoted-message)
|
||||
(when (or (and (seq (:response-to content)) quoted-message)
|
||||
last-in-group?
|
||||
pinned-by
|
||||
show-user-info?
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
(ns status-im.contexts.wallet.collectible.view
|
||||
(:require
|
||||
[quo.core :as quo]
|
||||
[quo.foundations.colors :as colors]
|
||||
[quo.theme :as quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[react-native.svg :as svg]
|
||||
@@ -36,10 +37,13 @@
|
||||
:icon-left :i/send}
|
||||
(i18n/label :t/send)]
|
||||
[quo/button
|
||||
{:container-style style/opensea-button
|
||||
:type :outline
|
||||
:size 40
|
||||
:icon-left :i/opensea}
|
||||
{:container-style style/opensea-button
|
||||
:type :outline
|
||||
:size 40
|
||||
:icon-left :i/opensea
|
||||
:icon-left-color (colors/theme-colors colors/neutral-100 colors/neutral-40)
|
||||
:icon-right :i/external
|
||||
:icon-right-color (colors/theme-colors colors/neutral-50 colors/neutral-40)}
|
||||
(i18n/label :t/opensea)]])
|
||||
|
||||
(def tabs-data
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
||||
"owner": "status-im",
|
||||
"repo": "status-go",
|
||||
"version": "v0.179.4",
|
||||
"commit-sha1": "d246699c5e1c19b3f905a6c10c3526d2004de273",
|
||||
"src-sha256": "0gnnx70g8g8yhn29qj58if91fflgl0q2ry0wipzvvpdxd07hpxin"
|
||||
"version": "v0.179.5",
|
||||
"commit-sha1": "a39c01d7fe1ac60dc2a34bb16d550f09c64d3a3d",
|
||||
"src-sha256": "0g53nqkhpyzy9iwz9lfh2qq8s5wrfa69lic29ps0qb92h0ac428l"
|
||||
}
|
||||
|
||||
@@ -51,7 +51,8 @@ class BaseTestReport:
|
||||
'name': test.name,
|
||||
'geth_paths': geth_paths,
|
||||
'testruns': list(),
|
||||
'group_name': test.group_name
|
||||
'group_name': test.group_name,
|
||||
'secured': test.secured
|
||||
}
|
||||
for testrun in test.testruns:
|
||||
test_dict['testruns'].append(testrun.__dict__)
|
||||
@@ -75,7 +76,8 @@ class BaseTestReport:
|
||||
geth_paths=test_data['geth_paths'],
|
||||
testruns=testruns,
|
||||
testrail_case_id=test_data['testrail_case_id'],
|
||||
grop_name=test_data['group_name']))
|
||||
grop_name=test_data['group_name'],
|
||||
secured=test_data['secured']))
|
||||
return tests
|
||||
|
||||
def get_tests_by_status(self):
|
||||
@@ -106,7 +108,7 @@ class BaseTestReport:
|
||||
@staticmethod
|
||||
def get_jenkins_link_to_rerun_e2e(branch_name="develop", pr_id="", tr_case_ids=""):
|
||||
return 'https://ci.status.im/job/status-mobile/job/e2e/job/status-app-prs-rerun/parambuild/' \
|
||||
'?BRANCH_NAME=%s&PR_ID=%s&TR_CASE_IDS=%s' % (branch_name, pr_id, tr_case_ids)
|
||||
'?BRANCH_NAME=%s&PR_ID=%s&APK_URL=%s.apk&TR_CASE_IDS=%s' % (branch_name, pr_id, pr_id, tr_case_ids)
|
||||
|
||||
def get_sauce_final_screenshot_url(self, job_id):
|
||||
return 'https://media.giphy.com/media/9M5jK4GXmD5o1irGrF/giphy.gif'
|
||||
|
||||
@@ -76,13 +76,19 @@ class GithubHtmlReport(BaseTestReport):
|
||||
from tests import pytest_config_global
|
||||
pr_id = pytest_config_global['pr_number']
|
||||
|
||||
from github import Github
|
||||
from conftest import github_token
|
||||
branch_name = Github(github_token).get_user('status-im').get_repo('status-mobile').get_pull(int(pr_id)).head.ref
|
||||
|
||||
if not_executed_tests:
|
||||
html += "<li><a href=\"%s\">Rerun not executed tests</a></li>" % self.get_jenkins_link_to_rerun_e2e(
|
||||
branch_name=branch_name,
|
||||
pr_id=pr_id,
|
||||
tr_case_ids=','.join([str(i) for i in tests]))
|
||||
|
||||
if failed_tests:
|
||||
html += "<li><a href=\"%s\">Rerun failed tests</a></li>" % self.get_jenkins_link_to_rerun_e2e(
|
||||
branch_name=branch_name,
|
||||
pr_id=pr_id,
|
||||
tr_case_ids=','.join([str(test.testrail_case_id) for test in tests]))
|
||||
|
||||
@@ -141,7 +147,7 @@ class GithubHtmlReport(BaseTestReport):
|
||||
else:
|
||||
html += "\n\n```\n%s\n```\n\n" % error.replace("[[", "<b>[[").replace("]]", "]]</b>")
|
||||
html += "<br/><br/>"
|
||||
if last_testrun.jobs:
|
||||
if last_testrun.jobs and not test.secured:
|
||||
html += self.build_device_sessions_html(last_testrun)
|
||||
html += "</td></tr>"
|
||||
return html
|
||||
@@ -158,8 +164,8 @@ class GithubHtmlReport(BaseTestReport):
|
||||
self.get_sauce_job_url(job_id, test_run.first_commands[job_id])
|
||||
else:
|
||||
html += "<li><a href=\"%s\">Steps, video, logs</a></li>" % self.get_sauce_job_url(job_id)
|
||||
if test_run.error:
|
||||
html += "<li><a href=\"%s\">Failure screenshot</a></li>" % self.get_sauce_final_screenshot_url(job_id)
|
||||
# if test_run.error:
|
||||
# html += "<li><a href=\"%s\">Failure screenshot</a></li>" % self.get_sauce_final_screenshot_url(job_id)
|
||||
html += "</ul></p>"
|
||||
html += "</ul></p>"
|
||||
return html
|
||||
|
||||
@@ -2,12 +2,13 @@ from typing import Dict
|
||||
|
||||
|
||||
class SingleTestData(object):
|
||||
def __init__(self, name, testruns, testrail_case_id, geth_paths, grop_name):
|
||||
def __init__(self, name, testruns, testrail_case_id, geth_paths, grop_name, secured):
|
||||
self.testrail_case_id = testrail_case_id
|
||||
self.name = name
|
||||
self.testruns = testruns
|
||||
self.geth_paths = geth_paths
|
||||
self.group_name = grop_name
|
||||
self.secured = secured
|
||||
|
||||
class TestRunData(object):
|
||||
def __init__(self, steps, jobs, error, first_commands: Dict[str, int], xfail):
|
||||
@@ -27,11 +28,11 @@ class TestSuiteData(object):
|
||||
self.current_test = None
|
||||
self.tests = list()
|
||||
|
||||
def set_current_test(self, test_name, testrail_case_id):
|
||||
def set_current_test(self, test_name, testrail_case_id, secured):
|
||||
existing_test = next((test for test in self.tests if test.name == test_name), None)
|
||||
if existing_test:
|
||||
self.current_test = existing_test
|
||||
else:
|
||||
test = SingleTestData(test_name, list(), testrail_case_id, list(), None)
|
||||
test = SingleTestData(test_name, list(), testrail_case_id, list(), None, secured)
|
||||
self.tests.append(test)
|
||||
self.current_test = test
|
||||
|
||||
@@ -187,10 +187,14 @@ class TestrailReport(BaseTestReport):
|
||||
test_steps += step + "\n"
|
||||
for i, device in enumerate(last_testrun.jobs):
|
||||
if last_testrun.first_commands:
|
||||
devices += "# [Device %d](%s) \n" % (
|
||||
i + 1, self.get_sauce_job_url(job_id=device, first_command=last_testrun.first_commands[device]))
|
||||
first_command = last_testrun.first_commands[device]
|
||||
else:
|
||||
devices += "# [Device %d](%s) \n" % (i + 1, self.get_sauce_job_url(job_id=device))
|
||||
first_command = 0
|
||||
try:
|
||||
devices += "# [Device %d](%s) \n" % (i + 1, self.get_sauce_job_url(job_id=device,
|
||||
first_command=first_command))
|
||||
except KeyError:
|
||||
devices += "# Device %s: SauceLabs session was not found \n" % (i + 1)
|
||||
comment = str()
|
||||
if test.group_name:
|
||||
comment += "# Class: %s \n" % test.group_name
|
||||
|
||||
@@ -338,6 +338,8 @@ def pytest_runtest_makereport(item, call):
|
||||
error = error.replace(re.findall(failure_pattern, report.longreprtext)[0], '')
|
||||
return error
|
||||
|
||||
secured_test = "secured" in item.keywords._markers or "secured" in item.parent.keywords._markers
|
||||
|
||||
if report.when == 'setup':
|
||||
is_group = "xdist_group" in item.keywords._markers or "xdist_group" in item.parent.keywords._markers
|
||||
error_intro, error = 'Test setup failed:', ''
|
||||
@@ -345,7 +347,8 @@ def pytest_runtest_makereport(item, call):
|
||||
if (hasattr(report, 'wasxfail') and not case_ids_set) or (hasattr(report, 'wasxfail') and (
|
||||
str([mark.args[0] for mark in item.iter_markers(name='testrail_id')][0]) in str(case_ids_set))):
|
||||
if '[NOTRUN]' in report.wasxfail:
|
||||
test_suite_data.set_current_test(item.name, testrail_case_id=get_testrail_case_id(item))
|
||||
test_suite_data.set_current_test(test_name=item.name, testrail_case_id=get_testrail_case_id(item),
|
||||
secured=secured_test)
|
||||
test_suite_data.current_test.create_new_testrun()
|
||||
if is_group:
|
||||
test_suite_data.current_test.group_name = item.instance.__class__.__name__
|
||||
@@ -429,7 +432,8 @@ def pytest_runtest_setup(item):
|
||||
if run_testrail_ids:
|
||||
if str(testrail_id) not in list(run_testrail_ids.split(",")):
|
||||
pytest.skip("test requires testrail case id %s" % testrail_id)
|
||||
test_suite_data.set_current_test(item.name, testrail_case_id=get_testrail_case_id(item))
|
||||
secured = bool([mark for mark in item.iter_markers(name='secured')])
|
||||
test_suite_data.set_current_test(test_name=item.name, testrail_case_id=get_testrail_case_id(item), secured=secured)
|
||||
test_suite_data.current_test.create_new_testrun()
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ from views.sign_in_view import SignInView
|
||||
|
||||
@pytest.mark.xdist_group(name="new_four_2")
|
||||
@marks.new_ui_critical
|
||||
@marks.secured
|
||||
class TestWalletMultipleDevice(MultipleSharedDeviceTestCase):
|
||||
|
||||
def prepare_devices(self):
|
||||
|
||||
@@ -12,3 +12,4 @@ flaky = pytest.mark.flaky
|
||||
upgrade = pytest.mark.upgrade
|
||||
skip = pytest.mark.skip
|
||||
xfail = pytest.mark.xfail
|
||||
secured = pytest.mark.secured
|
||||
|
||||
@@ -2576,9 +2576,10 @@
|
||||
dependencies:
|
||||
merge-options "^3.0.4"
|
||||
|
||||
"@react-native-camera-roll/camera-roll@git+https://github.com/status-im/react-native-camera-roll.git#refs/tags/v5.1.1.1":
|
||||
version "5.10.0"
|
||||
resolved "git+https://github.com/status-im/react-native-camera-roll.git#174f8c6ad88e5bad9d9bd207f42173e567ec3138"
|
||||
"@react-native-camera-roll/camera-roll@7.5.2":
|
||||
version "7.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-7.5.2.tgz#2b248a835fbb8b53d04fc0c2957adba1474d9c99"
|
||||
integrity sha512-XiVIrW17EFXrFzqB48q6cQOaYeVnw0iC3tH+Jhl+MAHDYGLJp+ulzxCNNwngaMvnVAA5Q2mUMzRocUiJPy8q0g==
|
||||
|
||||
"@react-native-clipboard/clipboard@1.13.2":
|
||||
version "1.13.2"
|
||||
@@ -7933,9 +7934,10 @@ react-native-lottie-splash-screen@^1.0.1:
|
||||
lottie-ios "3.2.3"
|
||||
lottie-react-native "^5.1.3"
|
||||
|
||||
"react-native-mail@git+https://github.com/status-im/react-native-mail.git#refs/tags/v6.1.2-status":
|
||||
react-native-mail@6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "git+https://github.com/status-im/react-native-mail.git#6d28780dfe156dfed87d8a4ceba520cc7db019c5"
|
||||
resolved "https://registry.yarnpkg.com/react-native-mail/-/react-native-mail-6.1.1.tgz#f1b1f8034c84d2510a93e4a2a795f0db5a13595e"
|
||||
integrity sha512-pTs180wwyh7hN/iyTC9SfOX579U4YhDlHOLxi47IGvhPJENqO/QFdBq+wWKxyhNqdQuVSy+LoeIxLreWnIeYmg==
|
||||
|
||||
react-native-navigation@7.38.3:
|
||||
version "7.38.3"
|
||||
|
||||
Reference in New Issue
Block a user