From 9a1f8c53bc3033ec9462f6104de1b54d530a7d31 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Mon, 22 May 2023 13:43:00 +0530 Subject: [PATCH 01/15] recent setup --- .../org.eclipse.buildship.core.prefs | 11 + android/app/.project | 11 + ios/HEXA.xcodeproj/project.pbxproj | 352 +++++++++--------- ios/Podfile.lock | 48 +-- yarn.lock | 247 ++++++------ 5 files changed, 356 insertions(+), 313 deletions(-) diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs index e8895216fd..e479558406 100644 --- a/android/.settings/org.eclipse.buildship.core.prefs +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=false +show.console.view=false +show.executions.view=false diff --git a/android/app/.project b/android/app/.project index ac485d7c3e..d3316caded 100644 --- a/android/app/.project +++ b/android/app/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1679415300110 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/ios/HEXA.xcodeproj/project.pbxproj b/ios/HEXA.xcodeproj/project.pbxproj index 0d303662dd..02071fb226 100644 --- a/ios/HEXA.xcodeproj/project.pbxproj +++ b/ios/HEXA.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 1FD7ACE44B524CC0B1241553 /* Montserrat-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 95620CD1F8B44203A87BE6F7 /* Montserrat-SemiBold.ttf */; }; - 237CDD8180521336E8E128D3 /* libPods-HEXA Stage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 949B4AD1F401C3AF3EF614E5 /* libPods-HEXA Stage.a */; }; + 2D7A8800828E7A2257DFB8CA /* libPods-HEXA.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A2FD6EE79EEF5A240F4311AA /* libPods-HEXA.a */; }; 33C70E76106F4F649FE7BB6A /* Montserrat-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C4CEFC8792754D17B591C320 /* Montserrat-Light.ttf */; }; 4929D5DDD981494BB7FF83DD /* Montserrat-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 63D24441726E4404BC7B7B2E /* Montserrat-Regular.ttf */; }; 4D38330326009EDE00F82BDB /* iCloud.m in Sources */ = {isa = PBXBuildFile; fileRef = CCF1689125FB8FCF0038E126 /* iCloud.m */; }; @@ -22,7 +22,6 @@ 4D3833092600BD1400F82BDB /* HexaWalletBackup.json in Resources */ = {isa = PBXBuildFile; fileRef = CCF1689425FB8FE60038E126 /* HexaWalletBackup.json */; }; 4DA9C91C25CBC3DA00454AF7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 619CF234250654F600A8E6DF /* GoogleService-Info.plist */; }; 4DA9C91D25CBC3E100454AF7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 619CF22F250654D100A8E6DF /* GoogleService-Info.plist */; }; - 5F6B7C2ABEB9E6279BD99C49 /* libPods-HEXA.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E3B610F237A6F08F5F181419 /* libPods-HEXA.a */; }; 6111482F2506463F00ED433D /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6111482E2506463F00ED433D /* CloudKit.framework */; }; 611148352506478E00ED433D /* PdfGenerate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 611148312506478E00ED433D /* PdfGenerate.swift */; }; 6111483A250647BD00ED433D /* PdfPassword.m in Sources */ = {isa = PBXBuildFile; fileRef = 61114839250647BD00ED433D /* PdfPassword.m */; }; @@ -41,9 +40,10 @@ 6182F7AA250B2742005B6ECE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 6182F7AB250B2742005B6ECE /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 61B5223F25076DF5002F73B2 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 619CF232250654E300A8E6DF /* GoogleService-Info.plist */; }; + 6CEEE0DCFE6B6C5F413FFFA5 /* libPods-HEXA Dev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D1A0E64E80E8839E371695F2 /* libPods-HEXA Dev.a */; }; 6D02694291194CBD9EB24B7D /* Montserrat-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7EBDAB1C01FE4D629B1A7C39 /* Montserrat-MediumItalic.ttf */; }; - 7848CC2319C5FD7B5C873A0C /* libPods-HEXA Dev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F3C5E168310E57C2D9A6EDE /* libPods-HEXA Dev.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 9C83F78ACC5FDE7874BEF7D8 /* libPods-HEXA Stage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 566DF0413F43AC2DB600500F /* libPods-HEXA Stage.a */; }; 9DFB7500BB9F4E4AAAACF109 /* Montserrat-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5676B1BA3B1B4E3F9D29308A /* Montserrat-Medium.ttf */; }; AA11C3A22548270900B032D1 /* HEXA.Dev-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = AA11C3A12548270900B032D1 /* HEXA.Dev-Info.plist */; }; AA11C3A42548271A00B032D1 /* HEXA.Stage-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = AA11C3A32548271A00B032D1 /* HEXA.Stage-Info.plist */; }; @@ -77,6 +77,8 @@ /* Begin PBXFileReference section */ 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* HEXATests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HEXATests.m; sourceTree = ""; }; + 06E293FEDFD63B39F02E5A48 /* Pods-HEXA.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA.release.xcconfig"; path = "Target Support Files/Pods-HEXA/Pods-HEXA.release.xcconfig"; sourceTree = ""; }; + 1114B6120E24AD6E4391F0E3 /* Pods-HEXA.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA.debug.xcconfig"; path = "Target Support Files/Pods-HEXA/Pods-HEXA.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* Bitcoin Tribe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Bitcoin Tribe.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = HEXA/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = HEXA/AppDelegate.m; sourceTree = ""; }; @@ -86,20 +88,17 @@ 158EFB7281D64BD3B2F784B3 /* FiraSans-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-MediumItalic.ttf"; path = "../src/assets/fonts/FiraSans-MediumItalic.ttf"; sourceTree = ""; }; 196ECDEACD8644898512DACB /* Montserrat-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Bold.ttf"; path = "../src/assets/fonts/Montserrat-Bold.ttf"; sourceTree = ""; }; 1BDE786A62844DE89D7EE379 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; - 1E6DE7812A8C95DFAF99325A /* Pods-HEXA Stage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Stage.release.xcconfig"; path = "Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage.release.xcconfig"; sourceTree = ""; }; 227A2A160AEE42F4999170A1 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; 262894C9A21E4EE48406A1D0 /* FiraSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Bold.ttf"; path = "../src/assets/fonts/FiraSans-Bold.ttf"; sourceTree = ""; }; 2952F3993041452D93FA88B9 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; - 32FDB81AE47B6EEC0BD81FF5 /* Pods-HEXA Dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Dev.release.xcconfig"; path = "Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev.release.xcconfig"; sourceTree = ""; }; 39CE481CEF614843B40E1EC5 /* OpenSans-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-ExtraBold.ttf"; path = "../src/assets/fonts/OpenSans-ExtraBold.ttf"; sourceTree = ""; }; 466F94D18D9449A8957F3610 /* OpenSans-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Regular.ttf"; path = "../src/assets/fonts/OpenSans-Regular.ttf"; sourceTree = ""; }; 4D3784CB53EE4E7D914C42B4 /* FiraSans-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-SemiBold.ttf"; path = "../src/assets/fonts/FiraSans-SemiBold.ttf"; sourceTree = ""; }; - 4F3C5E168310E57C2D9A6EDE /* libPods-HEXA Dev.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA Dev.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 5395FCDF04064C3DBEEE4A64 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; }; 559C9AB9CDAC4F3FA05EC3FE /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; + 566DF0413F43AC2DB600500F /* libPods-HEXA Stage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA Stage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 5676B1BA3B1B4E3F9D29308A /* Montserrat-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Medium.ttf"; path = "../src/assets/fonts/Montserrat-Medium.ttf"; sourceTree = ""; }; 57F664D38343416FB1C55280 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; - 588886991029783B9689381D /* Pods-HEXA.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA.debug.xcconfig"; path = "Target Support Files/Pods-HEXA/Pods-HEXA.debug.xcconfig"; sourceTree = ""; }; 599B38ECC3EC4E4CB38D4C8A /* OpenSans-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Bold.ttf"; path = "../src/assets/fonts/OpenSans-Bold.ttf"; sourceTree = ""; }; 6111482E2506463F00ED433D /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; 611148312506478E00ED433D /* PdfGenerate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PdfGenerate.swift; sourceTree = ""; }; @@ -120,20 +119,20 @@ 7EBDAB1C01FE4D629B1A7C39 /* Montserrat-MediumItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-MediumItalic.ttf"; path = "../src/assets/fonts/Montserrat-MediumItalic.ttf"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = HEXA/LaunchScreen.storyboard; sourceTree = ""; }; 8A1B98A7327A4AD8A5860B74 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; - 8FA226D11F1F9EAEFC4C4205 /* Pods-HEXA Dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Dev.debug.xcconfig"; path = "Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev.debug.xcconfig"; sourceTree = ""; }; 917A2A003A01429481FD026C /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; - 949B4AD1F401C3AF3EF614E5 /* libPods-HEXA Stage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA Stage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 95620CD1F8B44203A87BE6F7 /* Montserrat-SemiBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-SemiBold.ttf"; path = "../src/assets/fonts/Montserrat-SemiBold.ttf"; sourceTree = ""; }; 96E40822F039459A97686C32 /* OpenSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Italic.ttf"; path = "../src/assets/fonts/OpenSans-Italic.ttf"; sourceTree = ""; }; 9963B02F45124E09B5D31DE8 /* FiraSans-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Light.ttf"; path = "../src/assets/fonts/FiraSans-Light.ttf"; sourceTree = ""; }; 9A4E6F5E9B5642DD8E860F82 /* FiraSans-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Medium.ttf"; path = "../src/assets/fonts/FiraSans-Medium.ttf"; sourceTree = ""; }; 9E29DABD5A154C1997E9AD44 /* OpenSans-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-BoldItalic.ttf"; path = "../src/assets/fonts/OpenSans-BoldItalic.ttf"; sourceTree = ""; }; + A2FD6EE79EEF5A240F4311AA /* libPods-HEXA.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A35E966FF3B347CFA2E0CBE5 /* FiraSans-BookItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-BookItalic.ttf"; path = "../src/assets/fonts/FiraSans-BookItalic.ttf"; sourceTree = ""; }; - A57D19373905C1C27FEF25F3 /* Pods-HEXA.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA.release.xcconfig"; path = "Target Support Files/Pods-HEXA/Pods-HEXA.release.xcconfig"; sourceTree = ""; }; AA11C3A12548270900B032D1 /* HEXA.Dev-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "HEXA.Dev-Info.plist"; path = "HEXA/HEXA.Dev-Info.plist"; sourceTree = ""; }; AA11C3A32548271A00B032D1 /* HEXA.Stage-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "HEXA.Stage-Info.plist"; path = "HEXA/HEXA.Stage-Info.plist"; sourceTree = ""; }; + AA19F01C683EF9AF27AAAB54 /* Pods-HEXA Dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Dev.release.xcconfig"; path = "Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev.release.xcconfig"; sourceTree = ""; }; AD12BB582E724B3887BFFE64 /* OpenSans-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Light.ttf"; path = "../src/assets/fonts/OpenSans-Light.ttf"; sourceTree = ""; }; C1B0A87F089E485685570E93 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; + C25F53C05A518DAF33415390 /* Pods-HEXA Dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Dev.debug.xcconfig"; path = "Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev.debug.xcconfig"; sourceTree = ""; }; C4CEFC8792754D17B591C320 /* Montserrat-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Light.ttf"; path = "../src/assets/fonts/Montserrat-Light.ttf"; sourceTree = ""; }; C88B0D378D49456C80224451 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; C8BC543B70204B8FB3B09520 /* Fontisto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Fontisto.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = ""; }; @@ -141,19 +140,20 @@ CCF1689125FB8FCF0038E126 /* iCloud.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iCloud.m; path = iCloud/iCloud.m; sourceTree = ""; }; CCF1689325FB8FD90038E126 /* iCloud.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iCloud.h; path = iCloud/iCloud.h; sourceTree = ""; }; CCF1689425FB8FE60038E126 /* HexaWalletBackup.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = HexaWalletBackup.json; path = iCloud/HexaWalletBackup.json; sourceTree = ""; }; + D1A0E64E80E8839E371695F2 /* libPods-HEXA Dev.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA Dev.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D242AB8F3F014E068BE8C13D /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; }; DAD1674B7394413A82B21AF7 /* OpenSans-SemiboldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-SemiboldItalic.ttf"; path = "../src/assets/fonts/OpenSans-SemiboldItalic.ttf"; sourceTree = ""; }; + DC3D4F111CB31B026196EC33 /* Pods-HEXA Stage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Stage.release.xcconfig"; path = "Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage.release.xcconfig"; sourceTree = ""; }; DF7107F6EA2D4846A469A116 /* OpenSans-Semibold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Semibold.ttf"; path = "../src/assets/fonts/OpenSans-Semibold.ttf"; sourceTree = ""; }; E2EDF28037624796A9996D82 /* FiraSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "FiraSans-Italic.ttf"; path = "../src/assets/fonts/FiraSans-Italic.ttf"; sourceTree = ""; }; - E3B610F237A6F08F5F181419 /* libPods-HEXA.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HEXA.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; EE6F36351DD345FAB2CDA5DE /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = ""; }; F49AA80A26A0284D0097D815 /* BackgroundViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BackgroundViewController.h; sourceTree = ""; }; F49AA80B26A0284D0097D815 /* BackgroundViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BackgroundViewController.m; sourceTree = ""; }; F49AA80C26A0284D0097D815 /* BackgroundViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BackgroundViewController.xib; sourceTree = ""; }; - F4CF9D631DFE58D6AF3E43FA /* Pods-HEXA Stage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Stage.debug.xcconfig"; path = "Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage.debug.xcconfig"; sourceTree = ""; }; F727B7636E8440F1BC2C78B2 /* OpenSans-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-LightItalic.ttf"; path = "../src/assets/fonts/OpenSans-LightItalic.ttf"; sourceTree = ""; }; + FC78098D43A277CC5A91A0C4 /* Pods-HEXA Stage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HEXA Stage.debug.xcconfig"; path = "Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage.debug.xcconfig"; sourceTree = ""; }; FD2C9FFB56CD431FBFFABD4B /* Montserrat-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Montserrat-Italic.ttf"; path = "../src/assets/fonts/Montserrat-Italic.ttf"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -163,7 +163,7 @@ buildActionMask = 2147483647; files = ( 6111482F2506463F00ED433D /* CloudKit.framework in Frameworks */, - 5F6B7C2ABEB9E6279BD99C49 /* libPods-HEXA.a in Frameworks */, + 2D7A8800828E7A2257DFB8CA /* libPods-HEXA.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -172,7 +172,7 @@ buildActionMask = 2147483647; files = ( 6182F77B250B23D7005B6ECE /* CloudKit.framework in Frameworks */, - 7848CC2319C5FD7B5C873A0C /* libPods-HEXA Dev.a in Frameworks */, + 6CEEE0DCFE6B6C5F413FFFA5 /* libPods-HEXA Dev.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -181,7 +181,7 @@ buildActionMask = 2147483647; files = ( 6182F7A7250B2742005B6ECE /* CloudKit.framework in Frameworks */, - 237CDD8180521336E8E128D3 /* libPods-HEXA Stage.a in Frameworks */, + 9C83F78ACC5FDE7874BEF7D8 /* libPods-HEXA Stage.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -234,9 +234,9 @@ 6111482E2506463F00ED433D /* CloudKit.framework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - E3B610F237A6F08F5F181419 /* libPods-HEXA.a */, - 4F3C5E168310E57C2D9A6EDE /* libPods-HEXA Dev.a */, - 949B4AD1F401C3AF3EF614E5 /* libPods-HEXA Stage.a */, + A2FD6EE79EEF5A240F4311AA /* libPods-HEXA.a */, + D1A0E64E80E8839E371695F2 /* libPods-HEXA Dev.a */, + 566DF0413F43AC2DB600500F /* libPods-HEXA Stage.a */, ); name = Frameworks; sourceTree = ""; @@ -281,12 +281,12 @@ 9FD0418BDBDF3D36477ED773 /* Pods */ = { isa = PBXGroup; children = ( - 588886991029783B9689381D /* Pods-HEXA.debug.xcconfig */, - A57D19373905C1C27FEF25F3 /* Pods-HEXA.release.xcconfig */, - 8FA226D11F1F9EAEFC4C4205 /* Pods-HEXA Dev.debug.xcconfig */, - 32FDB81AE47B6EEC0BD81FF5 /* Pods-HEXA Dev.release.xcconfig */, - F4CF9D631DFE58D6AF3E43FA /* Pods-HEXA Stage.debug.xcconfig */, - 1E6DE7812A8C95DFAF99325A /* Pods-HEXA Stage.release.xcconfig */, + 1114B6120E24AD6E4391F0E3 /* Pods-HEXA.debug.xcconfig */, + 06E293FEDFD63B39F02E5A48 /* Pods-HEXA.release.xcconfig */, + C25F53C05A518DAF33415390 /* Pods-HEXA Dev.debug.xcconfig */, + AA19F01C683EF9AF27AAAB54 /* Pods-HEXA Dev.release.xcconfig */, + FC78098D43A277CC5A91A0C4 /* Pods-HEXA Stage.debug.xcconfig */, + DC3D4F111CB31B026196EC33 /* Pods-HEXA Stage.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -356,15 +356,15 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "HEXA" */; buildPhases = ( - CCFCBF23F94C3E9AF1A229DE /* [CP] Check Pods Manifest.lock */, + E7D5BFD78E459CC449A51145 /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 410D4EA1BBB8949E8948E773 /* [CP] Embed Pods Frameworks */, - D534EDB760F2BA44647C0BED /* [CP] Copy Pods Resources */, - CC8DDC5C4C1D657D88D4DD98 /* [CP-User] [RNFB] Core Configuration */, - 0242AF6CAF61C219F097E08D /* [CP-User] [RNFB] Crashlytics Configuration */, + 2B3CC679D26027119267F479 /* [CP] Embed Pods Frameworks */, + 0954CF239197B8CCF9C0D9CA /* [CP] Copy Pods Resources */, + 281E3690B0051D593124C662 /* [CP-User] [RNFB] Core Configuration */, + E8CFD9B7547FD813748A4AF6 /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -379,16 +379,16 @@ isa = PBXNativeTarget; buildConfigurationList = 6182F793250B23D7005B6ECE /* Build configuration list for PBXNativeTarget "HEXA Dev" */; buildPhases = ( - B9C661EAA39E7F0FE1C61D02 /* [CP] Check Pods Manifest.lock */, + 8B73147CC30BE2D32F6CCB15 /* [CP] Check Pods Manifest.lock */, 4D3833062600A16700F82BDB /* Start Packager */, 6182F775250B23D7005B6ECE /* Sources */, 6182F77A250B23D7005B6ECE /* Frameworks */, 6182F77D250B23D7005B6ECE /* Resources */, 4D38330B2600BEC000F82BDB /* Bundle React Native code and images */, - 85921108C3CF0640ECF0EEE2 /* [CP] Embed Pods Frameworks */, - 5727C5DD53954966B4192485 /* [CP] Copy Pods Resources */, - 78080E0C85395FA1FBAB96D2 /* [CP-User] [RNFB] Core Configuration */, - EC86BA14AEBC52ADF59714A4 /* [CP-User] [RNFB] Crashlytics Configuration */, + 45D169498A3E7FFC38B05F31 /* [CP] Embed Pods Frameworks */, + B420B5E1F4A6AD78386AFB56 /* [CP] Copy Pods Resources */, + 7F0C21A9F7B1EF8531A53C6D /* [CP-User] [RNFB] Core Configuration */, + DCE51AF00F0E1D9BCC36A947 /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -403,17 +403,17 @@ isa = PBXNativeTarget; buildConfigurationList = 6182F7BF250B2742005B6ECE /* Build configuration list for PBXNativeTarget "HEXA Stage" */; buildPhases = ( - 2FB1D07517B1B6FD1C6FAF8C /* [CP] Check Pods Manifest.lock */, + AF54C44FBFD24A456C171A7E /* [CP] Check Pods Manifest.lock */, 4D260BB12613190A001DA4F9 /* Start Packager */, 6182F7A1250B2742005B6ECE /* Sources */, 6182F7A6250B2742005B6ECE /* Frameworks */, 6182F7A9250B2742005B6ECE /* Resources */, 4D38330D2600BF0500F82BDB /* Bundle React Native code and images */, E5A02DBA22BA388F5357F55F /* ShellScript */, - 2ABAA5C6C634778EC5F6FD01 /* [CP] Embed Pods Frameworks */, - 0F417F540ADC9AAA01A13F44 /* [CP] Copy Pods Resources */, - EBA5E7997536D468EC71D3FB /* [CP-User] [RNFB] Core Configuration */, - 321C0B1326D8F0E162604A4B /* [CP-User] [RNFB] Crashlytics Configuration */, + BEB283A0DEB9A0DC5154E7B7 /* [CP] Embed Pods Frameworks */, + C2E8CB8F583F9370A14B5DDA /* [CP] Copy Pods Resources */, + C5E0944F028426EA9297B9F4 /* [CP-User] [RNFB] Core Configuration */, + A64BF3E39993E5761794B0FC /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -544,27 +544,13 @@ shellPath = /bin/sh; shellScript = "cd $PROJECT_DIR/..\nexport NODE_BINARY=node\n./node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 0242AF6CAF61C219F097E08D /* [CP-User] [RNFB] Crashlytics Configuration */ = { + 0954CF239197B8CCF9C0D9CA /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", - "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; - 0F417F540ADC9AAA01A13F44 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-resources.sh", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", @@ -605,70 +591,47 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 2ABAA5C6C634778EC5F6FD01 /* [CP] Embed Pods Frameworks */ = { + 281E3690B0051D593124C662 /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", ); + name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; }; - 2FB1D07517B1B6FD1C6FAF8C /* [CP] Check Pods Manifest.lock */ = { + 2B3CC679D26027119267F479 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-HEXA Stage-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 321C0B1326D8F0E162604A4B /* [CP-User] [RNFB] Crashlytics Configuration */ = { + 45D169498A3E7FFC38B05F31 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", - "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; - 410D4EA1BBB8949E8948E773 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-frameworks.sh", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); name = "[CP] Embed Pods Frameworks"; @@ -677,7 +640,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 4D260BB12613190A001DA4F9 /* Start Packager */ = { @@ -752,88 +715,56 @@ shellPath = /bin/sh; shellScript = "# Type a script or drag a script file from your workspace to insert its path.\ncd $PROJECT_DIR/..\nexport NODE_BINARY=node\n./node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 5727C5DD53954966B4192485 /* [CP] Copy Pods Resources */ = { + 7F0C21A9F7B1EF8531A53C6D /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", ); + name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; }; - 78080E0C85395FA1FBAB96D2 /* [CP-User] [RNFB] Core Configuration */ = { + 8B73147CC30BE2D32F6CCB15 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-HEXA Dev-checkManifestLockResult.txt", ); - name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - 85921108C3CF0640ECF0EEE2 /* [CP] Embed Pods Frameworks */ = { + A64BF3E39993E5761794B0FC /* [CP-User] [RNFB] Crashlytics Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", + "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; }; - B9C661EAA39E7F0FE1C61D02 /* [CP] Check Pods Manifest.lock */ = { + AF54C44FBFD24A456C171A7E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -848,55 +779,88 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-HEXA Dev-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-HEXA Stage-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - CC8DDC5C4C1D657D88D4DD98 /* [CP-User] [RNFB] Core Configuration */ = { + B420B5E1F4A6AD78386AFB56 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + "${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-resources.sh", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", ); - name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Dev/Pods-HEXA Dev-resources.sh\"\n"; + showEnvVarsInLog = 0; }; - CCFCBF23F94C3E9AF1A229DE /* [CP] Check Pods Manifest.lock */ = { + BEB283A0DEB9A0DC5154E7B7 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-HEXA-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - D534EDB760F2BA44647C0BED /* [CP] Copy Pods Resources */ = { + C2E8CB8F583F9370A14B5DDA /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-resources.sh", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", @@ -937,9 +901,36 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA Stage/Pods-HEXA Stage-resources.sh\"\n"; showEnvVarsInLog = 0; }; + C5E0944F028426EA9297B9F4 /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Core Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + }; + DCE51AF00F0E1D9BCC36A947 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", + "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; E5A02DBA22BA388F5357F55F /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -975,20 +966,29 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HEXA/Pods-HEXA-resources.sh\"\n"; showEnvVarsInLog = 0; }; - EBA5E7997536D468EC71D3FB /* [CP-User] [RNFB] Core Configuration */ = { + E7D5BFD78E459CC449A51145 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-HEXA-checkManifestLockResult.txt", ); - name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - EC86BA14AEBC52ADF59714A4 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + E8CFD9B7547FD813748A4AF6 /* [CP-User] [RNFB] Crashlytics Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1052,7 +1052,7 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 588886991029783B9689381D /* Pods-HEXA.debug.xcconfig */; + baseConfigurationReference = 1114B6120E24AD6E4391F0E3 /* Pods-HEXA.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -1091,7 +1091,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A57D19373905C1C27FEF25F3 /* Pods-HEXA.release.xcconfig */; + baseConfigurationReference = 06E293FEDFD63B39F02E5A48 /* Pods-HEXA.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -1130,7 +1130,7 @@ }; 6182F794250B23D7005B6ECE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FA226D11F1F9EAEFC4C4205 /* Pods-HEXA Dev.debug.xcconfig */; + baseConfigurationReference = C25F53C05A518DAF33415390 /* Pods-HEXA Dev.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Development"; CLANG_ENABLE_MODULES = YES; @@ -1173,7 +1173,7 @@ }; 6182F795250B23D7005B6ECE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32FDB81AE47B6EEC0BD81FF5 /* Pods-HEXA Dev.release.xcconfig */; + baseConfigurationReference = AA19F01C683EF9AF27AAAB54 /* Pods-HEXA Dev.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Development"; CLANG_ENABLE_MODULES = YES; @@ -1209,7 +1209,7 @@ }; 6182F7C0250B2742005B6ECE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4CF9D631DFE58D6AF3E43FA /* Pods-HEXA Stage.debug.xcconfig */; + baseConfigurationReference = FC78098D43A277CC5A91A0C4 /* Pods-HEXA Stage.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Staging"; CLANG_ENABLE_MODULES = YES; @@ -1248,7 +1248,7 @@ }; 6182F7C1250B2742005B6ECE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1E6DE7812A8C95DFAF99325A /* Pods-HEXA Stage.release.xcconfig */; + baseConfigurationReference = DC3D4F111CB31B026196EC33 /* Pods-HEXA Stage.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Staging"; CLANG_ENABLE_MODULES = YES; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b7986c6031..f6f33f71ef 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -21,7 +21,7 @@ PODS: - EXPermissions (9.0.1): - UMCore - UMPermissionsInterface - - EXSecureStore (9.3.0): + - EXSecureStore (9.2.0): - UMCore - FBLazyVector (0.63.3) - FBReactNativeSpec (0.63.3): @@ -200,24 +200,24 @@ PODS: - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.8.0): + - GoogleUtilities/AppDelegateSwizzler (7.7.0): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.8.0): + - GoogleUtilities/Environment (7.7.0): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.8.0): + - GoogleUtilities/Logger (7.7.0): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.8.0): + - GoogleUtilities/MethodSwizzler (7.7.0): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.8.0): + - GoogleUtilities/Network (7.7.0): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.8.0)" - - GoogleUtilities/Reachability (7.8.0): + - "GoogleUtilities/NSData+zlib (7.7.0)" + - GoogleUtilities/Reachability (7.7.0): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.8.0): + - GoogleUtilities/UserDefaults (7.7.0): - GoogleUtilities/Logger - GTMSessionFetcher/Core (1.7.2) - jail-monkey (2.6.0): @@ -432,7 +432,7 @@ PODS: - React-Core - react-native-nfc-manager (3.14.0): - React-Core - - react-native-pager-view (6.0.0-rc.2): + - react-native-pager-view (6.0.0-rc.1): - React-Core - react-native-print (0.6.0): - React @@ -442,6 +442,9 @@ PODS: - React-Core - react-native-screen-corner-radius (0.1.1): - React + - react-native-tcp-socket (5.6.2): + - CocoaAsyncSocket + - React-Core - react-native-udp (4.1.5): - CocoaAsyncSocket - React-Core @@ -512,7 +515,7 @@ PODS: - React-Core (= 0.63.3) - React-cxxreact (= 0.63.3) - React-jsi (= 0.63.3) - - RealmJS (10.16.0): + - RealmJS (10.5.0): - GCDWebServer - React - rn-fetch-blob (0.12.0): @@ -567,16 +570,13 @@ PODS: - React - RNSecureStorage (1.0.82): - React - - RNShare (3.8.5): + - RNShare (8.2.1): - React-Core - RNSVG (12.3.0): - React-Core - RNVectorIcons (7.1.0): - React - SocketRocket (0.6.0) - - TcpSockets (4.0.0): - - CocoaAsyncSocket - - React - UMAppLoader (1.2.0) - UMBarCodeScannerInterface (5.2.1) - UMCameraInterface (5.2.1) @@ -665,6 +665,7 @@ DEPENDENCIES: - react-native-randombytes (from `../node_modules/react-native-randombytes`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-screen-corner-radius (from `../node_modules/react-native-screen-corner-radius`) + - react-native-tcp-socket (from `../node_modules/react-native-tcp-socket`) - react-native-udp (from `../node_modules/react-native-udp`) - react-native-video (from `../node_modules/react-native-video`) - react-native-view-shot (from `../node_modules/react-native-view-shot`) @@ -702,7 +703,6 @@ DEPENDENCIES: - RNShare (from `../node_modules/react-native-share`) - RNSVG (from `../node_modules/react-native-svg`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - - TcpSockets (from `../node_modules/react-native-tcp`) - UMAppLoader (from `../node_modules/unimodules-app-loader/ios`) - UMBarCodeScannerInterface (from `../node_modules/unimodules-barcode-scanner-interface/ios`) - UMCameraInterface (from `../node_modules/unimodules-camera-interface/ios`) @@ -837,6 +837,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-safe-area-context" react-native-screen-corner-radius: :path: "../node_modules/react-native-screen-corner-radius" + react-native-tcp-socket: + :path: "../node_modules/react-native-tcp-socket" react-native-udp: :path: "../node_modules/react-native-udp" react-native-video: @@ -911,8 +913,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-svg" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" - TcpSockets: - :path: "../node_modules/react-native-tcp" UMAppLoader: :path: "../node_modules/unimodules-app-loader/ios" UMBarCodeScannerInterface: @@ -952,7 +952,7 @@ SPEC CHECKSUMS: EXFileSystem: 76875135b61708b9afa7e6a89b72a60ba0fdfa20 EXImageLoader: 02ca02c9cd5cc8a97b423207a73a791e0a86bea5 EXPermissions: 80ac3acbdb145930079810fe5b08c022b3428aa8 - EXSecureStore: 1b571851e6068b30b8ec097be848a04603c03bae + EXSecureStore: 579cbccd9cd093e6f4336aba073b059008bd78e0 FBLazyVector: 878b59e31113e289e275165efbe4b54fa614d43d FBReactNativeSpec: 7da9338acfb98d4ef9e5536805a0704572d33c2f Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d @@ -978,7 +978,7 @@ SPEC CHECKSUMS: glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 GoogleAppMeasurement: 4c19f031220c72464d460c9daa1fb5d1acce958e GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f - GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7 + GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba jail-monkey: 07b83767601a373db876e939b8dbf3f5eb15f073 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 @@ -1010,11 +1010,12 @@ SPEC CHECKSUMS: react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a react-native-netinfo: 30fb89fa913c342be82a887b56e96be6d71201dd react-native-nfc-manager: 449c2c400a4f0ab3b8c084a713f41762a26b3307 - react-native-pager-view: c9171e3b9f212fe6a4a529818745d8cd21fe82a0 + react-native-pager-view: 06738ffe86f82c53d59a2387f889679fe210acf1 react-native-print: d2d083f2305faacfba12d3896ec6ca72303da2b2 react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846 react-native-safe-area-context: 9e40fb181dac02619414ba1294d6c2a807056ab9 react-native-screen-corner-radius: 57b6dea3c024035bff8377618df6e5056e6c6f27 + react-native-tcp-socket: c1b7297619616b4c9caae6889bcb0aba78086989 react-native-udp: 8864b1211857e9d8224ae5cbaf8580970fb99de1 react-native-video: eee541262ada11bc7ffe8ec5508e6a877937c462 react-native-view-shot: 4475fde003fe8a210053d1f98fb9e06c1d834e1c @@ -1028,7 +1029,7 @@ SPEC CHECKSUMS: React-RCTText: 65a6de06a7389098ce24340d1d3556015c38f746 React-RCTVibration: 8e9fb25724a0805107fc1acc9075e26f814df454 ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3 - RealmJS: 8a3478957315c29cdc0b3f958f2e370d22330b2d + RealmJS: 3442dc29909254448c28f500b8b49f976a3b22a8 rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNCAsyncStorage: 005c0e2f09575360f142d0d1f1f15e4ec575b1af RNCClipboard: cc054ad1e8a33d2a74cd13e565588b4ca928d8fd @@ -1049,11 +1050,10 @@ SPEC CHECKSUMS: RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d RNScreenshotPrevent: ec7d8304fd054b8cc17206ec8c7925400ed676b5 RNSecureStorage: 8b2b07278d80c48b3a881c56e604ab147372f243 - RNShare: 7e22ba3bf66294ff7c122a1f2da8a8ec642091a0 + RNShare: eaee3dd5a06dad397c7d3b14762007035c5de405 RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8 RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 - TcpSockets: a8eb6b5867fe643e6cfed5db2e4de62f4d1e8fd0 UMAppLoader: 61049c8d55590b74e9ae1d5429bf68d96b4a2528 UMBarCodeScannerInterface: e5e4c87797d3d01214e25cd1618866caf5d4f17f UMCameraInterface: 415ac060034edecacdbbaa739c223e3f276e0056 diff --git a/yarn.lock b/yarn.lock index b4ec880063..55cd7d244e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1754,11 +1754,6 @@ hoist-non-react-statics "^3.3.2" react-native-safe-area-view "^0.14.9" -"@realm.io/common@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@realm.io/common/-/common-0.1.1.tgz#2950846cbedd14bdfdc1175d7c3119c3469547b0" - integrity sha512-sXc7Ndhh39O9bm7/e0eeAx8keDBO83yoG7WfH04o6PqwVaIwm4T1uT0bhTO6OizP6ojhugZlVSu9HzgUVRE1Ag== - "@redux-saga/core@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.1.3.tgz#3085097b57a4ea8db5528d58673f20ce0950f6a4" @@ -2670,11 +2665,6 @@ async@^2.4.0: dependencies: lodash "^4.17.14" -async@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2911,11 +2901,6 @@ base-x@^4.0.0: resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== -base64-js@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" - integrity sha1-EQHpVE9KdrG8OybUUsqW16NeeXg= - base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3297,10 +3282,10 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -bson@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/bson/-/bson-4.4.1.tgz#682c3cb8b90b222414ce14ef8398154ba2cc21bc" - integrity sha512-Uu4OCZa0jouQJCKOk1EmmyqtdWAP5HVLru4lQxTwzJzxT+sJ13lVpEZU/MATDxtHiekWMAL84oQY3Xn1LpJVSg== +bson@^4.4.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.2.tgz#320f4ad0eaf5312dd9b45dc369cc48945e2a5f2e" + integrity sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ== dependencies: buffer "^5.6.0" @@ -3337,6 +3322,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-reverse@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== + buffer-xor@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" @@ -3358,7 +3348,7 @@ buffer@^4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.0, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3548,15 +3538,6 @@ cjs-module-lexer@^0.6.0: secp256k1 "4.0.3" typescript "4.7.4" -clang-format@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.7.0.tgz#c06c63ec1ae2a2590d8eac2562daeb877ca30d44" - integrity sha512-BNuK+rXAK/Fk0rOQ1DW6bpSQUAZz6tpbZHTQn6m4PsgEkE1SNr6AQ/hhFK/b4KJrl4zjcl68molP+rEaKSZRAQ== - dependencies: - async "^3.2.3" - glob "^7.0.0" - resolve "^1.1.6" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3836,6 +3817,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +constants@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/constants/-/constants-0.0.2.tgz#f973bcf3b69b6493b3b3645723124fbabce25094" + integrity sha512-K8aYHRLm9Q/b/Im6CQESZdkH7fblazlncmqPujXt9DP5bxKfi7vVNjRKXx70SnnwCkW6R86o3AcSnkXL7XLq4g== + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -3917,7 +3903,15 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.3, create-hmac@^1.1.4, safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-fetch@^3.0.4: +create-react-class@*: + version "15.7.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-fetch@^3.0.4, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -4129,12 +4123,12 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: - mimic-response "^3.1.0" + mimic-response "^2.0.0" deep-equal@^1.0.0: version "1.1.1" @@ -4237,6 +4231,16 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +deprecated-react-native-listview@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/deprecated-react-native-listview/-/deprecated-react-native-listview-0.0.6.tgz#f9169dd703398a7792e5bcb8b851e741a8cb6980" + integrity sha512-QRuN0Dcv3Muu1oT8MhZgyfqm77bTAegVwqSRJKVwVVsm0xJE0TBfqdD45VXYLIS+yMXPJoeXdSqSdVQSjwlOpQ== + dependencies: + create-react-class "*" + fbjs "*" + invariant "*" + react-clone-referenced-element "*" + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -4250,10 +4254,10 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-libc@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-newline@^3.0.0: version "3.1.0" @@ -4403,6 +4407,10 @@ electron-to-chromium@^1.4.84: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974" integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w== +"electrum-client@https://github.com/bithyve/rn-electrum-client": + version "2.0.0" + resolved "https://github.com/bithyve/rn-electrum-client#76c0ea35e1a50c47f3a7f818d529ebd100161496" + elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -4831,7 +4839,12 @@ eventemitter3@^3.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -events@^1.0.2, events@^1.1.1: +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= @@ -4936,7 +4949,7 @@ expo-constants@~9.1.1: fbjs "1.0.0" uuid "^3.3.2" -expo-contacts@^8.6.0: +expo-contacts@8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/expo-contacts/-/expo-contacts-8.6.0.tgz#ec3e4379f02ac95212015ead4de8b44a01d61200" integrity sha512-KbJb6R90bU2Cnp7o9zJ+SExtBbFJz9Jt4SmWsRPZh20WRX7XJOLBDT5x9FKX5CMw6nvHSVhpbCg51vxX9Td1hQ== @@ -4960,10 +4973,10 @@ expo-permissions@~9.0.1: resolved "https://registry.yarnpkg.com/expo-permissions/-/expo-permissions-9.0.1.tgz#dc10b58654bbe39bbbed5827369942b01b08055e" integrity sha512-CosJgy8XQRN/OFG2JTQDcFxz3XTGi27coCMym/hVXWtQfk0z6PwdRG5IXHfLGuSckwIcgmirrwm2+Zc0X3MmNg== -expo-secure-store@^9.2.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/expo-secure-store/-/expo-secure-store-9.3.0.tgz#b716d5d115cc50a34037d1afef84fe4b8ea0745c" - integrity sha512-dNhKcoUUn+1kmEfFVxSU7h+YsqODqlExZQJcQgxgeiuCeeDvJWkE10t3jjrO6aNfrdM5i/X2l3oh401EDslWsQ== +expo-secure-store@9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/expo-secure-store/-/expo-secure-store-9.2.0.tgz#5c7072058f9d0dd80dd9f17732a8512a2a30c52c" + integrity sha512-CtoMeuw/BzmLZMxmw30YiAZY51bpuOsBQpt3CrvLqpT2Q4/M18Tc1H4qXzHER3GPfZeG2nEJQkEgHsHXrIhPXg== extend-shallow@^1.1.2: version "1.1.4" @@ -5101,6 +5114,19 @@ fbjs-scripts@^1.1.0: semver "^5.1.0" through2 "^2.0.0" +fbjs@*: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + fbjs@1.0.0, fbjs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" @@ -5535,7 +5561,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5950,18 +5976,13 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -invariant@^2.2.4: +invariant@*, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -ip-regex@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" - integrity sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0= - ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -7298,7 +7319,7 @@ logkitty@^0.7.1: dayjs "^1.8.15" yargs "^15.1.0" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7814,10 +7835,10 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== min-document@^2.19.0: version "2.19.0" @@ -8004,23 +8025,23 @@ nocache@^2.1.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== -node-abi@^3.3.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.15.0.tgz#cd9ac8c58328129b49998cc6fa16aa5506152716" - integrity sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA== +node-abi@^2.21.0: + version "2.30.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== dependencies: - semver "^7.3.5" - -node-addon-api@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.2.0.tgz#117cbb5a959dff0992e1c586ae0393573e4d2a87" - integrity sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q== + semver "^5.4.1" node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-addon-api@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -8689,22 +8710,22 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -prebuild-install@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.0.tgz#991b6ac16c81591ba40a6d5de93fb33673ac1370" - integrity sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA== +prebuild-install@^6.1.1: + version "6.1.4" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" + integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ== dependencies: - detect-libc "^2.0.0" + detect-libc "^1.0.3" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" mkdirp-classic "^0.5.3" napi-build-utils "^1.0.1" - node-abi "^3.3.0" + node-abi "^2.21.0" npmlog "^4.0.1" pump "^3.0.0" rc "^1.2.7" - simple-get "^4.0.0" + simple-get "^3.0.3" tar-fs "^2.0.0" tunnel-agent "^0.6.0" @@ -8753,7 +8774,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10, process@^0.11.9, process@~0.11.0: +process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -8951,6 +8972,11 @@ react-addons-shallow-compare@15.6.2: fbjs "^0.8.4" object-assign "^4.1.0" +react-clone-referenced-element@*: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.1.1.tgz#8d76727dc0459788e461741e804a512d20757381" + integrity sha512-LZBPvQV8W0B5dFzXFu+D3Tpil8YHS8tO00iFsfXcTLdtpuH7XyvaHqHcoz4hd4uNPQCZ30fceh+s7mLznzMXvg== + react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" @@ -9175,10 +9201,10 @@ react-native-os@^1.2.6: resolved "https://registry.yarnpkg.com/react-native-os/-/react-native-os-1.2.6.tgz#1bb16d78ccad1143972183a04f443cf1af9fbefa" integrity sha512-OlT+xQAcvkcnf7imgXiu+myMkqDt4xw2bP5SlVo19hEn5XHBkPMLX7dk3sSGxxncH/ToMDsf1KLyrPabNVtadA== -react-native-pager-view@^6.0.0-rc.1: - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-6.0.0-rc.2.tgz#8a10b5fb57fbdab82a7684238ea349a2410304b2" - integrity sha512-osWnYxGaTaKbH9+wxGULt8Q9c5h3AVo+njTEqf2jmxqaVpWzlaIsxU1MWF7Tbk1BN8RiC11szMtOQ0Jlx8Hcag== +react-native-pager-view@6.0.0-rc.1: + version "6.0.0-rc.1" + resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-6.0.0-rc.1.tgz#d36cf5cbbc5d3305099e5bb57bcf7e5680d01f4f" + integrity sha512-6YF/d2Q5LAgwv33ab7sEgyt06sl5a66C+aO59/eCfXOyRs1FKbBDK76x1TJJpRnuBax2YKDekd23UgSSQ6pUmw== react-native-paper@^4.8.1: version "4.12.0" @@ -9302,10 +9328,10 @@ react-native-shadow-2@^6.0.3: dependencies: polished "^4.1.4" -react-native-share@^3.7.0: - version "3.8.5" - resolved "https://registry.yarnpkg.com/react-native-share/-/react-native-share-3.8.5.tgz#e74ed39401b9fceef700435cef7c28bc37c7e267" - integrity sha512-GjMI2NwUvi8zC7JHWk6NIcg/gFJmK/+cAQ8VStvfy4/kOiXYE5YnpPjvKs/K1Aun0HqYi2vjvZruL5ouDEWxmg== +react-native-share@^8.0.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/react-native-share/-/react-native-share-8.2.1.tgz#f9933852de3ddd0f474ab63448e06c22cfecc9d4" + integrity sha512-dUIgrcdg4nOHrbKN1w+hs17RZ+51NeXd62CEezPAd4tEyj2Ki1qeAxWnJe8ZPRwvB5/6ml7YUR/2PJApxGHCAQ== react-native-size-matters@^0.3.1: version "0.3.1" @@ -9350,17 +9376,13 @@ react-native-tab-view@^2.15.2: resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-2.16.0.tgz#cae72c7084394bd328fac5fefb86cd966df37a86" integrity sha512-ac2DmT7+l13wzIFqtbfXn4wwfgtPoKzWjjZyrK1t+T8sdemuUvD4zIt+UImg03fu3s3VD8Wh/fBrIdcqQyZJWg== -react-native-tcp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/react-native-tcp/-/react-native-tcp-4.0.0.tgz#142f519798cc41cc3bb39ad45e2970a8643ef461" - integrity sha512-68lSq2qns6P33yH7vYuiU5rV7xEiNuA2GYIStFlMvF/uEKDHL53MDgQLC2alKEU9JAHfmB8uUmcu3QQSGkaoig== +react-native-tcp-socket@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/react-native-tcp-socket/-/react-native-tcp-socket-5.6.2.tgz#8f09c13f73f6592a34cee5f441acc7a0aefbdf0a" + integrity sha512-doijFOAJd9p8KmduhfbZaPfqRVd3CZuTLAimJx0yxIqFWy/EDPGHeFVrOEOqRZ3lWBVDcssiCIQJhV0baKu5Pg== dependencies: - base64-js "0.0.8" - buffer "^5.0.0" - events "^1.0.2" - ip-regex "^1.0.3" - process "^0.11.9" - util "^0.10.3" + buffer "^5.4.3" + eventemitter3 "^4.0.7" react-native-udp@^4.1.5: version "4.1.5" @@ -9370,7 +9392,7 @@ react-native-udp@^4.1.5: buffer "^5.6.0" events "^3.1.0" -react-native-unimodules@^0.10.1: +react-native-unimodules@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.10.1.tgz#05a5ef248e88589528e7ef925137a345dde96ca4" integrity sha512-U/GexLJWwDOXhsvSSz197gPVRoNVK4tY1cjvZC+748Q4mvc9v4ztB7niKaoaEbNdTjB/pE2NYlZW4013d1wQNw== @@ -9599,7 +9621,7 @@ readable-stream@~1.0.26, readable-stream@~1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -realm-network-transport@^0.7.2: +realm-network-transport@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/realm-network-transport/-/realm-network-transport-0.7.2.tgz#382b965bf97a4132e0f8770f864d4a20d976be35" integrity sha512-/5/YtZ5+ZIHIPgVFL6fRyx0/FRhmMaaF7L/h+iU8VKWGzesiBusSaeInosrM6v8MQvsW3W9ApBCeUwNW6m+8sg== @@ -9607,27 +9629,26 @@ realm-network-transport@^0.7.2: abort-controller "^3.0.0" node-fetch "^2.6.0" -realm@^10.4.2: - version "10.16.0" - resolved "https://registry.yarnpkg.com/realm/-/realm-10.16.0.tgz#1d33d6513e7a84e699a25095421440d83161b73c" - integrity sha512-6kS7JKs0xrFmimmiPxOhi/QGyXQg91K3I+eXIVNQYdmrcmAY5na6S1f1/MVAwd+NzA0ALl3mgGr5uCPvpiWasA== +realm@10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/realm/-/realm-10.5.0.tgz#1fec9f83a893ad6a2e6133c818619ef4c44ceb13" + integrity sha512-UBGzl0qJK+H84QnVGXR4hi60suCPN5syK2dAFLLOso/WiDo+RJQHLlZlr58J1kTup2oU7TP1gTpgWtWiywpZCQ== dependencies: - "@realm.io/common" "^0.1.1" bindings "^1.5.0" - bson "4.4.1" - clang-format "^1.6.0" + bson "^4.4.0" command-line-args "^5.1.1" deepmerge "2.1.0" + deprecated-react-native-listview "0.0.6" fs-extra "^4.0.3" https-proxy-agent "^2.2.4" ini "^1.3.7" - node-addon-api "4.2.0" + node-addon-api "^3.1.0" node-fetch "^2.6.1" node-machine-id "^1.1.10" - prebuild-install "^7.0.1" + prebuild-install "^6.1.1" progress "^2.0.3" prop-types "^15.6.2" - realm-network-transport "^0.7.2" + realm-network-transport "^0.7.0" request "^2.88.0" stream-counter "^1.0.0" sync-request "^3.0.1" @@ -9855,7 +9876,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.4.0, resolve@^1.5.0: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.4.0, resolve@^1.5.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -10061,7 +10082,7 @@ secrets.js-grempe@^2.0.0: resolved "https://registry.yarnpkg.com/secrets.js-grempe/-/secrets.js-grempe-2.0.0.tgz#65b32bf6bfe4f40e8ed0e44dc74f469e293a4ab8" integrity sha512-4xkOIaDAg998dTFXZUJTOoVbdLHfB818SMeLJ69ABccgGEKokxsoRFupAFfAImloUSKv4QUGNMgKVbKMf6z0Ug== -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10251,12 +10272,12 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== +simple-get@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== dependencies: - decompress-response "^6.0.0" + decompress-response "^4.2.0" once "^1.3.1" simple-concat "^1.0.0" @@ -11384,7 +11405,7 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@^0.10.3, util@^0.10.4: +util@^0.10.4: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== From 87b1cb5e30a205ff5a29c80767914debd1e436c0 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Mon, 22 May 2023 13:46:47 +0530 Subject: [PATCH 02/15] added friendsAndFamily section automation --- .../friendsAndFamily.yaml | 43 +++++++++++++++++++ Tribe-Maestro-Automation/signup.yaml | 17 ++++++++ 2 files changed, 60 insertions(+) create mode 100644 Tribe-Maestro-Automation/friendsAndFamily.yaml create mode 100644 Tribe-Maestro-Automation/signup.yaml diff --git a/Tribe-Maestro-Automation/friendsAndFamily.yaml b/Tribe-Maestro-Automation/friendsAndFamily.yaml new file mode 100644 index 0000000000..d09f986cdf --- /dev/null +++ b/Tribe-Maestro-Automation/friendsAndFamily.yaml @@ -0,0 +1,43 @@ +# friendsAndFamily.yaml + +# Add friends and Family to your list to be able to send SATS easily + +appId: io.hexawallet.hexa2 +--- +- launchApp +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +- tapOn: "Proceed" +- tapOn: Freiend, tab, 2 of 4 +- tapOn: + Add New +- tapOn: Anna Haro +- tapOn: Confirm & Proceed + +- tapOn: + point: "45%,72%" +- tapOn: + point: 50%,76% + +- tapOn: Close +- tapOn:  + +- tapOn: + Add New +- tapOn: David Taylor +- tapOn: Confirm & Proceed + +- tapOn: + point: "45%,85%" + +- tapOn: Enter amount in sats +- tapOn: "1" +- tapOn: "0" +- tapOn: "0" +- tapOn: "0" +- tapOn: + text: "0" + index: 0 + +- tapOn: Use SATSCARD™ to gift sats +- tapOn: Create Gifts diff --git a/Tribe-Maestro-Automation/signup.yaml b/Tribe-Maestro-Automation/signup.yaml new file mode 100644 index 0000000000..be62a3551e --- /dev/null +++ b/Tribe-Maestro-Automation/signup.yaml @@ -0,0 +1,17 @@ +# signup.yaml + +# First time login + +appId: io.hexawallet.hexa2 +--- +- launchApp +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +- tapOn: "Proceed" +# - tapOn: Using Backup phrase  +# - tapOn: Start with a new Tribe Wallet wallet  +# - tapOn: Start with a new Tribe Wallet wallet  +# - inputText: "TestWallet" +# - tapOn: Proceed \ No newline at end of file From 8ec814c5cc9ac2e1e4bf3cd87266ffab46ff0986 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Tue, 23 May 2023 08:22:26 +0530 Subject: [PATCH 03/15] changed folder name to flows --- {Tribe-Maestro-Automation => flows}/friendsAndFamily.yaml | 0 {Tribe-Maestro-Automation => flows}/signup.yaml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {Tribe-Maestro-Automation => flows}/friendsAndFamily.yaml (100%) rename {Tribe-Maestro-Automation => flows}/signup.yaml (100%) diff --git a/Tribe-Maestro-Automation/friendsAndFamily.yaml b/flows/friendsAndFamily.yaml similarity index 100% rename from Tribe-Maestro-Automation/friendsAndFamily.yaml rename to flows/friendsAndFamily.yaml diff --git a/Tribe-Maestro-Automation/signup.yaml b/flows/signup.yaml similarity index 100% rename from Tribe-Maestro-Automation/signup.yaml rename to flows/signup.yaml From 723d8bc7638e4df6a361c9c974e22979b556de15 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Thu, 25 May 2023 17:36:43 +0530 Subject: [PATCH 04/15] minor changes --- flows/friendsAndFamily.yaml | 12 +- flows/login.yaml | 14 + flows/signup.yaml | 19 +- .../FriendsAndFamilyScreen.tsx | 2 +- src/pages/ReLogin.tsx | 329 ++++++++++-------- 5 files changed, 201 insertions(+), 175 deletions(-) create mode 100644 flows/login.yaml diff --git a/flows/friendsAndFamily.yaml b/flows/friendsAndFamily.yaml index d09f986cdf..634aa6b6cf 100644 --- a/flows/friendsAndFamily.yaml +++ b/flows/friendsAndFamily.yaml @@ -2,16 +2,12 @@ # Add friends and Family to your list to be able to send SATS easily -appId: io.hexawallet.hexa2 +appId: io.hexawallet.hexa.development --- -- launchApp -- tapOn: "1" -- tapOn: "2" -- tapOn: "3" -- tapOn: "4" -- tapOn: "Proceed" +- runFlow: "login.yaml" - tapOn: Freiend, tab, 2 of 4 -- tapOn: + Add New +- tapOn: + id: "+AddNewContact" - tapOn: Anna Haro - tapOn: Confirm & Proceed diff --git a/flows/login.yaml b/flows/login.yaml new file mode 100644 index 0000000000..3683f0a98e --- /dev/null +++ b/flows/login.yaml @@ -0,0 +1,14 @@ +#login.yaml + +#Login Screen Flow + +appId: io.hexawallet.hexa.development +--- +- launchApp +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +# - tapOn: +# id: "Proceed" +- tapOn: "Proceed" \ No newline at end of file diff --git a/flows/signup.yaml b/flows/signup.yaml index be62a3551e..3a33ef64ab 100644 --- a/flows/signup.yaml +++ b/flows/signup.yaml @@ -2,16 +2,11 @@ # First time login -appId: io.hexawallet.hexa2 +appId: io.hexawallet.hexa.development --- -- launchApp -- tapOn: "1" -- tapOn: "2" -- tapOn: "3" -- tapOn: "4" -- tapOn: "Proceed" -# - tapOn: Using Backup phrase  -# - tapOn: Start with a new Tribe Wallet wallet  -# - tapOn: Start with a new Tribe Wallet wallet  -# - inputText: "TestWallet" -# - tapOn: Proceed \ No newline at end of file +- runFlow: "login.yaml" +- tapOn: Using Backup phrase  +- tapOn: Start with a new Tribe Wallet wallet  +- tapOn: Start with a new Tribe Wallet wallet  +- inputText: "TestWallet" +- tapOn: Proceed \ No newline at end of file diff --git a/src/pages/FriendsAndFamily/FriendsAndFamilyScreen.tsx b/src/pages/FriendsAndFamily/FriendsAndFamilyScreen.tsx index fa9b85e1eb..dbed61ea9d 100644 --- a/src/pages/FriendsAndFamily/FriendsAndFamilyScreen.tsx +++ b/src/pages/FriendsAndFamily/FriendsAndFamilyScreen.tsx @@ -566,7 +566,7 @@ class FriendsAndFamilyScreen extends React.Component< > {this.strings[ 'f&f' ]} - { this.setState( { isLoadContacts: true, diff --git a/src/pages/ReLogin.tsx b/src/pages/ReLogin.tsx index 7475d95101..bd680fea16 100755 --- a/src/pages/ReLogin.tsx +++ b/src/pages/ReLogin.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect } from "react"; import { StyleSheet, Text, @@ -6,83 +6,89 @@ import { SafeAreaView, TouchableOpacity, StatusBar, -} from 'react-native' -import Ionicons from 'react-native-vector-icons/Ionicons' -import Colors from '../common/Colors' -import Fonts from '../common/Fonts' +} from "react-native"; +import Ionicons from "react-native-vector-icons/Ionicons"; +import Colors from "../common/Colors"; +import Fonts from "../common/Fonts"; import { widthPercentageToDP as wp, heightPercentageToDP as hp, -} from 'react-native-responsive-screen' -import { RFValue } from 'react-native-responsive-fontsize' -import FontAwesome from 'react-native-vector-icons/FontAwesome' -import { useDispatch, useSelector } from 'react-redux' -import { credsAuth, switchReLogin } from '../store/actions/setupAndAuth' +} from "react-native-responsive-screen"; +import { RFValue } from "react-native-responsive-fontsize"; +import FontAwesome from "react-native-vector-icons/FontAwesome"; +import { useDispatch, useSelector } from "react-redux"; +import { credsAuth, switchReLogin } from "../store/actions/setupAndAuth"; -export default function Login( props ) { - const [ passcode, setPasscode ] = useState( '' ) - const [ passcodeFlag, setPasscodeFlag ] = useState( true ) - const [ checkAuth, setCheckAuth ] = useState( false ) +export default function Login(props) { + const [passcode, setPasscode] = useState(""); + const [passcodeFlag, setPasscodeFlag] = useState(true); + const [checkAuth, setCheckAuth] = useState(false); - function onPressNumber( text ) { - let tmpPasscode = passcode - if ( passcode.length < 4 ) { - if ( text != 'x' ) { - tmpPasscode += text - setPasscode( tmpPasscode ) + function onPressNumber(text) { + let tmpPasscode = passcode; + if (passcode.length < 4) { + if (text != "x") { + tmpPasscode += text; + setPasscode(tmpPasscode); } } - if ( passcode && text == 'x' ) { - setPasscode( passcode.slice( 0, -1 ) ) - setCheckAuth( false ) + if (passcode && text == "x") { + setPasscode(passcode.slice(0, -1)); + setCheckAuth(false); } } - const dispatch = useDispatch() + const dispatch = useDispatch(); const { reLogin, authenticationFailed } = useSelector( - state => state.setupAndAuth, - ) + (state) => state.setupAndAuth + ); - if ( reLogin ) { - if ( props.navigation.state.params.isPasscodeCheck ){ - if( props.navigation.state.params.onPasscodeVerify ) props.navigation.state.params.onPasscodeVerify( ) - props.navigation.goBack() } - else props.navigation.pop( 2 ) - dispatch( switchReLogin( false, true ) ) + if (reLogin) { + if (props.navigation.state.params.isPasscodeCheck) { + if (props.navigation.state.params.onPasscodeVerify) + props.navigation.state.params.onPasscodeVerify(); + props.navigation.goBack(); + } else props.navigation.pop(2); + dispatch(switchReLogin(false, true)); } - useEffect( () => { - if ( authenticationFailed ) { - setCheckAuth( true ) - setPasscode( '' ) + useEffect(() => { + if (authenticationFailed) { + setCheckAuth(true); + setPasscode(""); } else { - setCheckAuth( false ) + setCheckAuth(false); } - }, [ authenticationFailed ] ) + }, [authenticationFailed]); const hardwareBackHandler = () => { - return true - } // returning true disables the hardware back button + return true; + }; // returning true disables the hardware back button return ( - + - - + + Welcome back - Please enter your{' '} + Please enter your{" "} passcode - + = 1 ? ( ) : passcode.length == 0 && passcodeFlag == true ? ( - {'|'} + {"|"} ) : ( - '' + "" )} @@ -135,19 +141,21 @@ export default function Login( props ) { ]} > {passcode.length >= 2 ? ( - + ) : passcode.length == 1 ? ( - {'|'} + {"|"} ) : ( - '' + "" )} @@ -166,19 +174,21 @@ export default function Login( props ) { ]} > {passcode.length >= 3 ? ( - + ) : passcode.length == 2 ? ( - {'|'} + {"|"} ) : ( - '' + "" )} @@ -197,27 +207,31 @@ export default function Login( props ) { ]} > {passcode.length >= 4 ? ( - + ) : passcode.length == 3 ? ( - {'|'} + {"|"} ) : ( - '' + "" )} {checkAuth ? ( - + Incorrect passcode, try again! @@ -230,8 +244,8 @@ export default function Login( props ) { { - setCheckAuth( false ) - dispatch( credsAuth( passcode, true ) ) + setCheckAuth(false); + dispatch(credsAuth(passcode, true)); }} style={{ ...styles.proceedButtonView, @@ -245,39 +259,41 @@ export default function Login( props ) { ) : null} - + onPressNumber( '1' )} + onPress={() => onPressNumber("1")} style={styles.keyPadElementTouchable} > onPressNumber( '1' )} + onPress={() => onPressNumber("1")} > 1 onPressNumber( '2' )} + onPress={() => onPressNumber("2")} style={styles.keyPadElementTouchable} > onPressNumber( '2' )} + onPress={() => onPressNumber("2")} > 2 onPressNumber( '3' )} + onPress={() => onPressNumber("3")} style={styles.keyPadElementTouchable} > onPressNumber( '3' )} + onPress={() => onPressNumber("3")} > 3 @@ -285,34 +301,34 @@ export default function Login( props ) { onPressNumber( '4' )} + onPress={() => onPressNumber("4")} style={styles.keyPadElementTouchable} > onPressNumber( '4' )} + onPress={() => onPressNumber("4")} > 4 onPressNumber( '5' )} + onPress={() => onPressNumber("5")} style={styles.keyPadElementTouchable} > onPressNumber( '5' )} + onPress={() => onPressNumber("5")} > 5 onPressNumber( '6' )} + onPress={() => onPressNumber("6")} style={styles.keyPadElementTouchable} > onPressNumber( '6' )} + onPress={() => onPressNumber("6")} > 6 @@ -320,34 +336,34 @@ export default function Login( props ) { onPressNumber( '7' )} + onPress={() => onPressNumber("7")} style={styles.keyPadElementTouchable} > onPressNumber( '7' )} + onPress={() => onPressNumber("7")} > 7 onPressNumber( '8' )} + onPress={() => onPressNumber("8")} style={styles.keyPadElementTouchable} > onPressNumber( '8' )} + onPress={() => onPressNumber("8")} > 8 onPressNumber( '9' )} + onPress={() => onPressNumber("9")} style={styles.keyPadElementTouchable} > onPressNumber( '9' )} + onPress={() => onPressNumber("9")} > 9 @@ -355,28 +371,31 @@ export default function Login( props ) { - + onPressNumber( '0' )} + onPress={() => onPressNumber("0")} style={styles.keyPadElementTouchable} > onPressNumber( '0' )} + onPress={() => onPressNumber("0")} > 0 onPressNumber( 'x' )} + onPress={() => onPressNumber("x")} style={styles.keyPadElementTouchable} > onPressNumber( 'x' )} + onPress={() => onPressNumber("x")} > @@ -385,118 +404,120 @@ export default function Login( props ) { - ) + ); } -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ textBoxStyles: { borderWidth: 0.5, - height: wp( '13%' ), - width: wp( '13%' ), + height: wp("13%"), + width: wp("13%"), borderRadius: 7, marginLeft: 20, borderColor: Colors.borderColor, - alignItems: 'center', - justifyContent: 'center', + alignItems: "center", + justifyContent: "center", backgroundColor: Colors.white, }, textBoxActive: { - height: wp( '13%' ), - width: wp( '13%' ), + height: wp("13%"), + width: wp("13%"), borderRadius: 7, marginLeft: 20, elevation: 10, shadowColor: Colors.borderColor, shadowOpacity: 1, shadowOffset: { - width: 0, height: 3 + width: 0, + height: 3, }, - alignItems: 'center', - justifyContent: 'center', + alignItems: "center", + justifyContent: "center", backgroundColor: Colors.white, }, textStyles: { color: Colors.black, - fontSize: RFValue( 13 ), - textAlign: 'center', + fontSize: RFValue(13), + textAlign: "center", lineHeight: 18, }, textFocused: { color: Colors.black, - fontSize: RFValue( 13 ), - textAlign: 'center', + fontSize: RFValue(13), + textAlign: "center", lineHeight: 18, }, keyPadRow: { - flexDirection: 'row', - height: hp( '8%' ), + flexDirection: "row", + height: hp("8%"), }, keyPadElementTouchable: { flex: 1, - height: hp( '8%' ), - fontSize: RFValue( 18 ), - justifyContent: 'center', - alignItems: 'center', + height: hp("8%"), + fontSize: RFValue(18), + justifyContent: "center", + alignItems: "center", }, keyPadElementText: { color: Colors.blue, - fontSize: RFValue( 25 ), + fontSize: RFValue(25), fontFamily: Fonts.Regular, - fontStyle: 'normal', + fontStyle: "normal", }, proceedButtonView: { marginLeft: 20, - marginTop: hp( '6%' ), - height: wp( '13%' ), - width: wp( '30%' ), - justifyContent: 'center', - alignItems: 'center', + marginTop: hp("6%"), + height: wp("13%"), + width: wp("30%"), + justifyContent: "center", + alignItems: "center", borderRadius: 8, elevation: 10, shadowColor: Colors.shadowBlue, shadowOpacity: 1, shadowOffset: { - width: 15, height: 15 + width: 15, + height: 15, }, }, proceedButtonText: { color: Colors.white, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Medium, }, errorText: { fontFamily: Fonts.MediumItalic, color: Colors.red, - fontSize: RFValue( 11 ), - fontStyle: 'italic', + fontSize: RFValue(11), + fontStyle: "italic", }, boldItalicText: { fontFamily: Fonts.MediumItalic, - fontWeight: 'bold', - fontStyle: 'italic', + fontWeight: "bold", + fontStyle: "italic", }, headerTitleText: { color: Colors.blue, - fontSize: RFValue( 25 ), + fontSize: RFValue(25), marginLeft: 20, - marginTop: hp( '10%' ), + marginTop: hp("10%"), fontFamily: Fonts.Regular, }, headerInfoText: { color: Colors.textColorGrey, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), marginLeft: 20, fontFamily: Fonts.Regular, }, passcodeTextInputText: { color: Colors.blue, - fontWeight: 'bold', - fontSize: RFValue( 13 ), + fontWeight: "bold", + fontSize: RFValue(13), }, passcodeTextInputView: { - flexDirection: 'row', - marginTop: hp( '4.5%' ), - marginBottom: hp( '1.5%' ), - width: 'auto' + flexDirection: "row", + marginTop: hp("4.5%"), + marginBottom: hp("1.5%"), + width: "auto", }, -} ) +}); From 70eb1559f8f5702cbcaa0071e3495e959265855f Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Thu, 25 May 2023 18:27:16 +0530 Subject: [PATCH 05/15] Lightning Node flow added --- flows/home.yaml | 36 +++ flows/login.yaml | 5 +- .../home/BuyBitcoinHomeBottomSheet.tsx | 264 ++++++++++-------- src/pages/Home/AddNewAccountCard.tsx | 2 +- src/pages/Home/HomeBuyCard.tsx | 2 +- src/pages/Login.tsx | 2 +- .../EnterNodeConfigScreen.tsx | 8 +- .../lightningAccount/ScanNodeConfigScreen.tsx | 2 +- 8 files changed, 196 insertions(+), 125 deletions(-) create mode 100644 flows/home.yaml diff --git a/flows/home.yaml b/flows/home.yaml new file mode 100644 index 0000000000..d788adaab1 --- /dev/null +++ b/flows/home.yaml @@ -0,0 +1,36 @@ +# home.yaml + +# HoDashboardme Screen + +appId: io.hexawallet.hexa.development +--- +- runFlow: "login.yaml" + +# Add Lightning Wallet + +- tapOn: + id: "AddLightningWalletButton" +- tapOn: + id: "EnterManuallyButton" +- tapOn: + id: "HostInput" +- inputText: "Sample Host" +- tapOn: + id: "PortInput" +- inputText: "Sample Port" +- tapOn: + id: "MacaroonHexInput" +- inputText: "Sample Macaroon Hex" +- tapOn: + id: "NodeConnectButton" +- tapOn:  +- tapOn:  + +# Buy BTC + +- tapOn: + id: "BuyBTCButton" +- tapOn: + id: "BuybitCoinButton" +- tapOn: "Close" +- tapOn: "Close" \ No newline at end of file diff --git a/flows/login.yaml b/flows/login.yaml index 3683f0a98e..e1476d61d8 100644 --- a/flows/login.yaml +++ b/flows/login.yaml @@ -9,6 +9,5 @@ appId: io.hexawallet.hexa.development - tapOn: "2" - tapOn: "3" - tapOn: "4" -# - tapOn: -# id: "Proceed" -- tapOn: "Proceed" \ No newline at end of file +- tapOn: + id: "ProceedButton" \ No newline at end of file diff --git a/src/components/home/BuyBitcoinHomeBottomSheet.tsx b/src/components/home/BuyBitcoinHomeBottomSheet.tsx index 9d1a9df22a..9a95e1f6c3 100644 --- a/src/components/home/BuyBitcoinHomeBottomSheet.tsx +++ b/src/components/home/BuyBitcoinHomeBottomSheet.tsx @@ -1,61 +1,74 @@ -import React, { useContext } from 'react' -import { View, ImageSourcePropType, FlatList, Image, Platform, TouchableOpacity, Text, Linking, StyleSheet } from 'react-native' -import { ListItem } from 'react-native-elements' -import * as RNLocalize from 'react-native-localize' -import ListStyles from '../../common/Styles/ListStyles' -import ImageStyles from '../../common/Styles/ImageStyles' +import React, { useContext } from "react"; +import { + View, + ImageSourcePropType, + FlatList, + Image, + Platform, + TouchableOpacity, + Text, + Linking, + StyleSheet, +} from "react-native"; +import { ListItem } from "react-native-elements"; +import * as RNLocalize from "react-native-localize"; +import ListStyles from "../../common/Styles/ListStyles"; +import ImageStyles from "../../common/Styles/ImageStyles"; import { widthPercentageToDP as wp, heightPercentageToDP as hp, -} from 'react-native-responsive-screen' -import Colors from '../../common/Colors' -import { RFValue } from 'react-native-responsive-fontsize' -import Fonts from '../../common/Fonts' -import { LocalizationContext } from '../../common/content/LocContext' -import BottomInfoBox from '../BottomInfoBox' -import Ramp from '../../assets/images/svgs/ramp.svg' -import Wyre from '../../assets/images/svgs/wyre.svg' -import LinearGradient from 'react-native-linear-gradient' +} from "react-native-responsive-screen"; +import Colors from "../../common/Colors"; +import { RFValue } from "react-native-responsive-fontsize"; +import Fonts from "../../common/Fonts"; +import { LocalizationContext } from "../../common/content/LocContext"; +import BottomInfoBox from "../BottomInfoBox"; +import Ramp from "../../assets/images/svgs/ramp.svg"; +import Wyre from "../../assets/images/svgs/wyre.svg"; +import LinearGradient from "react-native-linear-gradient"; export type Props = { - onMenuItemSelected: ( menuItem: BuyBitcoinBottomSheetMenuItem ) => void; - onPress: () => void -} + onMenuItemSelected: (menuItem: BuyBitcoinBottomSheetMenuItem) => void; + onPress: () => void; +}; export enum BuyMenuItemKind { - FAST_BITCOINS = 'FAST_BITCOINS', - SWAN = 'SWAN', - WYRE = 'WYRE', - RAMP = 'RAMP' + FAST_BITCOINS = "FAST_BITCOINS", + SWAN = "SWAN", + WYRE = "WYRE", + RAMP = "RAMP", } export type BuyBitcoinBottomSheetMenuItem = { title: string; subtitle: string; - kind: BuyMenuItemKind | ''; + kind: BuyMenuItemKind | ""; // imageSource: ImageSourcePropType; disabled: boolean; hasButton: boolean; link: string; - getImage: any -} + getImage: any; +}; +const listItemKeyExtractor = (item: BuyBitcoinBottomSheetMenuItem) => + item.title; -const listItemKeyExtractor = ( item: BuyBitcoinBottomSheetMenuItem ) => item.title - -const BuyBitcoinHomeBottomSheet: React.FC = ( { onMenuItemSelected, onPress }: Props ) => { - const { translations } = useContext( LocalizationContext ) - const strings = translations[ 'home' ] +const BuyBitcoinHomeBottomSheet: React.FC = ({ + onMenuItemSelected, + onPress, +}: Props) => { + const { translations } = useContext(LocalizationContext); + const strings = translations["home"]; const menuItems: BuyBitcoinBottomSheetMenuItem[] = [ { - title: Platform.OS == 'ios' ? strings.ramp : strings.ramp, + title: Platform.OS == "ios" ? strings.ramp : strings.ramp, subtitle: strings.rampSub, kind: BuyMenuItemKind.RAMP, getImage: () => , disabled: false, hasButton: true, - link: 'https://support.ramp.network/en/', + link: "https://support.ramp.network/en/", }, // { // title: strings.wyre, @@ -105,69 +118,89 @@ const BuyBitcoinHomeBottomSheet: React.FC = ( { onMenuItemSelected, onPre // imageSource: require( '../../assets/images/icons/icon_fastbitcoins_light_blue.png' ), // disabled: false // } - ] + ]; - const renderItem = ( { item: menuItem }: { item: BuyBitcoinBottomSheetMenuItem } ) => { + const renderItem = ({ + item: menuItem, + }: { + item: BuyBitcoinBottomSheetMenuItem; + }) => { return ( - + {menuItem.getImage()} - {menuItem.title} - {menuItem.subtitle} + + {menuItem.title} + + + {menuItem.subtitle} + - { onMenuItemSelected( menuItem ) }} - disabled={menuItem.disabled}> - { + onMenuItemSelected(menuItem); + }} + disabled={menuItem.disabled} + > + - - {strings.buyBitCoin} - + {strings.buyBitCoin} - { - onPress() - Linking.openURL( menuItem.link ) - } - } + onPress(); + Linking.openURL(menuItem.link); + }} > - + {strings.fees} - - {` ${strings.learnMore} `} - + {` ${strings.learnMore} `} - ) - } + ); + }; return ( - + = ( { onMenuItemSelected, onPre renderItem={renderItem} scrollEnabled={false} /> - {RNLocalize.getCountry() == 'US' && - - } + {RNLocalize.getCountry() == "US" && ( + + )} - + ); +}; - ) -} - -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ CardText: { - fontSize: RFValue( 12 ), + fontSize: RFValue(12), }, - linkText:{ - paddingBottom: wp( 1 ), - color: Colors.textColorGrey + linkText: { + paddingBottom: wp(1), + color: Colors.textColorGrey, }, imageStyle: { - width: wp( 4 ), height: wp( 4 ), - tintColor: Colors.theam_icon_color + width: wp(4), + height: wp(4), + tintColor: Colors.theam_icon_color, }, learnMore: { fontFamily: Fonts.MediumItalic, - color: Colors.blue + color: Colors.blue, }, linkContainer: { - flexDirection: 'row', - alignItems: 'center', - paddingTop: hp( 1 ), - paddingBottom: hp( 2 ), - paddingHorizontal: wp( 6 ) + flexDirection: "row", + alignItems: "center", + paddingTop: hp(1), + paddingBottom: hp(2), + paddingHorizontal: wp(6), }, buyButton: { - margin: hp( 0.5 ), color: Colors.white, fontSize: RFValue( 12 ), fontFamily: Fonts.Regular + margin: hp(0.5), + color: Colors.white, + fontSize: RFValue(12), + fontFamily: Fonts.Regular, }, buyContainer: { backgroundColor: Colors.blue, - borderRadius: wp( '2%' ), - paddingHorizontal: wp( 2 ), - paddingVertical: hp( 0.5 ) + borderRadius: wp("2%"), + paddingHorizontal: wp(2), + paddingVertical: hp(0.5), }, mainCardContainer: { - marginTop: hp( 1.5 ), + marginTop: hp(1.5), paddingHorizontal: 0, }, rootContainer: { backgroundColor: Colors.white, - marginBottom: hp( 1.5 ), - width: wp( 90 ), - borderRadius: wp( 2 ), - alignSelf: 'center', + marginBottom: hp(1.5), + width: wp(90), + borderRadius: wp(2), + alignSelf: "center", shadowColor: Colors.shadowColor, shadowOpacity: 1, shadowOffset: { - width: 10, height: 10 + width: 10, + height: 10, }, - elevation: 6 + elevation: 6, }, modelHeight: { - height: 'auto', - marginBottom: hp( 3 ) + height: "auto", + marginBottom: hp(3), }, cardMiddle: { // paddingLeft: 0, - marginRight: wp( -2 ), - marginLeft: wp( -1 ), - } -} ) + marginRight: wp(-2), + marginLeft: wp(-1), + }, +}); -export default BuyBitcoinHomeBottomSheet +export default BuyBitcoinHomeBottomSheet; diff --git a/src/pages/Home/AddNewAccountCard.tsx b/src/pages/Home/AddNewAccountCard.tsx index 2d8ca3ea77..d63103df72 100644 --- a/src/pages/Home/AddNewAccountCard.tsx +++ b/src/pages/Home/AddNewAccountCard.tsx @@ -23,7 +23,7 @@ const AddNewAccountCard: React.FC = ( { const lnAccount = useActiveAccountShells().filter( account => account.primarySubAccount.type === AccountType.LIGHTNING_ACCOUNT ) return ( - diff --git a/src/pages/Home/HomeBuyCard.tsx b/src/pages/Home/HomeBuyCard.tsx index 6d7cd31eac..cd8d68b1db 100644 --- a/src/pages/Home/HomeBuyCard.tsx +++ b/src/pages/Home/HomeBuyCard.tsx @@ -155,7 +155,7 @@ const HomeBuyCard = ( { // }, // elevation: 15 }}> - ) } - { diff --git a/src/pages/lightningAccount/EnterNodeConfigScreen.tsx b/src/pages/lightningAccount/EnterNodeConfigScreen.tsx index b3e66a3310..390a95b35f 100644 --- a/src/pages/lightningAccount/EnterNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/EnterNodeConfigScreen.tsx @@ -906,7 +906,7 @@ render() { {( implementation === 'lnd' || implementation === 'c-lightning-REST' ) && ( <> - @@ -923,7 +923,7 @@ render() { /> - - @@ -1013,7 +1013,7 @@ render() { )} */} - { this.saveNodeConfiguration() diff --git a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx index 9d6c9a1a0a..44b132dd7a 100644 --- a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx @@ -150,7 +150,7 @@ export default function ScanNodeConfig( { navigation } ) { marginBottom: 16 }} /> - { From fa70a30565d41dda46adee5d9d02dc152a487a87 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Fri, 16 Jun 2023 20:43:24 +0530 Subject: [PATCH 06/15] =?UTF-8?q?f&f=20screen=20test=20script=20done=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flows/f&f.yaml | 60 + flows/friendsAndFamily.yaml | 47 +- src/components/CardWithRadioBtn.tsx | 3 +- .../friends-and-family/CreateFNFInvite.tsx | 17 +- src/components/home/AccountCardColumn.tsx | 2 +- .../home/BuyBitcoinHomeBottomSheet.tsx | 1 - src/components/home/HomeAccountCardsGrid.tsx | 2 +- src/pages/Contacts/AddContactAddressBook.tsx | 907 +++++----- src/pages/Contacts/AddContactSendRequest.tsx | 2 +- src/pages/FriendsAndFamily/CreateGift.tsx | 1545 +++++++++-------- 10 files changed, 1368 insertions(+), 1218 deletions(-) create mode 100644 flows/f&f.yaml diff --git a/flows/f&f.yaml b/flows/f&f.yaml new file mode 100644 index 0000000000..cb6d68f324 --- /dev/null +++ b/flows/f&f.yaml @@ -0,0 +1,60 @@ +# f&f.yaml + +# Add friends and Family to your list to be able to send SATS easily + +appId: io.hexawallet.hexa.development +--- +- runFlow: "login.yaml" +- tapOn: Freiend, tab, 2 of 4 + +#------------------------------------------------------------ +# Create Invitation Link +#------------------------------------------------------------ + +- tapOn: + id: "+AddNewContact" +- tapOn: Anna Haro +- tapOn: + id: "confirmAndProceedButton" +- tapOn: + point: "45%,72%" + +- tapOn: + id: "secureWithContactsPhoneNumber" +- tapOn: + point: "50%,27%" +- tapOn: + point: "50%,47%" +- tapOn: + point: "50%,67%" +- tapOn: + point: "10%,90%" + +- tapOn:  + +#------------------------------------------------------------ +#Create Invitation Link with gift +#------------------------------------------------------------ + +- tapOn: + id: "+AddNewContact" +- tapOn: David Taylor +- tapOn: + id: "confirmAndProceedButton" + +- tapOn: + point: "45%,85%" + +- tapOn: Enter amount in sats +- tapOn: 1 +- tapOn: 0 +- tapOn: 0 +- tapOn: 0 +- tapOn: + text: 0 + index: 0 +- tapOn: + id: "UseSatcardToGiftSats" +- tapOn: Create Gifts +- tapOn:  +- tapOn:  diff --git a/flows/friendsAndFamily.yaml b/flows/friendsAndFamily.yaml index 634aa6b6cf..3e5ba69efe 100644 --- a/flows/friendsAndFamily.yaml +++ b/flows/friendsAndFamily.yaml @@ -6,34 +6,55 @@ appId: io.hexawallet.hexa.development --- - runFlow: "login.yaml" - tapOn: Freiend, tab, 2 of 4 + +#------------------------------------------------------------ +# Create Invitation Link +#------------------------------------------------------------ + - tapOn: id: "+AddNewContact" - tapOn: Anna Haro -- tapOn: Confirm & Proceed - +- tapOn: + id: "confirmAndProceedButton" - tapOn: point: "45%,72%" + +- tapOn: + id: "secureWithContactsPhoneNumber" +- tapOn: + point: "50%,27%" +- tapOn: + point: "50%,47%" - tapOn: - point: 50%,76% + point: "50%,67%" +- tapOn: + point: "10%,90%" -- tapOn: Close - tapOn:  -- tapOn: + Add New +#------------------------------------------------------------ +#Create Invitation Link with gift +#------------------------------------------------------------ + +- tapOn: + id: "+AddNewContact" - tapOn: David Taylor -- tapOn: Confirm & Proceed +- tapOn: + id: "confirmAndProceedButton" - tapOn: point: "45%,85%" - tapOn: Enter amount in sats -- tapOn: "1" -- tapOn: "0" -- tapOn: "0" -- tapOn: "0" +- tapOn: 1 +- tapOn: 0 +- tapOn: 0 +- tapOn: 0 - tapOn: - text: "0" + text: 0 index: 0 - -- tapOn: Use SATSCARD™ to gift sats +- tapOn: + id: "UseSatcardToGiftSats" - tapOn: Create Gifts +- tapOn:  +- tapOn:  diff --git a/src/components/CardWithRadioBtn.tsx b/src/components/CardWithRadioBtn.tsx index f0e50aaf79..22e49b9b76 100644 --- a/src/components/CardWithRadioBtn.tsx +++ b/src/components/CardWithRadioBtn.tsx @@ -97,7 +97,7 @@ export default function CardWithRadioBtn( { alignItems: 'center', }} > - + {tag !== '' && ( { Create an F{"&"}F invite - props.sendRequestToContact()} > - + - + Create Invitation link @@ -77,13 +77,14 @@ const CreateFNFInvite = (props: Props) => { props.createGifts()} > - + - + Create Invitation link with gift @@ -110,11 +111,11 @@ const styles = StyleSheet.create({ paragraphTitleText: { fontSize: 12, color: Colors.gray3, - textAlign: 'left', - flexWrap: 'wrap' + textAlign: "left", + flexWrap: "wrap", }, cardBackView: { - alignItems: 'center', + alignItems: "center", flexDirection: "row", width: "100%", backgroundColor: Colors.numberBg, diff --git a/src/components/home/AccountCardColumn.tsx b/src/components/home/AccountCardColumn.tsx index 26cdad62e6..42b52265e7 100644 --- a/src/components/home/AccountCardColumn.tsx +++ b/src/components/home/AccountCardColumn.tsx @@ -45,7 +45,7 @@ const AccountCardColumn: React.FC = ( { ) : ( - = ({ { onMenuItemSelected(menuItem); }} diff --git a/src/components/home/HomeAccountCardsGrid.tsx b/src/components/home/HomeAccountCardsGrid.tsx index 4202aea7ee..fb81fbee38 100644 --- a/src/components/home/HomeAccountCardsGrid.tsx +++ b/src/components/home/HomeAccountCardsGrid.tsx @@ -206,7 +206,7 @@ const HomeAccountCardsGrid: React.FC = ( { data={columnData} keyExtractor={keyExtractor} renderItem={( { item, index }: RenderItemProps ) => { - return state.preferences.contactPermissionAsked ) - const { translations } = useContext( LocalizationContext ) - const strings = translations[ 'f&f' ] - const common = translations[ 'common' ] - const [ permissionModal, setModal ] = useState( false ) - const [ permissionErrModal, setErrModal ] = useState( false ) - const [ createFNFInvite, setCreateFNFInvite ] = useState( false ) - const [ - contactPermissionBottomSheet, - setContactPermissionBottomSheet, - ] = useState( React.createRef() ) - const [ contactPermissionIOS, setContactPermissionIOS ] = useState( false ) - const dispatch = useDispatch() - - const [ contactData, setContactData ] = useState( [] ) +} from "react-native-responsive-screen"; +import Colors from "../../common/Colors"; +import Fonts from "../../common/Fonts"; +import { RFValue } from "react-native-responsive-fontsize"; +import { AppBottomSheetTouchableWrapper } from "../../components/AppBottomSheetTouchableWrapper"; +import { FlatList } from "react-native-gesture-handler"; +import FontAwesome from "react-native-vector-icons/FontAwesome"; +import CommonStyles from "../../common/Styles/Styles"; +import RadioButton from "../../components/RadioButton"; +import * as ExpoContacts from "expo-contacts"; +import Icon from "react-native-vector-icons/MaterialIcons"; +import ErrorModalContents from "../../components/ErrorModalContents"; +import AntDesign from "react-native-vector-icons/AntDesign"; +import * as Permissions from "expo-permissions"; +import { + setIsPermissionGiven, + setContactPermissionAsked, +} from "../../store/actions/preferences"; +import ModalContainer from "../../components/home/ModalContainer"; +import { Trusted_Contacts } from "../../bitcoin/utilities/Interface"; +import { v4 as uuid } from "uuid"; +import { SKIPPED_CONTACT_NAME } from "../../store/reducers/trustedContacts"; +import { editTrustedContact } from "../../store/actions/trustedContacts"; +import HeaderTitle1 from "../../components/HeaderTitle1"; +import { LocalizationContext } from "../../common/content/LocContext"; +import PaginationIcon from "../../assets/images/svgs/pagination_1.svg"; +import CreateFNFInvite from "../../components/friends-and-family/CreateFNFInvite"; +import LinearGradient from "react-native-linear-gradient"; + +export default function AddContactAddressBook(props) { + let [selectedContacts, setSelectedContacts] = useState([]); + const [editedContacts, setEditedContacts] = useState([ + props.navigation.state.params?.contactToEdit, + ]); + const [searchName, setSearchName] = useState(""); + const [errorMessage, setErrorMessage] = useState(""); + const [filterContactData, setFilterContactData] = useState([]); + const [radioOnOff, setRadioOnOff] = useState(false); + const [contactPermissionAndroid, setContactPermissionAndroid] = + useState(false); + const isPermissionSet = useSelector( + (state) => state.preferences.contactPermissionAsked + ); + const { translations } = useContext(LocalizationContext); + const strings = translations["f&f"]; + const common = translations["common"]; + const [permissionModal, setModal] = useState(false); + const [permissionErrModal, setErrModal] = useState(false); + const [createFNFInvite, setCreateFNFInvite] = useState(false); + const [contactPermissionBottomSheet, setContactPermissionBottomSheet] = + useState(React.createRef()); + const [contactPermissionIOS, setContactPermissionIOS] = useState(false); + const dispatch = useDispatch(); + + const [contactData, setContactData] = useState([]); // const [ selectedContact, setContact ] = useState( [] ) const requestContactsPermission = async () => { @@ -74,167 +78,171 @@ export default function AddContactAddressBook( props ) { const result = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.READ_CONTACTS, { - 'title': strings.hexaWould, - 'message': strings.Addressbookdetails, + title: strings.hexaWould, + message: strings.Addressbookdetails, buttonPositive: common.allow, buttonNegative: common.deny, } - ) - return result - } catch ( err ) { - console.warn( err ) + ); + return result; + } catch (err) { + console.warn(err); } - } + }; - useEffect( () => { + useEffect(() => { // if( props.isLoadContacts ){ - getContactsAsync() + getContactsAsync(); // } - }, [] ) - + }, []); const getContact = () => { // if ( props.isLoadContacts ) { - ExpoContacts.getContactsAsync().then( async ( { data } ) => { - if ( !data.length ) { - setErrorMessage( - strings.Nocontacts, - ) - setErrModal( true ) + ExpoContacts.getContactsAsync().then(async ({ data }) => { + if (!data.length) { + setErrorMessage(strings.Nocontacts); + setErrModal(true); } - setContactData( data ) - await AsyncStorage.setItem( 'ContactData', JSON.stringify( data ) ) - const contactList = data.sort( function ( a, b ) { - if ( a.name && b.name ) { - if ( a.name.toLowerCase() < b.name.toLowerCase() ) return -1 - if ( a.name.toLowerCase() > b.name.toLowerCase() ) return 1 + setContactData(data); + await AsyncStorage.setItem("ContactData", JSON.stringify(data)); + const contactList = data.sort(function (a, b) { + if (a.name && b.name) { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; } - return 0 - } ) - setFilterContactData( contactList ) - } ) + return 0; + }); + setFilterContactData(contactList); + }); // } - } + }; const getContactPermission = async () => { - dispatch( setIsPermissionGiven( true ) ) - dispatch( setContactPermissionAsked( true ) ) + dispatch(setIsPermissionGiven(true)); + dispatch(setContactPermissionAsked(true)); - if ( Platform.OS === 'android' ) { - const granted = await requestContactsPermission() + if (Platform.OS === "android") { + const granted = await requestContactsPermission(); //console.log('GRANTED', granted); - if ( granted !== PermissionsAndroid.RESULTS.GRANTED ) { - setErrorMessage( strings.cannotSelect ) - setErrModal( true ) - setContactPermissionAndroid( false ) - return + if (granted !== PermissionsAndroid.RESULTS.GRANTED) { + setErrorMessage(strings.cannotSelect); + setErrModal(true); + setContactPermissionAndroid(false); + return; } else { - - // TODO: Migrate it using react-native-contact - getContact() + getContact(); } - } else if ( Platform.OS === 'ios' ) { + } else if (Platform.OS === "ios") { const { status, expires, permissions } = await Permissions.askAsync( - Permissions.CONTACTS, - ) - if ( status === 'denied' ) { - setContactPermissionIOS( false ) - setErrorMessage( strings.cannotSelect ) - setErrModal( true ) - return + Permissions.CONTACTS + ); + if (status === "denied") { + setContactPermissionIOS(false); + setErrorMessage(strings.cannotSelect); + setErrModal(true); + return; } else { - getContact() + getContact(); } } - } + }; const getContactsAsync = async () => { - if ( Platform.OS === 'android' ) { - const chckContactPermission = await PermissionsAndroid.check( PermissionsAndroid.PERMISSIONS.READ_CONTACTS ) - if ( !chckContactPermission ) { - if ( !isPermissionSet ) { - setModal( true ) + if (Platform.OS === "android") { + const chckContactPermission = await PermissionsAndroid.check( + PermissionsAndroid.PERMISSIONS.READ_CONTACTS + ); + if (!chckContactPermission) { + if (!isPermissionSet) { + setModal(true); } } else { - getContactPermission() + getContactPermission(); } - } else if ( Platform.OS === 'ios' ) { - if ( ( await Permissions.getAsync( Permissions.CONTACTS ) ).status === 'undetermined' ) { - setModal( true ) - } - else { - getContactPermission() + } else if (Platform.OS === "ios") { + if ( + (await Permissions.getAsync(Permissions.CONTACTS)).status === + "undetermined" + ) { + setModal(true); + } else { + getContactPermission(); } } - } + }; - useEffect( () => { - ( async () => { - await AsyncStorage.getItem( 'ContactData', ( err, value ) => { - if ( err ) console.log( 'ERROR in ContactData', err ) + useEffect(() => { + (async () => { + await AsyncStorage.getItem("ContactData", (err, value) => { + if (err) console.log("ERROR in ContactData", err); else { - const data = JSON.parse( value ) - if ( data && data.length ) { - setContactData( data ) - const contactList = data.sort( function ( a, b ) { - if ( a.name && b.name ) { - if ( a.name.toLowerCase() < b.name.toLowerCase() ) return -1 - if ( a.name.toLowerCase() > b.name.toLowerCase() ) return 1 + const data = JSON.parse(value); + if (data && data.length) { + setContactData(data); + const contactList = data.sort(function (a, b) { + if (a.name && b.name) { + if (a.name.toLowerCase() < b.name.toLowerCase()) return -1; + if (a.name.toLowerCase() > b.name.toLowerCase()) return 1; } - return 0 - } ) - setFilterContactData( contactList ) + return 0; + }); + setFilterContactData(contactList); } } - } ) - } )() - }, [] ) - - const filterContacts = ( keyword ) => { - if ( contactData.length > 0 ) { - if ( !keyword.length ) { - setFilterContactData( contactData ) - return + }); + })(); + }, []); + + const filterContacts = (keyword) => { + if (contactData.length > 0) { + if (!keyword.length) { + setFilterContactData(contactData); + return; } - const isFilter = true - const filterContactsForDisplay = [] - for ( let i = 0; i < contactData.length; i++ ) { - if ( contactData[ i ].name != undefined && contactData[ i ].name != null && contactData[ i ].name != '' ) { - const contactWords = contactData[ i ].name.split( ' ' ).length - const middleName = contactData[ i ].name.split( ' ' ).slice( 1, contactWords - 1 ).join( ' ' ) + const isFilter = true; + const filterContactsForDisplay = []; + for (let i = 0; i < contactData.length; i++) { + if ( + contactData[i].name != undefined && + contactData[i].name != null && + contactData[i].name != "" + ) { + const contactWords = contactData[i].name.split(" ").length; + const middleName = contactData[i].name + .split(" ") + .slice(1, contactWords - 1) + .join(" "); if ( - ( contactData[ i ].firstName && - contactData[ i ].firstName - .toLowerCase() - .startsWith( keyword.toLowerCase() ) ) || - ( contactData[ i ].lastName && - contactData[ i ].lastName + (contactData[i].firstName && + contactData[i].firstName .toLowerCase() - .startsWith( keyword.toLowerCase() ) ) || - ( contactData[ i ].name && - contactData[ i ].name + .startsWith(keyword.toLowerCase())) || + (contactData[i].lastName && + contactData[i].lastName .toLowerCase() - .startsWith( keyword.toLowerCase() ) ) || - ( middleName && - middleName + .startsWith(keyword.toLowerCase())) || + (contactData[i].name && + contactData[i].name .toLowerCase() - .startsWith( keyword.toLowerCase() ) ) + .startsWith(keyword.toLowerCase())) || + (middleName && + middleName.toLowerCase().startsWith(keyword.toLowerCase())) ) { - filterContactsForDisplay.push( contactData[ i ] ) + filterContactsForDisplay.push(contactData[i]); } } } - setFilterContactData( filterContactsForDisplay ) + setFilterContactData(filterContactsForDisplay); } else { - return + return; } - } + }; const trustedContacts: Trusted_Contacts = useSelector( - ( state ) => state.trustedContacts.contacts, - ) - const [ isTC, setIsTC ] = useState( false ) + (state) => state.trustedContacts.contacts + ); + const [isTC, setIsTC] = useState(false); // const isTrustedContact = useCallback( // ( selectedContact ) => { @@ -253,26 +261,26 @@ export default function AddContactAddressBook( props ) { // [ trustedContacts ], // ) - async function onContactSelect( index ) { - const contacts = filterContactData - if ( contacts[ index ].checked ) { - selectedContacts = [] + async function onContactSelect(index) { + const contacts = filterContactData; + if (contacts[index].checked) { + selectedContacts = []; } else { - selectedContacts[ 0 ] = contacts[ index ] + selectedContacts[0] = contacts[index]; } - setSelectedContacts( selectedContacts ) + setSelectedContacts(selectedContacts); // onSelectContact( selectedContacts ) - for ( let i = 0; i < contacts.length; i++ ) { + for (let i = 0; i < contacts.length; i++) { if ( - selectedContacts.findIndex( ( value ) => value.id == contacts[ i ].id ) > -1 + selectedContacts.findIndex((value) => value.id == contacts[i].id) > -1 ) { - contacts[ i ].checked = true + contacts[i].checked = true; } else { - contacts[ i ].checked = false + contacts[i].checked = false; } } - setRadioOnOff( !radioOnOff ) - setFilterContactData( contacts ) + setRadioOnOff(!radioOnOff); + setFilterContactData(contacts); // const isTrustedC = await isTrustedContact( selectedContacts[ 0 ] ) // setIsTC( isTrustedC ) // if ( isTrustedC ) { @@ -280,51 +288,54 @@ export default function AddContactAddressBook( props ) { // } } - async function onCancel( value ) { - - if ( filterContactData.findIndex( ( tmp ) => tmp.id == value.id ) > -1 ) { + async function onCancel(value) { + if (filterContactData.findIndex((tmp) => tmp.id == value.id) > -1) { filterContactData[ - filterContactData.findIndex( ( tmp ) => tmp.id == value.id ) - ].checked = false + filterContactData.findIndex((tmp) => tmp.id == value.id) + ].checked = false; } selectedContacts.splice( - selectedContacts.findIndex( ( temp ) => temp.id == value.id ), - 1, - ) - setSelectedContacts( selectedContacts ) - setRadioOnOff( !radioOnOff ) + selectedContacts.findIndex((temp) => temp.id == value.id), + 1 + ); + setSelectedContacts(selectedContacts); + setRadioOnOff(!radioOnOff); // props.onSelectContact( selectedContacts ) } - const onPressContinue = () => { - if ( selectedContacts && selectedContacts.length ) { - - if ( props.navigation.state.params?.fromScreen === 'Edit' ) { - selectedContacts[ 0 ].id = props.navigation.state.params?.contactToEdit.id - selectedContacts[ 0 ].channelKey = props.navigation.state.params?.contactToEdit.channelKey - selectedContacts[ 0 ].displayedName = selectedContacts[ 0 ].name - selectedContacts[ 0 ].avatarImageSource = selectedContacts[ 0 ].image ? selectedContacts[ 0 ].image : props.navigation.state.params?.contactToEdit.avatarImageSource - dispatch( editTrustedContact( { - channelKey: props.navigation.state.params?.contactToEdit.channelKey, - contactName: selectedContacts[ 0 ].name, - image: selectedContacts[ 0 ].image - } ) ) - props.navigation.navigate( 'ContactDetails', { - contact: selectedContacts[ 0 ], - } ) - } else if ( props.navigation.state.params?.fromScreen === 'Gift' ) { - props.navigation.replace( 'EnterGiftDetails', { - fromScreen: 'Gift', + if (selectedContacts && selectedContacts.length) { + if (props.navigation.state.params?.fromScreen === "Edit") { + selectedContacts[0].id = + props.navigation.state.params?.contactToEdit.id; + selectedContacts[0].channelKey = + props.navigation.state.params?.contactToEdit.channelKey; + selectedContacts[0].displayedName = selectedContacts[0].name; + selectedContacts[0].avatarImageSource = selectedContacts[0].image + ? selectedContacts[0].image + : props.navigation.state.params?.contactToEdit.avatarImageSource; + dispatch( + editTrustedContact({ + channelKey: props.navigation.state.params?.contactToEdit.channelKey, + contactName: selectedContacts[0].name, + image: selectedContacts[0].image, + }) + ); + props.navigation.navigate("ContactDetails", { + contact: selectedContacts[0], + }); + } else if (props.navigation.state.params?.fromScreen === "Gift") { + props.navigation.replace("EnterGiftDetails", { + fromScreen: "Gift", giftId: props.navigation.state.params?.giftId, contact: selectedContacts, - setActiveTab: props.navigation.state.params.setActiveTab - } ) + setActiveTab: props.navigation.state.params.setActiveTab, + }); } else { - if( props.navigation.state.params?.fromScreen === 'Invitation' ){ - setCreateFNFInvite( true ) - }else{ - props.navigation.navigate( 'AddContactSendRequest', { + if (props.navigation.state.params?.fromScreen === "Invitation") { + setCreateFNFInvite(true); + } else { + props.navigation.navigate("AddContactSendRequest", { SelectedContact: selectedContacts, giftId: props.navigation.state.params?.giftId, headerText: strings.addContact, @@ -332,18 +343,15 @@ export default function AddContactAddressBook( props ) { contactText: strings.adding, senderName: props?.navigation?.state?.params?.senderName, showDone: true, - note: props?.navigation?.state?.params?.note - } ) - + note: props?.navigation?.state?.params?.note, + }); } - } - } - } + }; const sendRequestToContact = () => { - setCreateFNFInvite( false ) - props.navigation.navigate( 'AddContactSendRequest', { + setCreateFNFInvite(false); + props.navigation.navigate("AddContactSendRequest", { SelectedContact: selectedContacts, giftId: props.navigation.state.params?.giftId, headerText: strings.addContact, @@ -351,27 +359,27 @@ export default function AddContactAddressBook( props ) { contactText: strings.adding, senderName: props?.navigation?.state?.params?.senderName, showDone: true, - note: props?.navigation?.state?.params?.note - } ) - } + note: props?.navigation?.state?.params?.note, + }); + }; const goCreateGifts = () => { - setCreateFNFInvite( false ) - props.navigation.navigate( 'CreateGift', { + setCreateFNFInvite(false); + props.navigation.navigate("CreateGift", { selectedContact: selectedContacts, - statusFlag: 'Invitation', + statusFlag: "Invitation", giftId: props.navigation.state.params?.giftId, - } ) - } + }); + }; const onPressBack = () => { - props.navigation.goBack() - } + props.navigation.goBack(); + }; const onSkipContinue = () => { const skippedContact = { id: uuid(), - } - props.navigation.navigate( 'AddContactSendRequest', { - SelectedContact: [ skippedContact ], + }; + props.navigation.navigate("AddContactSendRequest", { + SelectedContact: [skippedContact], giftId: props.navigation.state.params?.giftId, headerText: strings.addContact, subHeaderText: strings.send, @@ -379,22 +387,29 @@ export default function AddContactAddressBook( props ) { showDone: true, skipClicked: true, senderName: props?.navigation?.state?.params?.senderName, - note: props?.navigation?.state?.params?.note - } ) - } + note: props?.navigation?.state?.params?.note, + }); + }; return ( {/* */} - + { - props.navigation.pop( props.navigation.state.params?.fromScreen === 'Gift' ? 2 : 1 ) + props.navigation.pop( + props.navigation.state.params?.fromScreen === "Gift" ? 2 : 1 + ); }} > @@ -409,26 +424,37 @@ export default function AddContactAddressBook( props ) { {/* from your address book */} - {selectedContacts.length !== 0 && + {selectedContacts.length !== 0 && ( - {selectedContacts[ 0 ].firstName} {selectedContacts[ 0 ].lastName} - { - setSelectedContacts( [] ) - onContactSelect( filterContactData.findIndex( ( tmp ) => tmp.id == selectedContacts[ 0 ].id ) ) - }}> - + + + {selectedContacts[0].firstName} + {" "} + {selectedContacts[0].lastName} + + { + setSelectedContacts([]); + onContactSelect( + filterContactData.findIndex( + (tmp) => tmp.id == selectedContacts[0].id + ) + ); + }} + > + - } + )} {/* @@ -479,9 +505,11 @@ export default function AddContactAddressBook( props ) { {/* */} - + {/* */} - + {/* {selectedContacts.length > 0 ? selectedContacts.map( ( value, index ) => { @@ -523,58 +554,63 @@ export default function AddContactAddressBook( props ) { } ) : null} */} - + - - + { - nameKeyword = nameKeyword.replace( /[^A-Za-z0-9 ]/g, '' ) - setSearchName( nameKeyword ) - filterContacts( nameKeyword ) - } - } + onChangeText={(nameKeyword) => { + nameKeyword = nameKeyword.replace(/[^A-Za-z0-9 ]/g, ""); + setSearchName(nameKeyword); + filterContacts(nameKeyword); + }} value={searchName} /> - + {filterContactData ? ( item.id} + keyExtractor={(item, index) => item.id} data={filterContactData} extraData={radioOnOff} showsVerticalScrollIndicator={false} contentInset={{ - right: 0, top: 0, left: 0, bottom: hp( 24 ) + right: 0, + top: 0, + left: 0, + bottom: hp(24), }} - ListEmptyComponent={() => - + ListEmptyComponent={() => ( + {strings.cannotSelect} + > + {strings.cannotSelect} + {/* getContactPermission()} style={{ @@ -592,22 +628,24 @@ export default function AddContactAddressBook( props ) { */} - } - renderItem={( { item, index } ) => { - let selected = false + )} + renderItem={({ item, index }) => { + let selected = false; if ( - selectedContacts.findIndex( ( temp ) => temp.id == item.id ) > + selectedContacts.findIndex((temp) => temp.id == item.id) > -1 ) { - selected = true + selected = true; } // if (item.phoneNumbers || item.emails) { return ( onContactSelect( index )} + onPress={() => onContactSelect(index)} style={{ ...styles.contactView, - backgroundColor: selected ? 'rgba(105, 162, 176, 0.4)' : null, + backgroundColor: selected + ? "rgba(105, 162, 176, 0.4)" + : null, }} key={index} activeOpacity={0.1} @@ -617,7 +655,7 @@ export default function AddContactAddressBook( props ) { color={Colors.lightBlue} borderColor={Colors.white} isChecked={item.checked} - onpress={() => onContactSelect( index )} + onpress={() => onContactSelect(index)} /> {/* {item.name && item.name.split( ' ' )[ 0 ] @@ -631,25 +669,32 @@ export default function AddContactAddressBook( props ) { : ''} */} - {item.name && item.name.split( ' ' ).map( ( x, index ) => { - const i = item.name.split( ' ' ).length - return ( - - {index !== i - 1 ? `${x} ` : - - {x} - - } - - ) - } )} + {item.name && + item.name.split(" ").map((x, index) => { + const i = item.name.split(" ").length; + return ( + + {index !== i - 1 ? ( + `${x} ` + ) : ( + + {x} + + )} + + ); + })} - ) + ); // } else { // return null; // } @@ -660,50 +705,58 @@ export default function AddContactAddressBook( props ) { {/* {selectedContacts.length >= 1 && ( */} - { - filterContactData.length > 0 && ( - onPressContinue()} - + {filterContactData.length > 0 && ( + onPressContinue()} + > + - - {common.confirmProceed} - - - ) - } - {props.navigation.state.params?.fromScreen === 'Edit' ? - null : + {common.confirmProceed} + + + )} + {props.navigation.state.params?.fromScreen === "Edit" ? null : ( onSkipContinue()} style={{ // height: wp( '8%' ), - marginTop: hp( 1.8 ), - width: wp( '25%' ), - alignSelf: 'flex-start', - paddingLeft: wp( '8%' ), + marginTop: hp(1.8), + width: wp("25%"), + alignSelf: "flex-start", + paddingLeft: wp("8%"), }} > {filterContactData.length > 0 ? common.skip : common.continue} - - } + )} {/* { @@ -726,7 +778,6 @@ export default function AddContactAddressBook( props ) { } */} - {/* )} */} {/* setErrModal( false )} visible={permissionErrModal} closeBottomSheet={() => { setErrModal( false ) }}> @@ -747,7 +798,11 @@ export default function AddContactAddressBook( props ) { bottomImage={require( '../../assets/images/icons/errorImage.png' )} /> */} - setModal( false )} visible={permissionModal} closeBottomSheet={() => { }}> + setModal(false)} + visible={permissionModal} + closeBottomSheet={() => {}} + > { - getContactPermission() + getContactPermission(); // ( contactPermissionBottomSheet as any ).current.snapTo( 0 ) - setModal( false ) + setModal(false); }} onPressIgnore={() => { // ( contactPermissionBottomSheet as any ).current.snapTo( 0 ) - setModal( false ) + setModal(false); }} isBottomImage={true} - bottomImage={require( '../../assets/images/icons/contactPermission.png' )} + bottomImage={require("../../assets/images/icons/contactPermission.png")} /> {/* create FNF Invite */} - setCreateFNFInvite( false )} visible={createFNFInvite} closeBottomSheet={() => { }}> + setCreateFNFInvite(false)} + visible={createFNFInvite} + closeBottomSheet={() => {}} + > setCreateFNFInvite( false )} - sendRequestToContact={()=> sendRequestToContact()} - createGifts={()=> goCreateGifts()} + closeModal={() => setCreateFNFInvite(false)} + sendRequestToContact={() => sendRequestToContact()} + createGifts={() => goCreateGifts()} /> - ) + ); } -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ statusIndicatorView: { - flexDirection: 'row', - marginLeft: 'auto', - marginHorizontal: wp( '6%' ), - marginBottom: hp( 2 ) + flexDirection: "row", + marginLeft: "auto", + marginHorizontal: wp("6%"), + marginBottom: hp(2), }, statusIndicatorActiveView: { height: 5, @@ -805,138 +864,138 @@ const styles = StyleSheet.create( { }, proceedButtonText: { color: Colors.blue, - fontSize: RFValue( 13 ), - fontFamily: Fonts.Medium + fontSize: RFValue(13), + fontFamily: Fonts.Medium, }, modalContentContainer: { - height: '100%', + height: "100%", backgroundColor: Colors.backgroundColor, }, modalHeaderTitleView: { borderBottomWidth: 1, borderColor: Colors.borderColor, - alignItems: 'center', - flexDirection: 'row', - paddingBottom: hp( '2%' ), - marginBottom: wp( '5%' ), - marginLeft: wp( '4%' ), - marginRight: wp( '4%' ), + alignItems: "center", + flexDirection: "row", + paddingBottom: hp("2%"), + marginBottom: wp("5%"), + marginLeft: wp("4%"), + marginRight: wp("4%"), }, modalHeaderTitleText: { color: Colors.blue, - fontSize: RFValue( 18 ), + fontSize: RFValue(18), fontFamily: Fonts.Regular, }, modalHeaderInfoText: { color: Colors.textColorGrey, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), fontFamily: Fonts.Regular, }, TitleText: { color: Colors.blue, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Regular, }, buttonText: { color: Colors.white, fontFamily: Fonts.Medium, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), }, bottomButtonView: { - height: hp( '6%' ), - width: wp( '40%' ), + height: hp("6%"), + width: wp("40%"), backgroundColor: Colors.blue, borderRadius: 10, - justifyContent: 'center', - alignItems: 'center', + justifyContent: "center", + alignItems: "center", elevation: 10, marginBottom: 20, - marginLeft: wp( 9 ), + marginLeft: wp(9), }, selectedContactView: { - width: wp( '42%' ), - height: wp( '12%' ), + width: wp("42%"), + height: wp("12%"), backgroundColor: Colors.lightBlue, borderRadius: 10, padding: 10, - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center' + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", }, selectedContactNameText: { color: Colors.white, - fontSize: RFValue( 13 ), - fontFamily: Fonts.Regular + fontSize: RFValue(13), + fontFamily: Fonts.Regular, }, selectedContactContainer: { - height: wp( '20%' ), - alignItems: 'center', - justifyContent: 'space-between', - flexDirection: 'row', + height: wp("20%"), + alignItems: "center", + justifyContent: "space-between", + flexDirection: "row", marginLeft: 20, marginRight: 20, }, contactView: { - height: hp( 6 ), - alignItems: 'center', - flexDirection: 'row', - paddingLeft: wp( 5 ), - marginVertical: hp( 0.7 ), - width: wp( '90%' ), + height: hp(6), + alignItems: "center", + flexDirection: "row", + paddingLeft: wp(5), + marginVertical: hp(0.7), + width: wp("90%"), borderTopRightRadius: 10, borderBottomRightRadius: 10, }, contactText: { marginLeft: 10, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Regular, }, searchBoxContainer: { - flexDirection: 'row', + flexDirection: "row", backgroundColor: Colors.white, - height: hp( '5.5%' ), - width: wp( '85%' ), - alignItems: 'center', - marginVertical: hp( 2 ), + height: hp("5.5%"), + width: wp("85%"), + alignItems: "center", + marginVertical: hp(2), borderRadius: 10, - marginHorizontal: wp( 5 ) + marginHorizontal: wp(5), }, searchBoxInput: { - fontSize: RFValue( 12 ), + fontSize: RFValue(12), color: Colors.black, fontFamily: Fonts.Italic, - paddingLeft: wp( 1.5 ) + paddingLeft: wp(1.5), }, searchBoxIcon: { - paddingLeft: wp( 2 ) + paddingLeft: wp(2), }, addressBook: { - fontSize: RFValue( 12 ), - marginTop: hp( -1.5 ), - marginLeft: wp( 5 ), + fontSize: RFValue(12), + marginTop: hp(-1.5), + marginLeft: wp(5), color: Colors.textColorGrey, }, selectedContactContent: { - flexDirection: 'row', - justifyContent: 'flex-start', + flexDirection: "row", + justifyContent: "flex-start", }, selectedContact: { padding: 12, backgroundColor: Colors.testAccCard, borderRadius: 10, - flexDirection: 'row', - alignItems: 'center', - marginHorizontal: wp( 5 ), - marginTop: hp( 1.7 ), + flexDirection: "row", + alignItems: "center", + marginHorizontal: wp(5), + marginTop: hp(1.7), }, selectedContactText: { - fontSize: RFValue( 12 ), + fontSize: RFValue(12), color: Colors.backgroundColor1, fontFamily: Fonts.FiraSans, - paddingRight: wp( 3 ), - fontWeight: '500' + paddingRight: wp(3), + fontWeight: "500", }, firstName: { - fontWeight: '400' - } -} ) + fontWeight: "400", + }, +}); diff --git a/src/pages/Contacts/AddContactSendRequest.tsx b/src/pages/Contacts/AddContactSendRequest.tsx index e6feddaa70..3c9077dcfa 100644 --- a/src/pages/Contacts/AddContactSendRequest.tsx +++ b/src/pages/Contacts/AddContactSendRequest.tsx @@ -510,7 +510,7 @@ export default function AddContactSendRequest( props ) { }} /> {!giftId && - setSecure2FAModal( true )} style={{ flex: 1 diff --git a/src/pages/FriendsAndFamily/CreateGift.tsx b/src/pages/FriendsAndFamily/CreateGift.tsx index 1820cbecc0..82ef67b590 100644 --- a/src/pages/FriendsAndFamily/CreateGift.tsx +++ b/src/pages/FriendsAndFamily/CreateGift.tsx @@ -6,7 +6,7 @@ import { GiftThemeId, TxPriority, Wallet, -} from '../../bitcoin/utilities/Interface' +} from "../../bitcoin/utilities/Interface"; import { Dimensions, Image, @@ -19,201 +19,203 @@ import { Text, TouchableOpacity, View, -} from 'react-native' +} from "react-native"; import MaterialCurrencyCodeIcon, { materialIconCurrencyCodes, -} from '../../components/MaterialCurrencyCodeIcon' -import React, { useEffect, useMemo, useState } from 'react' -import { calculateSendMaxFee, sourceAccountSelectedForSending } from '../../store/actions/sending' +} from "../../components/MaterialCurrencyCodeIcon"; +import React, { useEffect, useMemo, useState } from "react"; +import { + calculateSendMaxFee, + sourceAccountSelectedForSending, +} from "../../store/actions/sending"; import { generateGifts, giftCreationSuccess, -} from '../../store/actions/accounts' +} from "../../store/actions/accounts"; import { getCurrencyImageByRegion, processRequestQR, -} from '../../common/CommonFunctions/index' +} from "../../common/CommonFunctions/index"; import { heightPercentageToDP as hp, widthPercentageToDP as wp, -} from 'react-native-responsive-screen' -import { useDispatch, useSelector } from 'react-redux' +} from "react-native-responsive-screen"; +import { useDispatch, useSelector } from "react-redux"; -import AccountShell from '../../common/data/models/AccountShell' -import { AccountsState } from '../../store/reducers/accounts' -import AntDesign from 'react-native-vector-icons/AntDesign' -import { AppBottomSheetTouchableWrapper } from '../../components/AppBottomSheetTouchableWrapper' -import BitcoinUnit from '../../common/data/enums/BitcoinUnit' -import BottomInfoBox from '../../components/BottomInfoBox' -import CheckMark from '../../assets/images/svgs/checkmark.svg' -import CheckingAccount from '../../assets/images/accIcons/icon_checking.svg' -import Colors from '../../common/Colors' -import CommonStyles from '../../common/Styles/Styles' -import CurrencyKind from '../../common/data/enums/CurrencyKind' -import DashedContainer from './DashedContainer' -import Dollar from '../../assets/images/svgs/icon_dollar.svg' -import ErrorLoader from '../../components/ErrorLoader' -import FontAwesome from 'react-native-vector-icons/FontAwesome' -import Fonts from '../../common/Fonts' -import FormStyles from '../../common/Styles/FormStyles' -import GiftCard from '../../assets/images/svgs/gift_icon_new.svg' -import HeaderTitle from '../../components/HeaderTitle' -import Illustration from '../../assets/images/svgs/illustration.svg' -import Ionicons from 'react-native-vector-icons/Ionicons' -import Loader from '../../components/loader' -import LoaderModal from '../../components/LoaderModal' -import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons' -import ModalContainer from '../../components/home/ModalContainer' -import { RFValue } from 'react-native-responsive-fontsize' -import { SATOSHIS_IN_BTC } from '../../common/constants/Bitcoin' -import { Shadow } from 'react-native-shadow-2' -import Toast from '../../components/Toast' -import ToggleContainer from './CurrencyToggle' -import { UsNumberFormat } from '../../common/utilities' -import VerifySatModalContents from '../Gift/VerifySatModalContents' -import getAvatarForSubAccount from '../../utils/accounts/GetAvatarForSubAccountKind' -import idx from 'idx' -import { platform } from 'process' -import { translations } from '../../common/content/LocContext' -import { updateUserName } from '../../store/actions/storage' -import useActiveAccountShells from '../../utils/hooks/state-selectors/accounts/UseActiveAccountShells' -import useCurrencyCode from '../../utils/hooks/state-selectors/UseCurrencyCode' -import useCurrencyKind from '../../utils/hooks/state-selectors/UseCurrencyKind' -import useFormattedUnitText from '../../utils/hooks/formatting/UseFormattedUnitText' -import usePrimarySubAccountForShell from '../../utils/hooks/account-utils/UsePrimarySubAccountForShell' -import useSpendableBalanceForAccountShell from '../../utils/hooks/account-utils/UseSpendableBalanceForAccountShell' -import LinearGradient from 'react-native-linear-gradient' +import AccountShell from "../../common/data/models/AccountShell"; +import { AccountsState } from "../../store/reducers/accounts"; +import AntDesign from "react-native-vector-icons/AntDesign"; +import { AppBottomSheetTouchableWrapper } from "../../components/AppBottomSheetTouchableWrapper"; +import BitcoinUnit from "../../common/data/enums/BitcoinUnit"; +import BottomInfoBox from "../../components/BottomInfoBox"; +import CheckMark from "../../assets/images/svgs/checkmark.svg"; +import CheckingAccount from "../../assets/images/accIcons/icon_checking.svg"; +import Colors from "../../common/Colors"; +import CommonStyles from "../../common/Styles/Styles"; +import CurrencyKind from "../../common/data/enums/CurrencyKind"; +import DashedContainer from "./DashedContainer"; +import Dollar from "../../assets/images/svgs/icon_dollar.svg"; +import ErrorLoader from "../../components/ErrorLoader"; +import FontAwesome from "react-native-vector-icons/FontAwesome"; +import Fonts from "../../common/Fonts"; +import FormStyles from "../../common/Styles/FormStyles"; +import GiftCard from "../../assets/images/svgs/gift_icon_new.svg"; +import HeaderTitle from "../../components/HeaderTitle"; +import Illustration from "../../assets/images/svgs/illustration.svg"; +import Ionicons from "react-native-vector-icons/Ionicons"; +import Loader from "../../components/loader"; +import LoaderModal from "../../components/LoaderModal"; +import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons"; +import ModalContainer from "../../components/home/ModalContainer"; +import { RFValue } from "react-native-responsive-fontsize"; +import { SATOSHIS_IN_BTC } from "../../common/constants/Bitcoin"; +import { Shadow } from "react-native-shadow-2"; +import Toast from "../../components/Toast"; +import ToggleContainer from "./CurrencyToggle"; +import { UsNumberFormat } from "../../common/utilities"; +import VerifySatModalContents from "../Gift/VerifySatModalContents"; +import getAvatarForSubAccount from "../../utils/accounts/GetAvatarForSubAccountKind"; +import idx from "idx"; +import { platform } from "process"; +import { translations } from "../../common/content/LocContext"; +import { updateUserName } from "../../store/actions/storage"; +import useActiveAccountShells from "../../utils/hooks/state-selectors/accounts/UseActiveAccountShells"; +import useCurrencyCode from "../../utils/hooks/state-selectors/UseCurrencyCode"; +import useCurrencyKind from "../../utils/hooks/state-selectors/UseCurrencyKind"; +import useFormattedUnitText from "../../utils/hooks/formatting/UseFormattedUnitText"; +import usePrimarySubAccountForShell from "../../utils/hooks/account-utils/UsePrimarySubAccountForShell"; +import useSpendableBalanceForAccountShell from "../../utils/hooks/account-utils/UseSpendableBalanceForAccountShell"; +import LinearGradient from "react-native-linear-gradient"; -const { height } = Dimensions.get( 'window' ) +const { height } = Dimensions.get("window"); export type Props = { navigation: any; }; -const CreateGift = ( { navigation }: Props ) => { - const { selectedContact, statusFlag } = navigation?.state?.params - const dispatch = useDispatch() +const CreateGift = ({ navigation }: Props) => { + const { selectedContact, statusFlag } = navigation?.state?.params; + const dispatch = useDispatch(); const activeAccounts = useActiveAccountShells().filter( - ( shell ) => shell?.primarySubAccount.type !== AccountType.LIGHTNING_ACCOUNT - ) + (shell) => shell?.primarySubAccount.type !== AccountType.LIGHTNING_ACCOUNT + ); const currencyKind: CurrencyKind = useSelector( - ( state ) => state.preferences.giftCurrencyKind || CurrencyKind.BITCOIN - ) - const strings = translations[ 'accounts' ] - const prefersBitcoin = useMemo( () => { - return currencyKind === CurrencyKind.BITCOIN - }, [ currencyKind ] ) - const fiatCurrencyCode = useCurrencyCode() - const accountsState: AccountsState = useSelector( ( state ) => state.accounts ) - const currencyCode = useSelector( ( state ) => state.preferences.currencyCode ) - const exchangeRates = useSelector( ( state ) => state.accounts.exchangeRates ) - const [ amount, setAmount ] = useState( '' ) - const [ showKeyboard, setKeyboard ] = useState( false ) - const [ numbersOfGift, setNumbersOfGift ] = useState( 1 ) - const [ initGiftCreation, setInitGiftCreation ] = useState( false ) - const [ includeFees, setFees ] = useState( false ) - const [ addfNf, setAddfNf ] = useState( false ) - const [ giftModal, setGiftModal ] = useState( false ) - const [ createdGift, setCreatedGift ] = useState( null ) - const accountState: AccountsState = useSelector( ( state ) => - idx( state, ( _ ) => _.accounts ) - ) + (state) => state.preferences.giftCurrencyKind || CurrencyKind.BITCOIN + ); + const strings = translations["accounts"]; + const prefersBitcoin = useMemo(() => { + return currencyKind === CurrencyKind.BITCOIN; + }, [currencyKind]); + const fiatCurrencyCode = useCurrencyCode(); + const accountsState: AccountsState = useSelector((state) => state.accounts); + const currencyCode = useSelector((state) => state.preferences.currencyCode); + const exchangeRates = useSelector((state) => state.accounts.exchangeRates); + const [amount, setAmount] = useState(""); + const [showKeyboard, setKeyboard] = useState(false); + const [numbersOfGift, setNumbersOfGift] = useState(1); + const [initGiftCreation, setInitGiftCreation] = useState(false); + const [includeFees, setFees] = useState(false); + const [addfNf, setAddfNf] = useState(false); + const [giftModal, setGiftModal] = useState(false); + const [createdGift, setCreatedGift] = useState(null); + const accountState: AccountsState = useSelector((state) => + idx(state, (_) => _.accounts) + ); const giftCreationStatus = useSelector( - ( state ) => state.accounts.giftCreationStatus - ) - const sendMaxFee = useSelector( ( state ) => - idx( state, ( _ ) => _.sending.sendMaxFee ) - ) - const [ isSendMax, setIsSendMax ] = useState( false ) - const accountShells: AccountShell[] = accountState.accountShells - const [ showLoader, setShowLoader ] = useState( false ) - const [ accountListModal, setAccountListModal ] = useState( false ) - const [ advanceModal, setAdvanceModal ] = useState( false ) + (state) => state.accounts.giftCreationStatus + ); + const sendMaxFee = useSelector((state) => + idx(state, (_) => _.sending.sendMaxFee) + ); + const [isSendMax, setIsSendMax] = useState(false); + const accountShells: AccountShell[] = accountState.accountShells; + const [showLoader, setShowLoader] = useState(false); + const [accountListModal, setAccountListModal] = useState(false); + const [advanceModal, setAdvanceModal] = useState(false); const defaultGiftAccount = accountShells.find( - ( shell ) => + (shell) => shell.primarySubAccount.type == AccountType.CHECKING_ACCOUNT && shell.primarySubAccount.instanceNumber === 0 - ) - const [ selectedAccount, setSelectedAccount ]: [AccountShell, any] = - useState( defaultGiftAccount ) - const spendableBalance = useSpendableBalanceForAccountShell( selectedAccount ) + ); + const [selectedAccount, setSelectedAccount]: [AccountShell, any] = + useState(defaultGiftAccount); + const spendableBalance = useSpendableBalanceForAccountShell(selectedAccount); const account: Account = - accountState.accounts[ selectedAccount.primarySubAccount.id ] - const [ averageLowTxFee, setAverageLowTxFee ] = useState( 0 ) - const [ isExclusive, setIsExclusive ] = useState( true ) - const [ minimumGiftValue, setMinimumGiftValue ] = useState( 1000 ) - const [ showErrorLoader, setShowErrorLoader ] = useState( false ) - const [ satCard, setSatCard ] = useState( false ) - const [ showVerification, setShowVerification ] = useState( false ) + accountState.accounts[selectedAccount.primarySubAccount.id]; + const [averageLowTxFee, setAverageLowTxFee] = useState(0); + const [isExclusive, setIsExclusive] = useState(true); + const [minimumGiftValue, setMinimumGiftValue] = useState(1000); + const [showErrorLoader, setShowErrorLoader] = useState(false); + const [satCard, setSatCard] = useState(false); + const [showVerification, setShowVerification] = useState(false); - const [ name, setName ] = useState( '' ) - const wallet: Wallet = useSelector( ( state ) => state.storage.wallet ) + const [name, setName] = useState(""); + const wallet: Wallet = useSelector((state) => state.storage.wallet); - const currentSatsAmountFormValue = useMemo( () => { - return Number( amount ) - }, [ amount ] ) + const currentSatsAmountFormValue = useMemo(() => { + return Number(amount); + }, [amount]); - const [ dropdownBoxValue, setDropdownBoxValue ] = useState( { + const [dropdownBoxValue, setDropdownBoxValue] = useState({ id: GiftThemeId.ONE, - title: 'Gift Sats', - subText: 'Something that appreciates with time', + title: "Gift Sats", + subText: "Something that appreciates with time", avatar: , color: Colors.darkBlue, - } ) - + }); - useEffect( () => { - dispatch( sourceAccountSelectedForSending( defaultGiftAccount ) ) - }, [ defaultGiftAccount ] ) + useEffect(() => { + dispatch(sourceAccountSelectedForSending(defaultGiftAccount)); + }, [defaultGiftAccount]); - useEffect( () => { - let minimumGiftVal = 1000 - if ( includeFees ) minimumGiftVal += averageLowTxFee - setMinimumGiftValue( minimumGiftVal ) - }, [ includeFees ] ) + useEffect(() => { + let minimumGiftVal = 1000; + if (includeFees) minimumGiftVal += averageLowTxFee; + setMinimumGiftValue(minimumGiftVal); + }, [includeFees]); - useEffect( () => { - if ( numbersOfGift ) setFees( false ) - }, [ numbersOfGift ] ) + useEffect(() => { + if (numbersOfGift) setFees(false); + }, [numbersOfGift]); - useEffect( () => { - setName( wallet.userName ? wallet.userName : wallet.walletName ) - }, [ wallet.walletName, wallet.userName ] ) + useEffect(() => { + setName(wallet.userName ? wallet.userName : wallet.walletName); + }, [wallet.walletName, wallet.userName]); - function convertFiatToSats( fiatAmount: number ) { + function convertFiatToSats(fiatAmount: number) { return accountsState.exchangeRates && - accountsState.exchangeRates[ currencyCode ] + accountsState.exchangeRates[currencyCode] ? Math.trunc( - ( fiatAmount / accountsState.exchangeRates[ currencyCode ].last ) * + (fiatAmount / accountsState.exchangeRates[currencyCode].last) * SATOSHIS_IN_BTC - ) - : 0 + ) + : 0; } - function convertSatsToFiat( sats ) { + function convertSatsToFiat(sats) { return accountsState.exchangeRates && - accountsState.exchangeRates[ currencyCode ] + accountsState.exchangeRates[currencyCode] ? ( - ( sats / SATOSHIS_IN_BTC ) * - accountsState.exchangeRates[ currencyCode ].last - ).toFixed( 2 ) - : '0' + (sats / SATOSHIS_IN_BTC) * + accountsState.exchangeRates[currencyCode].last + ).toFixed(2) + : "0"; } - const isAmountInvalid = useMemo( () => { - let giftAmount = currentSatsAmountFormValue - console.log( giftAmount ) + const isAmountInvalid = useMemo(() => { + let giftAmount = currentSatsAmountFormValue; + console.log(giftAmount); - const numberOfGifts = numbersOfGift ? Number( numbersOfGift ) : 1 - if ( prefersBitcoin ) { - if ( !includeFees && averageLowTxFee ) giftAmount += averageLowTxFee - return giftAmount * numberOfGifts > spendableBalance + const numberOfGifts = numbersOfGift ? Number(numbersOfGift) : 1; + if (prefersBitcoin) { + if (!includeFees && averageLowTxFee) giftAmount += averageLowTxFee; + return giftAmount * numberOfGifts > spendableBalance; } else { - const giftAmountInFiat = giftAmount ? giftAmount : 1 + const giftAmountInFiat = giftAmount ? giftAmount : 1; const spendableBalanceInFiat = parseFloat( - convertSatsToFiat( spendableBalance ) - ) - return giftAmountInFiat * numberOfGifts > spendableBalanceInFiat + convertSatsToFiat(spendableBalance) + ); + return giftAmountInFiat * numberOfGifts > spendableBalanceInFiat; } }, [ currentSatsAmountFormValue, @@ -223,130 +225,130 @@ const CreateGift = ( { navigation }: Props ) => { prefersBitcoin, numbersOfGift, currencyKind, - ] ) + ]); - useEffect( () => { + useEffect(() => { if ( accountsState.selectedGiftId && initGiftCreation && giftCreationStatus ) { const createdGift = accountsState.gifts - ? accountsState.gifts[ accountsState.selectedGiftId ] - : null - if ( createdGift ) { - setCreatedGift( createdGift ) - setGiftModal( true ) - setInitGiftCreation( false ) - setShowLoader( false ) - setShowErrorLoader( false ) - dispatch( giftCreationSuccess( null ) ) + ? accountsState.gifts[accountsState.selectedGiftId] + : null; + if (createdGift) { + setCreatedGift(createdGift); + setGiftModal(true); + setInitGiftCreation(false); + setShowLoader(false); + setShowErrorLoader(false); + dispatch(giftCreationSuccess(null)); } } - }, [ accountsState.selectedGiftId, initGiftCreation, giftCreationStatus ] ) + }, [accountsState.selectedGiftId, initGiftCreation, giftCreationStatus]); - useEffect( () => { - if ( statusFlag == 'Invitation' ) { + useEffect(() => { + if (statusFlag == "Invitation") { if ( accountsState.selectedGiftId && initGiftCreation && giftCreationStatus ) { const createdGift = accountsState.gifts - ? accountsState.gifts[ accountsState.selectedGiftId ] - : null - if ( createdGift ) { - setCreatedGift( createdGift ) - setShowLoader( false ) - navigation.replace( 'SendGift', { - fromScreen: 'Gift', + ? accountsState.gifts[accountsState.selectedGiftId] + : null; + if (createdGift) { + setCreatedGift(createdGift); + setShowLoader(false); + navigation.replace("SendGift", { + fromScreen: "Gift", selectedContact: selectedContact, - giftId: ( createdGift as Gift ).id, + giftId: (createdGift as Gift).id, encryptionType: DeepLinkEncryptionType.OTP, - note: 'Bitcoin is a new type of money that is not controlled by any government or company', + note: "Bitcoin is a new type of money that is not controlled by any government or company", contact: selectedContact, senderName: name, themeId: dropdownBoxValue?.id ?? GiftThemeId.ONE, setActiveTab: navigation.state.params.setActiveTab, - } ) + }); } } } - }, [ accountsState.selectedGiftId, giftCreationStatus, initGiftCreation ] ) + }, [accountsState.selectedGiftId, giftCreationStatus, initGiftCreation]); - useEffect( () => { - setInitGiftCreation( false ) - setShowLoader( false ) - if ( giftCreationStatus ) { - dispatch( giftCreationSuccess( null ) ) - } else if ( giftCreationStatus === false ) { + useEffect(() => { + setInitGiftCreation(false); + setShowLoader(false); + if (giftCreationStatus) { + dispatch(giftCreationSuccess(null)); + } else if (giftCreationStatus === false) { // failed to create gift - setShowLoader( false ) - setShowErrorLoader( true ) - dispatch( giftCreationSuccess( null ) ) + setShowLoader(false); + setShowErrorLoader(true); + dispatch(giftCreationSuccess(null)); } - }, [ giftCreationStatus ] ) + }, [giftCreationStatus]); - useEffect( () => { - if ( isSendMax && sendMaxFee ) setAverageLowTxFee( sendMaxFee ) - else if ( account && accountState.averageTxFees ) + useEffect(() => { + if (isSendMax && sendMaxFee) setAverageLowTxFee(sendMaxFee); + else if (account && accountState.averageTxFees) setAverageLowTxFee( - accountState.averageTxFees[ account.networkType ][ TxPriority.LOW ] + accountState.averageTxFees[account.networkType][TxPriority.LOW] .averageTxFee - ) - }, [ account, accountState.averageTxFees, isSendMax, sendMaxFee ] ) + ); + }, [account, accountState.averageTxFees, isSendMax, sendMaxFee]); - useEffect( () => { - if ( isSendMax && sendMaxFee ) setAverageLowTxFee( sendMaxFee ) - else if ( account && accountState.averageTxFees ) + useEffect(() => { + if (isSendMax && sendMaxFee) setAverageLowTxFee(sendMaxFee); + else if (account && accountState.averageTxFees) setAverageLowTxFee( - accountState.averageTxFees[ account.networkType ][ TxPriority.LOW ] + accountState.averageTxFees[account.networkType][TxPriority.LOW] .averageTxFee - ) - }, [ account, accountState.averageTxFees, isSendMax, sendMaxFee ] ) + ); + }, [account, accountState.averageTxFees, isSendMax, sendMaxFee]); - const numberWithCommas = ( x ) => { - return x ? x.toString().replace( /\B(?=(\d{3})+(?!\d))/g, ',' ) : '' - } + const numberWithCommas = (x) => { + return x ? x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : ""; + }; - useEffect( () => { - if ( isSendMax ) setAmount( `${spendableBalance - sendMaxFee}` ) - }, [ sendMaxFee, isSendMax ] ) + useEffect(() => { + if (isSendMax) setAmount(`${spendableBalance - sendMaxFee}`); + }, [sendMaxFee, isSendMax]); - useEffect( () => { - if ( currencyKind == CurrencyKind.BITCOIN ) { - const newAmount = convertFiatToSats( parseFloat( amount ) ).toString() - setAmount( newAmount == 'NaN' ? '' : newAmount ) - } else if ( currencyKind == CurrencyKind.FIAT ) { - const newAmount = convertSatsToFiat( parseFloat( amount ) ).toString() - setAmount( newAmount == 'NaN' ? '' : newAmount ) + useEffect(() => { + if (currencyKind == CurrencyKind.BITCOIN) { + const newAmount = convertFiatToSats(parseFloat(amount)).toString(); + setAmount(newAmount == "NaN" ? "" : newAmount); + } else if (currencyKind == CurrencyKind.FIAT) { + const newAmount = convertSatsToFiat(parseFloat(amount)).toString(); + setAmount(newAmount == "NaN" ? "" : newAmount); } - }, [ currencyKind ] ) + }, [currencyKind]); function handleSendMaxPress() { dispatch( - calculateSendMaxFee( { - numberOfRecipients: Number( numbersOfGift ), + calculateSendMaxFee({ + numberOfRecipients: Number(numbersOfGift), accountShell: selectedAccount, - } ) - ) - setIsSendMax( true ) + }) + ); + setIsSendMax(true); } - const renderButton = ( text, condn ) => { + const renderButton = (text, condn) => { const availableToSpend = selectedAccount && selectedAccount.primarySubAccount?.balances?.confirmed ? selectedAccount.primarySubAccount?.balances?.confirmed - : 0 + : 0; - let isDisabled = isAmountInvalid - if ( !isDisabled ) { - if ( prefersBitcoin ) { - isDisabled = currentSatsAmountFormValue < minimumGiftValue + let isDisabled = isAmountInvalid; + if (!isDisabled) { + if (prefersBitcoin) { + isDisabled = currentSatsAmountFormValue < minimumGiftValue; } else { isDisabled = currentSatsAmountFormValue < - parseFloat( convertSatsToFiat( minimumGiftValue ) ) + parseFloat(convertSatsToFiat(minimumGiftValue)); } } @@ -354,127 +356,130 @@ const CreateGift = ( { navigation }: Props ) => { { - if ( satCard ) { - setShowVerification( true ) + if (satCard) { + setShowVerification(true); } else { - console.log( 'condn', condn ) - const giftInstances = Number( numbersOfGift ) + console.log("condn", condn); + const giftInstances = Number(numbersOfGift); const giftAmountInSats = prefersBitcoin - ? Number( amount ) - : convertFiatToSats( parseFloat( amount ) ) - const giftAmountsInSats = [] - for ( let int = 0; int < giftInstances; int++ ) { - giftAmountsInSats.push( giftAmountInSats ) + ? Number(amount) + : convertFiatToSats(parseFloat(amount)); + const giftAmountsInSats = []; + for (let int = 0; int < giftInstances; int++) { + giftAmountsInSats.push(giftAmountInSats); } - switch ( condn ) { - case 'Invitation': - if ( giftAmountsInSats.length ) { - setInitGiftCreation( true ) - setShowLoader( true ) - dispatch( - generateGifts( { - amounts: giftAmountsInSats, - accountId: - selectedAccount && - selectedAccount.primarySubAccount && - selectedAccount.primarySubAccount.id - ? selectedAccount.primarySubAccount.id - : '', - includeFee: includeFees, - exclusiveGifts: - giftAmountsInSats.length === 1 ? false : isExclusive, - } ) - ) - } - break - case 'Create Gift': - // creating multiple gift instances(based on giftInstances) of the same amount - if ( giftAmountsInSats.length ) { - setInitGiftCreation( true ) - setShowLoader( true ) - dispatch( - generateGifts( { - amounts: giftAmountsInSats, - accountId: - selectedAccount && - selectedAccount.primarySubAccount && - selectedAccount.primarySubAccount.id - ? selectedAccount.primarySubAccount.id - : '', - includeFee: includeFees, - exclusiveGifts: - giftAmountsInSats.length === 1 ? false : isExclusive, - } ) - ) - } - break + switch (condn) { + case "Invitation": + if (giftAmountsInSats.length) { + setInitGiftCreation(true); + setShowLoader(true); + dispatch( + generateGifts({ + amounts: giftAmountsInSats, + accountId: + selectedAccount && + selectedAccount.primarySubAccount && + selectedAccount.primarySubAccount.id + ? selectedAccount.primarySubAccount.id + : "", + includeFee: includeFees, + exclusiveGifts: + giftAmountsInSats.length === 1 ? false : isExclusive, + }) + ); + } + break; + case "Create Gift": + // creating multiple gift instances(based on giftInstances) of the same amount + if (giftAmountsInSats.length) { + setInitGiftCreation(true); + setShowLoader(true); + dispatch( + generateGifts({ + amounts: giftAmountsInSats, + accountId: + selectedAccount && + selectedAccount.primarySubAccount && + selectedAccount.primarySubAccount.id + ? selectedAccount.primarySubAccount.id + : "", + includeFee: includeFees, + exclusiveGifts: + giftAmountsInSats.length === 1 ? false : isExclusive, + }) + ); + } + break; - case 'Add F&F and Send': - setGiftModal( false ) - navigation.navigate( 'AddContact', { - fromScreen: 'Gift', - giftId: ( createdGift as Gift ).id, - setActiveTab: navigation.state.params.setActiveTab, - } ) - break + case "Add F&F and Send": + setGiftModal(false); + navigation.navigate("AddContact", { + fromScreen: "Gift", + giftId: (createdGift as Gift).id, + setActiveTab: navigation.state.params.setActiveTab, + }); + break; - case 'Send Gift': - setGiftModal( false ) - navigation.navigate( 'EnterGiftDetails', { - giftId: ( createdGift as Gift ).id, - setActiveTab: navigation.state.params.setActiveTab, - } ) - break + case "Send Gift": + setGiftModal(false); + navigation.navigate("EnterGiftDetails", { + giftId: (createdGift as Gift).id, + setActiveTab: navigation.state.params.setActiveTab, + }); + break; } } }} - > - {text} - ) - } + ); + }; const onCloseClick = () => { - setShowVerification( false ) - } + setShowVerification(false); + }; const onVerifyClick = () => { - setShowVerification( false ) - navigation.navigate( 'SetUpSatNextCard', { - giftAmount: includeFees ? JSON.stringify( parseInt( amount ) - 226 ) : amount, + setShowVerification(false); + navigation.navigate("SetUpSatNextCard", { + giftAmount: includeFees ? JSON.stringify(parseInt(amount) - 226) : amount, fromClaimFlow: 0, - } ) - } + }); + }; - function onPressNumber( text ) { - let tmpPasscode = amount - if ( text != 'x' ) { - tmpPasscode += text - setAmount( tmpPasscode ) + function onPressNumber(text) { + let tmpPasscode = amount; + if (text != "x") { + tmpPasscode += text; + setAmount(tmpPasscode); } - if ( amount && text == 'x' ) { - setAmount( amount.slice( 0, -1 ) ) + if (amount && text == "x") { + setAmount(amount.slice(0, -1)); } - if ( isSendMax ) setIsSendMax( false ) + if (isSendMax) setIsSendMax(false); } const renderCreateGiftModal = () => { @@ -482,11 +487,11 @@ const CreateGift = ( { navigation }: Props ) => { @@ -494,19 +499,19 @@ const CreateGift = ( { navigation }: Props ) => { { - setGiftModal( false ) - navigation.goBack() + setGiftModal(false); + navigation.goBack(); }} style={{ - width: wp( 7 ), - height: wp( 7 ), - borderRadius: wp( 7 / 2 ), - alignSelf: 'flex-end', + width: wp(7), + height: wp(7), + borderRadius: wp(7 / 2), + alignSelf: "flex-end", backgroundColor: Colors.THEAM_TEXT_COLOR, - alignItems: 'center', - justifyContent: 'center', - marginTop: wp( 3 ), - marginRight: wp( 3 ), + alignItems: "center", + justifyContent: "center", + marginTop: wp(3), + marginRight: wp(3), }} > { Gift Created @@ -532,30 +537,30 @@ const CreateGift = ( { navigation }: Props ) => { ...styles.modalInfoText, }} > - {'You\'re ready to elate!'} + {"You're ready to elate!"} } - currencyCode={prefersBitcoin ? '' : currencyCode} + currencyCode={prefersBitcoin ? "" : currencyCode} /> @@ -591,70 +596,68 @@ const CreateGift = ( { navigation }: Props ) => { */} - {renderButton( 'Send Gift', addfNf ? 'Add F&F and Send' : 'Send Gift' )} + {renderButton("Send Gift", addfNf ? "Add F&F and Send" : "Send Gift")} {/* {renderButton( 'Add F&F and Send' )} */} - ) - } + ); + }; const BalanceCurrencyIcon = () => { - const style = { - } + const style = {}; - if ( prefersBitcoin ) { + if (prefersBitcoin) { return ( - ) + ); } - if ( materialIconCurrencyCodes.includes( fiatCurrencyCode ) ) { + if (materialIconCurrencyCodes.includes(fiatCurrencyCode)) { return ( - ) + ); } else { return ( - ) + ); } - } + }; const renderAccountList = () => { return ( - {activeAccounts.map( ( item, index ) => { + {activeAccounts.map((item, index) => { if ( - [ AccountType.TEST_ACCOUNT, AccountType.SWAN_ACCOUNT ].includes( + [AccountType.TEST_ACCOUNT, AccountType.SWAN_ACCOUNT].includes( item.primarySubAccount.type ) || !item.primarySubAccount.isUsable || item.primarySubAccount.isTFAEnabled ) - return + return; return ( { backgroundColor: Colors.white, }} > - {accountElement( item, () => { - setSelectedAccount( item ) - setAccountListModal( false ) - } )} + {accountElement(item, () => { + setSelectedAccount(item); + setAccountListModal(false); + })} - ) - } )} + ); + })} - ) - } + ); + }; - const AdvanceGiftOptions = ( { title, stateToUpdate, imageToShow } ) => { - const [ timer, SetTimer ] = useState( null ) - const [ counter, SetCounter ] = useState( numbersOfGift ) - const [ timeLock, setTimeLock ] = useState( 1 ) - const [ limitedValidity, setLimitedValidity ] = useState( 1 ) + const AdvanceGiftOptions = ({ title, stateToUpdate, imageToShow }) => { + const [timer, SetTimer] = useState(null); + const [counter, SetCounter] = useState(numbersOfGift); + const [timeLock, setTimeLock] = useState(1); + const [limitedValidity, setLimitedValidity] = useState(1); - let flag = null + let flag = null; const handleTimer = () => { - flag == true ? plus() : flag == false && minus() - flag !== null && SetTimer( () => setTimeout( () => handleTimer(), 500 ) ) - } + flag == true ? plus() : flag == false && minus(); + flag !== null && SetTimer(() => setTimeout(() => handleTimer(), 500)); + }; const stopTimer = () => { - flag = null - SetTimer( null ) - clearTimeout( timer ) - setNumbersOfGift( counter ) - } + flag = null; + SetTimer(null); + clearTimeout(timer); + setNumbersOfGift(counter); + }; const plus = () => { - if ( stateToUpdate == 'gift' ) { - SetCounter( ( prev ) => prev + 1 ) - } else if ( stateToUpdate == 'timeLock' ) { - setTimeLock( timeLock + 1 ) - } else if ( stateToUpdate == 'limitedValidity' ) { - setLimitedValidity( limitedValidity + 1 ) + if (stateToUpdate == "gift") { + SetCounter((prev) => prev + 1); + } else if (stateToUpdate == "timeLock") { + setTimeLock(timeLock + 1); + } else if (stateToUpdate == "limitedValidity") { + setLimitedValidity(limitedValidity + 1); } - } + }; const minus = () => { - if ( stateToUpdate == 'gift' ) { - if ( counter > 1 ) SetCounter( ( prev ) => prev - 1 ) - } else if ( stateToUpdate == 'timeLock' ) { - if ( timeLock > 1 ) setTimeLock( timeLock - 1 ) - } else if ( stateToUpdate == 'limitedValidity' ) { - if ( limitedValidity > 1 ) setLimitedValidity( limitedValidity - 1 ) + if (stateToUpdate == "gift") { + if (counter > 1) SetCounter((prev) => prev - 1); + } else if (stateToUpdate == "timeLock") { + if (timeLock > 1) setTimeLock(timeLock - 1); + } else if (stateToUpdate == "limitedValidity") { + if (limitedValidity > 1) setLimitedValidity(limitedValidity - 1); } - } + }; return ( @@ -750,64 +753,64 @@ const CreateGift = ( { navigation }: Props ) => { Gift Sats created will be of the - {' '} + {" "} same amount - {' '} + {" "} and can be - {' '} + {" "} sent separately { - flag = false - handleTimer() + flag = false; + handleTimer(); }} onPressOut={() => stopTimer()} style={{ - width: wp( '5%' ), - height: wp( '5%' ), - borderRadius: wp( '5%' ) / 2, + width: wp("5%"), + height: wp("5%"), + borderRadius: wp("5%") / 2, backgroundColor: Colors.THEAM_TEXT_COLOR, - justifyContent: 'center', - alignItems: 'center', - marginRight: wp( '4%' ), + justifyContent: "center", + alignItems: "center", + marginRight: wp("4%"), }} > { style={{ color: Colors.black, fontFamily: Fonts.Regular, - fontSize: RFValue( 18 ), + fontSize: RFValue(18), }} > - {stateToUpdate == 'gift' + {stateToUpdate == "gift" ? counter - : stateToUpdate == 'timeLock' - ? timeLock - : limitedValidity} + : stateToUpdate == "timeLock" + ? timeLock + : limitedValidity} { - flag = true - handleTimer() + flag = true; + handleTimer(); }} onPressOut={() => stopTimer()} style={{ - width: wp( '5%' ), - height: wp( '5%' ), - borderRadius: wp( '5%' ) / 2, + width: wp("5%"), + height: wp("5%"), + borderRadius: wp("5%") / 2, backgroundColor: Colors.THEAM_TEXT_COLOR, - justifyContent: 'center', - alignItems: 'center', - marginLeft: wp( '4%' ), + justifyContent: "center", + alignItems: "center", + marginLeft: wp("4%"), }} > @@ -853,9 +856,9 @@ const CreateGift = ( { navigation }: Props ) => { setIsExclusive( !isExclusive )} + onPress={() => setIsExclusive(!isExclusive)} style={{ - flexDirection: 'row', + flexDirection: "row", marginVertical: 7, }} > @@ -872,50 +875,50 @@ const CreateGift = ( { navigation }: Props ) => { - {'Make each gift exclusive\n'} + {"Make each gift exclusive\n"} - (Restricts the gift to{' '} + (Restricts the gift to{" "} one per Bitcoin Tribe app - {' '} + {" "} ) - ) - } + ); + }; const renderAdvanceModal = () => { return ( setAdvanceModal( false )} + onPress={() => setAdvanceModal(false)} style={styles.modalCrossButton} > @@ -924,13 +927,13 @@ const CreateGift = ( { navigation }: Props ) => { @@ -941,10 +944,10 @@ const CreateGift = ( { navigation }: Props ) => { }}>Lorem ipsum dolor Lorem dolor sit amet, consectetur dolor sit */} {/* { imageToShow={require( '../../assets/images/icons/validity.png' )} /> */} - ) - } + ); + }; // gift creation failure UI @@ -977,18 +980,18 @@ const CreateGift = ( { navigation }: Props ) => { { - setShowErrorLoader( false ) + setShowErrorLoader(false); }} style={styles.modalCrossButton} > @@ -998,16 +1001,16 @@ const CreateGift = ( { navigation }: Props ) => { { style={{ color: Colors.gray3, marginBottom: 10, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), fontFamily: Fonts.Regular, }} > @@ -1028,57 +1031,57 @@ const CreateGift = ( { navigation }: Props ) => { {accountElement( selectedAccount, () => {}, 1, - '90%', - 'Bitcoin not deducted' + "90%", + "Bitcoin not deducted" )} { - setShowErrorLoader( false ) + setShowErrorLoader(false); }} > Try again - ) - } + ); + }; const accountElement = ( item, onPressCallBack, activeOpacity = 0, - width = '90%', + width = "90%", message = `${ - currencyKind === CurrencyKind.BITCOIN ? 'Sats' : 'Money' + currencyKind === CurrencyKind.BITCOIN ? "Sats" : "Money" } would be deducted from` ) => { return ( @@ -1092,37 +1095,37 @@ const CreateGift = ( { navigation }: Props ) => { > - {getAvatarForSubAccount( item.primarySubAccount, false, true )} + {getAvatarForSubAccount(item.primarySubAccount, false, true)} @@ -1131,7 +1134,7 @@ const CreateGift = ( { navigation }: Props ) => { @@ -1139,22 +1142,22 @@ const CreateGift = ( { navigation }: Props ) => { item.primarySubAccount.defaultTitle} - {'Available to spend: '} + {"Available to spend: "} {prefersBitcoin ? UsNumberFormat( - item.primarySubAccount?.balances?.confirmed - ) + item.primarySubAccount?.balances?.confirmed + ) : accountsState.exchangeRates && - accountsState.exchangeRates[ currencyCode ] - ? ( - ( item.primarySubAccount?.balances?.confirmed / - SATOSHIS_IN_BTC ) * - accountsState.exchangeRates[ currencyCode ].last - ).toFixed( 2 ) - : 0} + accountsState.exchangeRates[currencyCode] + ? ( + (item.primarySubAccount?.balances?.confirmed / + SATOSHIS_IN_BTC) * + accountsState.exchangeRates[currencyCode].last + ).toFixed(2) + : 0} - {prefersBitcoin ? ' sats' : ` ${fiatCurrencyCode}`} + {prefersBitcoin ? " sats" : ` ${fiatCurrencyCode}`} {activeOpacity === 0 && ( @@ -1163,15 +1166,15 @@ const CreateGift = ( { navigation }: Props ) => { size={24} color="gray" style={{ - alignSelf: 'center', + alignSelf: "center", }} /> )} - ) - } + ); + }; return ( { /> {giftModal && ( setGiftModal( false )} + onBackground={() => setGiftModal(false)} visible={giftModal} closeBottomSheet={() => {}} > @@ -1199,21 +1202,21 @@ const CreateGift = ( { navigation }: Props ) => { CommonStyles.headerContainer, { backgroundColor: Colors.backgroundColor, - marginRight: wp( 4 ), - marginVertical: height < 720 ? wp( 0 ) : 'auto', + marginRight: wp(4), + marginVertical: height < 720 ? wp(0) : "auto", }, ]} > { - navigation.goBack() + navigation.goBack(); }} > @@ -1222,8 +1225,8 @@ const CreateGift = ( { navigation }: Props ) => { { > - {'Create Gift'} + {"Create Gift"} setAdvanceModal( true )} + onPress={() => setAdvanceModal(true)} > - {accountElement( selectedAccount, () => - setAccountListModal( !accountListModal ) + {accountElement(selectedAccount, () => + setAccountListModal(!accountListModal) )} { - if( showKeyboard ) return - setKeyboard( true ) + if (showKeyboard) return; + setKeyboard(true); }} > {currencyKind == CurrencyKind.FIAT ? amount - : UsNumberFormat( amount ) === '0' - ? '' - : UsNumberFormat( amount )} + : UsNumberFormat(amount) === "0" + ? "" + : UsNumberFormat(amount)} {!showKeyboard && !amount && ( {`Enter amount in ${ - prefersBitcoin ? 'sats' : `${fiatCurrencyCode}` + prefersBitcoin ? "sats" : `${fiatCurrencyCode}` }`} )} @@ -1331,7 +1334,7 @@ const CreateGift = ( { navigation }: Props ) => { | @@ -1339,7 +1342,7 @@ const CreateGift = ( { navigation }: Props ) => { )} - {Number( numbersOfGift ) === 1 && ( + {Number(numbersOfGift) === 1 && ( { @@ -1366,12 +1369,12 @@ const CreateGift = ( { navigation }: Props ) => { { { style={{ color: Colors.black, fontFamily: Fonts.Regular, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), }} > - x{' '} + x{" "} {numbersOfGift} @@ -1407,9 +1410,9 @@ const CreateGift = ( { navigation }: Props ) => { style={{ color: Colors.black, fontFamily: Fonts.Regular, - fontSize: RFValue( 12 ), - marginLeft: 'auto', - marginTop: hp( '0.5%' ), + fontSize: RFValue(12), + marginLeft: "auto", + marginTop: hp("0.5%"), }} > gifts @@ -1421,17 +1424,17 @@ const CreateGift = ( { navigation }: Props ) => { @@ -1439,37 +1442,37 @@ const CreateGift = ( { navigation }: Props ) => { {prefersBitcoin ? ( - ) : materialIconCurrencyCodes.includes( fiatCurrencyCode ) ? ( + ) : materialIconCurrencyCodes.includes(fiatCurrencyCode) ? ( ) : ( @@ -1477,32 +1480,32 @@ const CreateGift = ( { navigation }: Props ) => { style={{ ...styles.cardBitCoinImage, }} - source={getCurrencyImageByRegion( fiatCurrencyCode, 'light' )} + source={getCurrencyImageByRegion(fiatCurrencyCode, "light")} /> )} {prefersBitcoin - ? UsNumberFormat( parseInt( amount ) * numbersOfGift ) - : exchangeRates && exchangeRates[ currencyCode ] - ? ( - ( ( parseInt( amount ) * numbersOfGift ) / SATOSHIS_IN_BTC ) * - exchangeRates[ currencyCode ].last - ).toFixed( 2 ) - : ''} + ? UsNumberFormat(parseInt(amount) * numbersOfGift) + : exchangeRates && exchangeRates[currencyCode] + ? ( + ((parseInt(amount) * numbersOfGift) / SATOSHIS_IN_BTC) * + exchangeRates[currencyCode].last + ).toFixed(2) + : ""} - {prefersBitcoin ? 'sats' : fiatCurrencyCode} + {prefersBitcoin ? "sats" : fiatCurrencyCode} ) : null} {/* { - {'Minimum gift value '} + {"Minimum gift value "} {prefersBitcoin ? minimumGiftValue - : convertSatsToFiat( minimumGiftValue )}{' '} - {prefersBitcoin ? 'sats' : currencyCode} + : convertSatsToFiat(minimumGiftValue)}{" "} + {prefersBitcoin ? "sats" : currencyCode} {/* */} { style={{ transform: [ { - scaleX: Platform.OS == 'ios' ? 0.5 : 0.7, + scaleX: Platform.OS == "ios" ? 0.5 : 0.7, }, { - scaleY: Platform.OS == 'ios' ? 0.5 : 0.7, + scaleY: Platform.OS == "ios" ? 0.5 : 0.7, }, ], }} trackColor={{ - false: '#C4C4C4', + false: "#C4C4C4", true: Colors.blue, }} - thumbColor={includeFees ? '#fff' : '#fff'} + thumbColor={includeFees ? "#fff" : "#fff"} ios_backgroundColor="#3e3e3e" - onValueChange={( value ) => { - setFees( value ) + onValueChange={(value) => { + setFees(value); }} /> - {'Include '} + {"Include "} - {'Fee'} + {"Fee"} - {isAmountInvalid ? strings.Insufficient : ''} + {isAmountInvalid ? strings.Insufficient : ""} { // ( Number( numbersOfGift ) === 1 ) && !isSendMax && ( - - setSatCard( !satCard )} - disabled={numbersOfGift ? Number( numbersOfGift ) < 1 : false} + + setSatCard(!satCard)} + disabled={numbersOfGift ? Number(numbersOfGift) < 1 : false} style={{ - flexDirection: 'row' + flexDirection: "row", }} > - {satCard && - - } + {satCard && ( + + )} - + Use SATSCARD™ to gift sats @@ -1625,17 +1634,17 @@ const CreateGift = ( { navigation }: Props ) => { } @@ -1645,74 +1654,74 @@ const CreateGift = ( { navigation }: Props ) => { - {Number( amount ) * numbersOfGift} + {Number(amount) * numbersOfGift} - {prefersBitcoin ? ' sats' : ` ${currencyCode}`} + {prefersBitcoin ? " sats" : ` ${currencyCode}`} {statusFlag - ? renderButton( 'Create Gifts', 'Invitation' ) + ? renderButton("Create Gifts", "Invitation") : renderButton( - numbersOfGift > 1 ? 'Create Gifts' : 'Create Gift', - 'Create Gift' - )} + numbersOfGift > 1 ? "Create Gifts" : "Create Gift", + "Create Gift" + )} {showKeyboard && ( onPressNumber( '1' )} + onPress={() => onPressNumber("1")} style={styles.keyPadElementTouchable} > onPressNumber( '1' )} + onPress={() => onPressNumber("1")} > 1 onPressNumber( '2' )} + onPress={() => onPressNumber("2")} style={styles.keyPadElementTouchable} > onPressNumber( '2' )} + onPress={() => onPressNumber("2")} > 2 onPressNumber( '3' )} + onPress={() => onPressNumber("3")} style={styles.keyPadElementTouchable} > onPressNumber( '3' )} + onPress={() => onPressNumber("3")} > 3 @@ -1720,34 +1729,34 @@ const CreateGift = ( { navigation }: Props ) => { onPressNumber( '4' )} + onPress={() => onPressNumber("4")} style={styles.keyPadElementTouchable} > onPressNumber( '4' )} + onPress={() => onPressNumber("4")} > 4 onPressNumber( '5' )} + onPress={() => onPressNumber("5")} style={styles.keyPadElementTouchable} > onPressNumber( '5' )} + onPress={() => onPressNumber("5")} > 5 onPressNumber( '6' )} + onPress={() => onPressNumber("6")} style={styles.keyPadElementTouchable} > onPressNumber( '6' )} + onPress={() => onPressNumber("6")} > 6 @@ -1755,34 +1764,34 @@ const CreateGift = ( { navigation }: Props ) => { onPressNumber( '7' )} + onPress={() => onPressNumber("7")} style={styles.keyPadElementTouchable} > onPressNumber( '7' )} + onPress={() => onPressNumber("7")} > 7 onPressNumber( '8' )} + onPress={() => onPressNumber("8")} style={styles.keyPadElementTouchable} > onPressNumber( '8' )} + onPress={() => onPressNumber("8")} > 8 onPressNumber( '9' )} + onPress={() => onPressNumber("9")} style={styles.keyPadElementTouchable} > onPressNumber( '9' )} + onPress={() => onPressNumber("9")} > 9 @@ -1798,23 +1807,23 @@ const CreateGift = ( { navigation }: Props ) => { > onPressNumber( '0' )} + onPress={() => onPressNumber("0")} style={styles.keyPadElementTouchable} > onPressNumber( '0' )} + onPress={() => onPressNumber("0")} > 0 onPressNumber( 'x' )} + onPress={() => onPressNumber("x")} style={styles.keyPadElementTouchable} > onPressNumber( 'x' )} + onPress={() => onPressNumber("x")} > { )} setAccountListModal( false )} + onBackground={() => setAccountListModal(false)} visible={accountListModal} - closeBottomSheet={() => setAccountListModal( false )} + closeBottomSheet={() => setAccountListModal(false)} > {renderAccountList()} setAdvanceModal( false )} + onBackground={() => setAdvanceModal(false)} visible={advanceModal} - closeBottomSheet={() => setAdvanceModal( false )} + closeBottomSheet={() => setAdvanceModal(false)} > {renderAdvanceModal()} setShowLoader( false )} + onBackground={() => setShowLoader(false)} visible={showLoader} - closeBottomSheet={() => setShowLoader( false )} + closeBottomSheet={() => setShowLoader(false)} > setShowLoader( false )} + onBackground={() => setShowLoader(false)} visible={showErrorLoader} > {renderErrorModal()} @@ -1869,70 +1878,70 @@ const CreateGift = ( { navigation }: Props ) => { closeBottomSheet={onCloseClick} > - ) -} + ); +}; -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ keyPadRow: { - flexDirection: 'row', - height: hp( '7%' ), + flexDirection: "row", + height: hp("7%"), }, errorText: { fontFamily: Fonts.MediumItalic, color: Colors.red, - fontSize: RFValue( 11, 812 ), - fontStyle: 'italic', + fontSize: RFValue(11, 812), + fontStyle: "italic", }, keyPadElementTouchable: { flex: 1, - height: hp( '8%' ), - fontSize: RFValue( 18 ), - justifyContent: 'center', - alignItems: 'center', + height: hp("8%"), + fontSize: RFValue(18), + justifyContent: "center", + alignItems: "center", }, keyPadElementText: { color: Colors.blue, - fontSize: RFValue( 25 ), + fontSize: RFValue(25), fontFamily: Fonts.Regular, - fontStyle: 'normal', + fontStyle: "normal", }, cardBitCoinImage: { - width: wp( '3.5%' ), - height: wp( '3.5%' ), + width: wp("3.5%"), + height: wp("3.5%"), marginRight: 5, - resizeMode: 'contain', + resizeMode: "contain", // marginBottom: wp( '0.7%' ), }, modalTitleText: { color: Colors.blue, - fontSize: RFValue( 18 ), + fontSize: RFValue(18), fontFamily: Fonts.Regular, letterSpacing: 0.54, }, modalInfoText: { color: Colors.textColorGrey, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), fontFamily: Fonts.Regular, - marginRight: wp( 10 ), + marginRight: wp(10), letterSpacing: 0.6, - marginBottom: hp( 2 ), + marginBottom: hp(2), }, modalContentContainer: { backgroundColor: Colors.backgroundColor, - paddingBottom: hp( 4 ), + paddingBottom: hp(4), }, viewContainer: { flex: 1, @@ -1940,23 +1949,23 @@ const styles = StyleSheet.create( { }, buttonText: { color: Colors.white, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Medium, }, buttonView: { - height: wp( '12%' ), - width: wp( '27%' ), - paddingHorizontal: wp( 2 ), - justifyContent: 'center', - alignItems: 'center', + height: wp("12%"), + width: wp("27%"), + paddingHorizontal: wp(2), + justifyContent: "center", + alignItems: "center", borderRadius: 8, backgroundColor: Colors.blue, }, disabledButtonView: { - height: wp( '12%' ), - width: wp( '27%' ), - justifyContent: 'center', - alignItems: 'center', + height: wp("12%"), + width: wp("27%"), + justifyContent: "center", + alignItems: "center", borderRadius: 8, backgroundColor: Colors.THEAM_TEXT_COLOR, }, @@ -1965,8 +1974,8 @@ const styles = StyleSheet.create( { height: 18, borderRadius: 9, backgroundColor: Colors.white, - justifyContent: 'center', - alignItems: 'center', + justifyContent: "center", + alignItems: "center", elevation: 6, shadowOpacity: 0.1, shadowOffset: { @@ -1976,24 +1985,24 @@ const styles = StyleSheet.create( { }, modalInputBox: { flex: 1, - fontSize: RFValue( 15 ), + fontSize: RFValue(15), color: Colors.textColorGrey, fontFamily: Fonts.Regular, backgroundColor: Colors.white, - alignSelf: 'center', + alignSelf: "center", }, inputBox: { borderWidth: 0.5, borderRadius: 10, - marginLeft: wp( '5%' ), - marginRight: wp( '5%' ), + marginLeft: wp("5%"), + marginRight: wp("5%"), backgroundColor: Colors.white, }, inputBoxFocused: { borderWidth: 0.5, borderRadius: 10, - marginLeft: wp( '5%' ), - marginRight: wp( '5%' ), + marginLeft: wp("5%"), + marginRight: wp("5%"), elevation: 10, shadowColor: Colors.borderColor, shadowOpacity: 10, @@ -2004,72 +2013,72 @@ const styles = StyleSheet.create( { backgroundColor: Colors.white, }, accImage: { - marginRight: wp( 4 ), + marginRight: wp(4), }, availableToSpendText: { color: Colors.blue, - fontSize: RFValue( 10 ), + fontSize: RFValue(10), fontFamily: Fonts.Italic, lineHeight: 15, }, balanceText: { color: Colors.blue, - fontSize: RFValue( 10 ), + fontSize: RFValue(10), fontFamily: Fonts.Italic, }, proceedButtonText: { color: Colors.blue, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Medium, }, selectedContactsView: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-around', + flexDirection: "row", + alignItems: "center", + justifyContent: "space-around", backgroundColor: Colors.blue, - borderRadius: wp( 2 ), - height: hp( 4 ), - paddingHorizontal: wp( 2 ), + borderRadius: wp(2), + height: hp(4), + paddingHorizontal: wp(2), }, contactText: { - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Regular, color: Colors.white, }, accountSelectionView: { - width: '90%', + width: "90%", // shadowOpacity: 0.06, // shadowOffset: { // width: 10, height: 10 // }, // shadowRadius: 10, // elevation: 2, - alignSelf: 'center', - marginTop: hp( 2 ), - marginBottom: hp( 2 ), + alignSelf: "center", + marginTop: hp(2), + marginBottom: hp(2), }, modalCrossButton: { - width: wp( 7 ), - height: wp( 7 ), - borderRadius: wp( 7 / 2 ), + width: wp(7), + height: wp(7), + borderRadius: wp(7 / 2), backgroundColor: Colors.CLOSE_ICON_COLOR, - alignItems: 'center', - justifyContent: 'center', - marginLeft: 'auto', + alignItems: "center", + justifyContent: "center", + marginLeft: "auto", }, homeHeaderAmountText: { fontFamily: Fonts.Regular, - fontSize: RFValue( 20 ), + fontSize: RFValue(20), marginRight: 5, color: Colors.black, }, homeHeaderAmountUnitText: { fontFamily: Fonts.Regular, - fontSize: RFValue( 11 ), + fontSize: RFValue(11), // marginBottom: 3, color: Colors.gray2, - marginTop: hp( 0.7 ), + marginTop: hp(0.7), }, -} ) +}); -export default CreateGift +export default CreateGift; From fb53a8afcf61ff99deb9d6859d4b46880a32fbf3 Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Fri, 16 Jun 2023 21:09:24 +0530 Subject: [PATCH 07/15] =?UTF-8?q?Gift=20Screen=20Test=20Script=20done=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flows/friendsAndFamily.yaml | 60 ------------------- flows/giftSats.yaml | 67 ++++++++++++++++++++++ src/pages/FriendsAndFamily/ManageGifts.tsx | 2 +- src/pages/Gift/GiftBoxCmponent.tsx | 2 +- src/pages/Gift/GiftScreen.tsx | 6 +- 5 files changed, 72 insertions(+), 65 deletions(-) delete mode 100644 flows/friendsAndFamily.yaml create mode 100644 flows/giftSats.yaml diff --git a/flows/friendsAndFamily.yaml b/flows/friendsAndFamily.yaml deleted file mode 100644 index 3e5ba69efe..0000000000 --- a/flows/friendsAndFamily.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# friendsAndFamily.yaml - -# Add friends and Family to your list to be able to send SATS easily - -appId: io.hexawallet.hexa.development ---- -- runFlow: "login.yaml" -- tapOn: Freiend, tab, 2 of 4 - -#------------------------------------------------------------ -# Create Invitation Link -#------------------------------------------------------------ - -- tapOn: - id: "+AddNewContact" -- tapOn: Anna Haro -- tapOn: - id: "confirmAndProceedButton" -- tapOn: - point: "45%,72%" - -- tapOn: - id: "secureWithContactsPhoneNumber" -- tapOn: - point: "50%,27%" -- tapOn: - point: "50%,47%" -- tapOn: - point: "50%,67%" -- tapOn: - point: "10%,90%" - -- tapOn:  - -#------------------------------------------------------------ -#Create Invitation Link with gift -#------------------------------------------------------------ - -- tapOn: - id: "+AddNewContact" -- tapOn: David Taylor -- tapOn: - id: "confirmAndProceedButton" - -- tapOn: - point: "45%,85%" - -- tapOn: Enter amount in sats -- tapOn: 1 -- tapOn: 0 -- tapOn: 0 -- tapOn: 0 -- tapOn: - text: 0 - index: 0 -- tapOn: - id: "UseSatcardToGiftSats" -- tapOn: Create Gifts -- tapOn:  -- tapOn:  diff --git a/flows/giftSats.yaml b/flows/giftSats.yaml new file mode 100644 index 0000000000..f38affc559 --- /dev/null +++ b/flows/giftSats.yaml @@ -0,0 +1,67 @@ +# giftSats.yaml + +appId: io.hexawallet.hexa.development +--- +- runFlow: "login.yaml" +- tapOn: Securiy, tab, 3 of 4 + +#------------------------------------------------------------ +# Create New Gift +#------------------------------------------------------------ + +- tapOn: + id: "createNewGiftButton" +- tapOn: + point: "45%,85%" + +- tapOn: Enter amount in sats +- tapOn: 1 +- tapOn: 0 +- tapOn: 0 +- tapOn: 0 +- tapOn: + text: 0 + index: 0 +- tapOn: + id: "UseSatcardToGiftSats" +- tapOn: Create Gift +- tapOn:  + +#------------------------------------------------------------ +# Available Gifts +#------------------------------------------------------------ + +- tapOn: + id: "availableGiftsButton" +- tapOn: Sent +- tapOn: Expired +- tapOn: Available +- tapOn: + id: "createNewButtonButton2" +- tapOn: + point: "45%,85%" + +- tapOn: Enter amount in sats +- tapOn: 1 +- tapOn: 0 +- tapOn: 0 +- tapOn: 0 +- tapOn: + text: 0 + index: 0 +- tapOn: + id: "UseSatcardToGiftSats" +- tapOn: Create Gift +- tapOn:  +- tapOn:  + +#------------------------------------------------------------ +# Claim SATSCARD +#------------------------------------------------------------ + +- tapOn: + id: "claimSatscardButton" +- tapOn: + point: "67%,86%" +- tapOn: + point: "22%,88%" \ No newline at end of file diff --git a/src/pages/FriendsAndFamily/ManageGifts.tsx b/src/pages/FriendsAndFamily/ManageGifts.tsx index 361a5a3c91..d4d1a95492 100644 --- a/src/pages/FriendsAndFamily/ManageGifts.tsx +++ b/src/pages/FriendsAndFamily/ManageGifts.tsx @@ -330,7 +330,7 @@ const ManageGifts = ( props ) => { /> } */} { active === GiftStatus.CREATED && - navigation.navigate( 'CreateGift', { setActiveTab: buttonPress } )} diff --git a/src/pages/Gift/GiftBoxCmponent.tsx b/src/pages/Gift/GiftBoxCmponent.tsx index 7408db5103..5812167c74 100644 --- a/src/pages/Gift/GiftBoxCmponent.tsx +++ b/src/pages/Gift/GiftBoxCmponent.tsx @@ -13,7 +13,7 @@ const {height} = Dimensions.get('window'); const GiftBoxComponent = ( props ) => { return ( - + {/* */} - { @@ -744,7 +744,7 @@ class GiftScreen extends React.Component< } )}} image={} /> - this.props.navigation.navigate( 'ManageGifts', { @@ -752,7 +752,7 @@ class GiftScreen extends React.Component< } )} image={} /> - Date: Fri, 30 Jun 2023 14:08:02 +0530 Subject: [PATCH 08/15] resolving conflicts --- flows/home.yaml | 12 +- .../Details/SendAndReceiveButtonsFooter.tsx | 201 ++++++++++-------- src/pages/Contacts/AddContactAddressBook.tsx | 28 +-- 3 files changed, 131 insertions(+), 110 deletions(-) diff --git a/flows/home.yaml b/flows/home.yaml index d788adaab1..479e62c884 100644 --- a/flows/home.yaml +++ b/flows/home.yaml @@ -1,11 +1,17 @@ # home.yaml -# HoDashboardme Screen +# Home Screen appId: io.hexawallet.hexa.development --- - runFlow: "login.yaml" +# Test Account + +- tapOn: + id: "HomeAccountCard" + index: 0 + # Add Lightning Wallet - tapOn: @@ -31,6 +37,6 @@ appId: io.hexawallet.hexa.development - tapOn: id: "BuyBTCButton" - tapOn: - id: "BuybitCoinButton" + id: "BuyBitcoinButton" +- tapOn: "Close" - tapOn: "Close" -- tapOn: "Close" \ No newline at end of file diff --git a/src/pages/Accounts/Details/SendAndReceiveButtonsFooter.tsx b/src/pages/Accounts/Details/SendAndReceiveButtonsFooter.tsx index a22d2c6759..f52d4bd4f5 100644 --- a/src/pages/Accounts/Details/SendAndReceiveButtonsFooter.tsx +++ b/src/pages/Accounts/Details/SendAndReceiveButtonsFooter.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react' +import React, { useMemo } from "react"; import { View, Text, @@ -6,22 +6,26 @@ import { TouchableOpacity, Image, ImageSourcePropType, -} from 'react-native' -import { RFValue } from 'react-native-responsive-fontsize' -import { heightPercentageToDP, widthPercentageToDP } from 'react-native-responsive-screen' -import Colors from '../../../common/Colors' -import CurrencyKind from '../../../common/data/enums/CurrencyKind' -import NetworkKind from '../../../common/data/enums/NetworkKind' -import Fonts from '../../../common/Fonts' -import useCurrencyCode from '../../../utils/hooks/state-selectors/UseCurrencyCode' -import useCurrencyKind from '../../../utils/hooks/state-selectors/UseCurrencyKind' -import { translations } from '../../../common/content/LocContext' -import { useSelector } from 'react-redux' -import { SATOSHIS_IN_BTC } from '../../../common/constants/Bitcoin' -import { Shadow } from 'react-native-shadow-2' +} from "react-native"; +import { RFValue } from "react-native-responsive-fontsize"; +import { + heightPercentageToDP, + widthPercentageToDP, +} from "react-native-responsive-screen"; +import Colors from "../../../common/Colors"; +import CurrencyKind from "../../../common/data/enums/CurrencyKind"; +import NetworkKind from "../../../common/data/enums/NetworkKind"; +import Fonts from "../../../common/Fonts"; +import useCurrencyCode from "../../../utils/hooks/state-selectors/UseCurrencyCode"; +import useCurrencyKind from "../../../utils/hooks/state-selectors/UseCurrencyKind"; +import { translations } from "../../../common/content/LocContext"; +import { useSelector } from "react-redux"; +import { SATOSHIS_IN_BTC } from "../../../common/constants/Bitcoin"; +import { Shadow } from "react-native-shadow-2"; type FooterButtonProps = { style?: Record; + testID: string; title: string; subtitle: string; imageSource: ImageSourcePropType; @@ -36,132 +40,144 @@ export type Props = { isTestAccount: boolean; }; -const FooterButton: React.FC = ( { - style = { - }, +const FooterButton: React.FC = ({ + style = {}, + testID, title, subtitle, imageSource, onPress, -} ) => { +}) => { return ( - - + + {title} - {subtitle ? {subtitle} : null} + {subtitle ? ( + {subtitle} + ) : null} - ) -} + ); +}; -const SendAndReceiveButtonsFooter: React.FC = ( { +const SendAndReceiveButtonsFooter: React.FC = ({ onSendPressed, onReceivePressed, averageTxFees, network, - isTestAccount -} ) => { - const exchangeRates = useSelector( - ( state ) => state.accounts.exchangeRates - ) - - const currencyKind = useCurrencyKind() - const currencyCode = useCurrencyCode() - const common = translations[ 'common' ] - const transactionFeeUnitPrefix = useMemo( () => { - if ( currencyKind == CurrencyKind.FIAT ) { - return currencyCode.toLowerCase() + isTestAccount, +}) => { + const exchangeRates = useSelector((state) => state.accounts.exchangeRates); + + const currencyKind = useCurrencyKind(); + const currencyCode = useCurrencyCode(); + const common = translations["common"]; + const transactionFeeUnitPrefix = useMemo(() => { + if (currencyKind == CurrencyKind.FIAT) { + return currencyCode.toLowerCase(); } else { - return network == NetworkKind.MAINNET ? 'sat' : 't-sat' + return network == NetworkKind.MAINNET ? "sat" : "t-sat"; } - }, [ network, currencyKind ] ) + }, [network, currencyKind]); - const prefersBitcoin = useMemo( () => { - return currencyKind === CurrencyKind.BITCOIN - }, [ currencyKind ] ) + const prefersBitcoin = useMemo(() => { + return currencyKind === CurrencyKind.BITCOIN; + }, [currencyKind]); - const transactionFeeUnitText = useMemo( () => { - if ( currencyKind == CurrencyKind.FIAT ) { - return transactionFeeUnitPrefix + const transactionFeeUnitText = useMemo(() => { + if (currencyKind == CurrencyKind.FIAT) { + return transactionFeeUnitPrefix; } - const suffix = averageTxFees && averageTxFees[ network ].low.averageTxFee == 1 ? '' : 's' + const suffix = + averageTxFees && averageTxFees[network].low.averageTxFee == 1 ? "" : "s"; - return `${transactionFeeUnitPrefix}${suffix}` - }, [ transactionFeeUnitPrefix, averageTxFees ] ) + return `${transactionFeeUnitPrefix}${suffix}`; + }, [transactionFeeUnitPrefix, averageTxFees]); return ( - + - ) -} + ); +}; -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ rootContainer: { - flexDirection: 'row', - justifyContent: 'space-around', + flexDirection: "row", + justifyContent: "space-around", }, buttonContainer: { minWidth: 150, - width: widthPercentageToDP( 42 ), + width: widthPercentageToDP(42), maxWidth: 400, - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', + flexDirection: "row", + justifyContent: "center", + alignItems: "center", paddingVertical: 10, paddingHorizontal: 20, borderRadius: 10, - borderColor: '#E3E3E3', + borderColor: "#E3E3E3", borderWidth: 1, backgroundColor: Colors.white, }, @@ -175,20 +191,19 @@ const styles = StyleSheet.create( { marginRight: 10, }, - buttonTextContainer: { - }, + buttonTextContainer: {}, buttonTitleText: { color: Colors.black, fontFamily: Fonts.Medium, - fontSize: RFValue( 15 ), + fontSize: RFValue(15), }, buttonSubtitleText: { color: Colors.textColorGrey, fontFamily: Fonts.Regular, - fontSize: RFValue( 9 ), + fontSize: RFValue(9), }, -} ) +}); -export default SendAndReceiveButtonsFooter +export default SendAndReceiveButtonsFooter; diff --git a/src/pages/Contacts/AddContactAddressBook.tsx b/src/pages/Contacts/AddContactAddressBook.tsx index 70e622f75d..47bf28f323 100644 --- a/src/pages/Contacts/AddContactAddressBook.tsx +++ b/src/pages/Contacts/AddContactAddressBook.tsx @@ -705,15 +705,15 @@ export default function AddContactAddressBook(props) { {/* {selectedContacts.length >= 1 && ( */} {filterContactData.length > 0 && ( @@ -753,10 +753,10 @@ export default function AddContactAddressBook(props) { onPress={() => onSkipContinue()} style={{ // height: wp( '8%' ), - marginTop: hp(1.8), - width: wp("25%"), - alignSelf: "flex-start", - paddingLeft: wp("8%"), + marginTop: hp( 1.8 ), + width: wp( '28%' ), + alignSelf: 'flex-start', + paddingLeft: wp( '9%' ), }} > Date: Fri, 30 Jun 2023 14:16:27 +0530 Subject: [PATCH 09/15] resolving conflicts --- .../lightningAccount/ScanNodeConfigScreen.tsx | 87 ++++++++++++++++--- 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx index 44b132dd7a..87834ee952 100644 --- a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx @@ -11,6 +11,8 @@ import { import { widthPercentageToDP as wp, heightPercentageToDP as hp, + widthPercentageToDP, + heightPercentageToDP, } from 'react-native-responsive-screen' import Colors from '../../common/Colors' import Fonts from '../../common/Fonts' @@ -23,6 +25,7 @@ import CoveredQRCodeScanner from '../../components/qr-code-scanning/CoveredQRCod import BottomInfoBox from '../../components/BottomInfoBox' import LndConnectUtils from '../../utils/ln/LndConnectUtils' import Toast from '../../components/Toast' +import Ionicons from 'react-native-vector-icons/Ionicons' const styles = StyleSheet.create( { viewContainer: { @@ -49,6 +52,49 @@ const styles = StyleSheet.create( { marginHorizontal: wp( 4 ), marginVertical: hp( '2%' ), }, + icArrow: { + marginLeft: wp( '3%' ), + marginRight: wp( '3%' ), + alignSelf: 'center', + }, + textValue: { + fontFamily: Fonts.Regular, + fontSize: RFValue( 13 ), + color: Colors.THEAM_INFO_TEXT_COLOR, + marginLeft: wp( '3%' ), + }, + textHelpUs: { + fontFamily: Fonts.SemiBold, + fontSize: RFValue( 12 ), + color: Colors.THEAM_TEXT_COLOR, + marginLeft: wp( '3%' ), + }, + textHelpUsSub: { + fontFamily: Fonts.Regular, + fontSize: RFValue( 12 ), + color: Colors.THEAM_INFO_TEXT_COLOR, + marginLeft: wp( '3%' ), + marginTop: wp( '1%' ), + }, + addModalView: { + backgroundColor: Colors.gray7, + paddingVertical: 25, + paddingHorizontal: widthPercentageToDP( 1 ), + flexDirection: 'row', + display: 'flex', + justifyContent: 'space-between', + marginTop: heightPercentageToDP( '5' ), + alignSelf: 'center', + borderRadius: widthPercentageToDP( '2' ), + marginBottom: heightPercentageToDP( '1.2' ), + shadowOpacity: 0.05, + // shadowColor: Colors.shadowColor, + shadowOffset: { + width: 10, height: 10 + }, + shadowRadius: 6, + elevation: 6, + }, } ) @@ -150,7 +196,7 @@ export default function ScanNodeConfig( { navigation } ) { marginBottom: 16 }} /> - { @@ -158,21 +204,38 @@ export default function ScanNodeConfig( { navigation } ) { }} > {strings.Entermanually} - + */} - { navigation.navigate( 'EnterNodeConfig' ) }} - title={strings.Entermanually} - // infoText={strings.NoLNDnodeSub} - infoText={'Customize your set up'} - /> + activeOpacity={0.6} + style={styles.addModalView + } + > + + + {strings.Entermanually} + + + {'Customize your set up'} + + + + From 8c43043b57d3e96415fda86f06f4f88616ed2d4a Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Fri, 30 Jun 2023 14:17:25 +0530 Subject: [PATCH 10/15] resolving conflicts --- .../lightningAccount/ScanNodeConfigScreen.tsx | 236 +++++++++--------- 1 file changed, 116 insertions(+), 120 deletions(-) diff --git a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx index 87834ee952..650e322830 100644 --- a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useContext } from 'react' +import React, { useState, useEffect, useContext } from "react"; import { View, StyleSheet, @@ -7,41 +7,41 @@ import { Text, StatusBar, ScrollView, -} from 'react-native' +} from "react-native"; import { widthPercentageToDP as wp, heightPercentageToDP as hp, widthPercentageToDP, heightPercentageToDP, -} from 'react-native-responsive-screen' -import Colors from '../../common/Colors' -import Fonts from '../../common/Fonts' -import CommonStyles from '../../common/Styles/Styles' -import FontAwesome from 'react-native-vector-icons/FontAwesome' -import { RFValue } from 'react-native-responsive-fontsize' -import { LocalizationContext } from '../../common/content/LocContext' -import HeaderTitle1 from '../../components/HeaderTitle1' -import CoveredQRCodeScanner from '../../components/qr-code-scanning/CoveredQRCodeScanner' -import BottomInfoBox from '../../components/BottomInfoBox' -import LndConnectUtils from '../../utils/ln/LndConnectUtils' -import Toast from '../../components/Toast' -import Ionicons from 'react-native-vector-icons/Ionicons' +} from "react-native-responsive-screen"; +import Colors from "../../common/Colors"; +import Fonts from "../../common/Fonts"; +import CommonStyles from "../../common/Styles/Styles"; +import FontAwesome from "react-native-vector-icons/FontAwesome"; +import { RFValue } from "react-native-responsive-fontsize"; +import { LocalizationContext } from "../../common/content/LocContext"; +import HeaderTitle1 from "../../components/HeaderTitle1"; +import CoveredQRCodeScanner from "../../components/qr-code-scanning/CoveredQRCodeScanner"; +import BottomInfoBox from "../../components/BottomInfoBox"; +import LndConnectUtils from "../../utils/ln/LndConnectUtils"; +import Toast from "../../components/Toast"; +import Ionicons from "react-native-vector-icons/Ionicons"; -const styles = StyleSheet.create( { +const styles = StyleSheet.create({ viewContainer: { flex: 1, backgroundColor: Colors.LIGHT_BACKGROUND, }, buttonText: { color: Colors.white, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), fontFamily: Fonts.Medium, }, buttonView: { - height: wp( '12%' ), - paddingHorizontal: wp( 2 ), - justifyContent: 'center', - alignItems: 'center', + height: wp("12%"), + paddingHorizontal: wp(2), + justifyContent: "center", + alignItems: "center", borderRadius: 8, // shadowColor: Colors.shadowBlue, // shadowOpacity: 1, @@ -49,118 +49,124 @@ const styles = StyleSheet.create( { // width: 15, height: 15 // }, backgroundColor: Colors.blue, - marginHorizontal: wp( 4 ), - marginVertical: hp( '2%' ), + marginHorizontal: wp(4), + marginVertical: hp("2%"), }, icArrow: { - marginLeft: wp( '3%' ), - marginRight: wp( '3%' ), - alignSelf: 'center', + marginLeft: wp("3%"), + marginRight: wp("3%"), + alignSelf: "center", }, textValue: { fontFamily: Fonts.Regular, - fontSize: RFValue( 13 ), + fontSize: RFValue(13), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp( '3%' ), + marginLeft: wp("3%"), }, textHelpUs: { fontFamily: Fonts.SemiBold, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), color: Colors.THEAM_TEXT_COLOR, - marginLeft: wp( '3%' ), + marginLeft: wp("3%"), }, textHelpUsSub: { fontFamily: Fonts.Regular, - fontSize: RFValue( 12 ), + fontSize: RFValue(12), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp( '3%' ), - marginTop: wp( '1%' ), + marginLeft: wp("3%"), + marginTop: wp("1%"), }, addModalView: { backgroundColor: Colors.gray7, paddingVertical: 25, - paddingHorizontal: widthPercentageToDP( 1 ), - flexDirection: 'row', - display: 'flex', - justifyContent: 'space-between', - marginTop: heightPercentageToDP( '5' ), - alignSelf: 'center', - borderRadius: widthPercentageToDP( '2' ), - marginBottom: heightPercentageToDP( '1.2' ), + paddingHorizontal: widthPercentageToDP(1), + flexDirection: "row", + display: "flex", + justifyContent: "space-between", + marginTop: heightPercentageToDP("5"), + alignSelf: "center", + borderRadius: widthPercentageToDP("2"), + marginBottom: heightPercentageToDP("1.2"), shadowOpacity: 0.05, // shadowColor: Colors.shadowColor, shadowOffset: { - width: 10, height: 10 + width: 10, + height: 10, }, shadowRadius: 6, elevation: 6, }, -} ) +}); +export default function ScanNodeConfig({ navigation }) { + const { translations } = useContext(LocalizationContext); + const strings = translations["lightningAccount"]; + const common = translations["common"]; + const [knowMore, setKnowMore] = useState(true); -export default function ScanNodeConfig( { navigation } ) { - const { translations } = useContext( LocalizationContext ) - const strings = translations[ 'lightningAccount' ] - const common = translations[ 'common' ] - const [ knowMore, setKnowMore ] = useState( true ) - - async function handleBarcodeRecognized( { data: scannedData }: { data: string } ) { - if( scannedData.includes( 'config' ) ){ - const url = scannedData.split( 'config=' )[ 1 ] - LndConnectUtils.procesBtcPayConfig( url ).then( - res=> { - console.log( res ) - const { - uri, - macaroon, - chainType, - port - } = res.configurations[ 0 ] - if ( uri && macaroon ) { - navigation.navigate( 'EnterNodeConfig', { + async function handleBarcodeRecognized({ + data: scannedData, + }: { + data: string; + }) { + if (scannedData.includes("config")) { + const url = scannedData.split("config=")[1]; + LndConnectUtils.procesBtcPayConfig(url) + .then((res) => { + console.log(res); + const { uri, macaroon, chainType, port } = res.configurations[0]; + if (uri && macaroon) { + navigation.navigate("EnterNodeConfig", { node: { - host: uri, port, macaroonHex: macaroon + host: uri, + port, + macaroonHex: macaroon, }, - } ) + }); } else { - Toast( 'Error fetching config' ) + Toast("Error fetching config"); } - } - ).catch( e=> { - console.log( e ) - Toast( 'Error fetching config' ) - - } ) + }) + .catch((e) => { + console.log(e); + Toast("Error fetching config"); + }); } else { - const { - host, - port, - macaroonHex - } = LndConnectUtils.processLndConnectUrl( scannedData ) - if( host && macaroonHex ) { - navigation.navigate( 'EnterNodeConfig', { + const { host, port, macaroonHex } = + LndConnectUtils.processLndConnectUrl(scannedData); + if (host && macaroonHex) { + navigation.navigate("EnterNodeConfig", { node: { - host: host, port: port, macaroonHex: macaroonHex + host: host, + port: port, + macaroonHex: macaroonHex, }, - } ) + }); } else { - Toast( 'Invalid QR' ) + Toast("Invalid QR"); } } } return ( - - - + + { - navigation.goBack() + navigation.goBack(); }} > @@ -171,29 +177,29 @@ export default function ScanNodeConfig( { navigation } ) { /> - + keyboardShouldPersistTaps="handled" + > {/* {strings.Entermanually} */} - { - navigation.navigate( 'EnterNodeConfig' ) + navigation.navigate("EnterNodeConfig"); }} activeOpacity={0.6} - style={styles.addModalView - } + style={styles.addModalView} > - - - {strings.Entermanually} - - - {'Customize your set up'} - + + {strings.Entermanually} + {"Customize your set up"} - - - ) + ); } From 8aa7ec10222186e70f12950fe9f4d19f6dd00cca Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Fri, 30 Jun 2023 14:19:29 +0530 Subject: [PATCH 11/15] resolving conflicts --- .../lightningAccount/ScanNodeConfigScreen.tsx | 108 +++++++++--------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx index 650e322830..0b107aa3af 100644 --- a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useContext } from "react"; +import React, { useState, useEffect, useContext } from 'react'; import { View, StyleSheet, @@ -7,25 +7,25 @@ import { Text, StatusBar, ScrollView, -} from "react-native"; +} from 'react-native'; import { widthPercentageToDP as wp, heightPercentageToDP as hp, widthPercentageToDP, heightPercentageToDP, -} from "react-native-responsive-screen"; -import Colors from "../../common/Colors"; -import Fonts from "../../common/Fonts"; -import CommonStyles from "../../common/Styles/Styles"; -import FontAwesome from "react-native-vector-icons/FontAwesome"; -import { RFValue } from "react-native-responsive-fontsize"; -import { LocalizationContext } from "../../common/content/LocContext"; -import HeaderTitle1 from "../../components/HeaderTitle1"; -import CoveredQRCodeScanner from "../../components/qr-code-scanning/CoveredQRCodeScanner"; -import BottomInfoBox from "../../components/BottomInfoBox"; -import LndConnectUtils from "../../utils/ln/LndConnectUtils"; -import Toast from "../../components/Toast"; -import Ionicons from "react-native-vector-icons/Ionicons"; +} from 'react-native-responsive-screen'; +import Colors from '../../common/Colors'; +import Fonts from '../../common/Fonts'; +import CommonStyles from '../../common/Styles/Styles'; +import FontAwesome from 'react-native-vector-icons/FontAwesome'; +import { RFValue } from 'react-native-responsive-fontsize'; +import { LocalizationContext } from '../../common/content/LocContext'; +import HeaderTitle1 from '../../components/HeaderTitle1'; +import CoveredQRCodeScanner from '../../components/qr-code-scanning/CoveredQRCodeScanner'; +import BottomInfoBox from '../../components/BottomInfoBox'; +import LndConnectUtils from '../../utils/ln/LndConnectUtils'; +import Toast from '../../components/Toast'; +import Ionicons from 'react-native-vector-icons/Ionicons'; const styles = StyleSheet.create({ viewContainer: { @@ -38,10 +38,10 @@ const styles = StyleSheet.create({ fontFamily: Fonts.Medium, }, buttonView: { - height: wp("12%"), + height: wp('12%'), paddingHorizontal: wp(2), - justifyContent: "center", - alignItems: "center", + justifyContent: 'center', + alignItems: 'center', borderRadius: 8, // shadowColor: Colors.shadowBlue, // shadowOpacity: 1, @@ -50,43 +50,43 @@ const styles = StyleSheet.create({ // }, backgroundColor: Colors.blue, marginHorizontal: wp(4), - marginVertical: hp("2%"), + marginVertical: hp('2%'), }, icArrow: { - marginLeft: wp("3%"), - marginRight: wp("3%"), - alignSelf: "center", + marginLeft: wp('3%'), + marginRight: wp('3%'), + alignSelf: 'center', }, textValue: { fontFamily: Fonts.Regular, fontSize: RFValue(13), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp("3%"), + marginLeft: wp('3%'), }, textHelpUs: { fontFamily: Fonts.SemiBold, fontSize: RFValue(12), color: Colors.THEAM_TEXT_COLOR, - marginLeft: wp("3%"), + marginLeft: wp('3%'), }, textHelpUsSub: { fontFamily: Fonts.Regular, fontSize: RFValue(12), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp("3%"), - marginTop: wp("1%"), + marginLeft: wp('3%'), + marginTop: wp('1%'), }, addModalView: { backgroundColor: Colors.gray7, paddingVertical: 25, paddingHorizontal: widthPercentageToDP(1), - flexDirection: "row", - display: "flex", - justifyContent: "space-between", - marginTop: heightPercentageToDP("5"), - alignSelf: "center", - borderRadius: widthPercentageToDP("2"), - marginBottom: heightPercentageToDP("1.2"), + flexDirection: 'row', + display: 'flex', + justifyContent: 'space-between', + marginTop: heightPercentageToDP('5'), + alignSelf: 'center', + borderRadius: widthPercentageToDP('2'), + marginBottom: heightPercentageToDP('1.2'), shadowOpacity: 0.05, // shadowColor: Colors.shadowColor, shadowOffset: { @@ -100,8 +100,8 @@ const styles = StyleSheet.create({ export default function ScanNodeConfig({ navigation }) { const { translations } = useContext(LocalizationContext); - const strings = translations["lightningAccount"]; - const common = translations["common"]; + const strings = translations['lightningAccount']; + const common = translations['common']; const [knowMore, setKnowMore] = useState(true); async function handleBarcodeRecognized({ @@ -109,14 +109,14 @@ export default function ScanNodeConfig({ navigation }) { }: { data: string; }) { - if (scannedData.includes("config")) { - const url = scannedData.split("config=")[1]; + if (scannedData.includes('config')) { + const url = scannedData.split('config=')[1]; LndConnectUtils.procesBtcPayConfig(url) .then((res) => { console.log(res); const { uri, macaroon, chainType, port } = res.configurations[0]; if (uri && macaroon) { - navigation.navigate("EnterNodeConfig", { + navigation.navigate('EnterNodeConfig', { node: { host: uri, port, @@ -124,18 +124,18 @@ export default function ScanNodeConfig({ navigation }) { }, }); } else { - Toast("Error fetching config"); + Toast('Error fetching config'); } }) .catch((e) => { console.log(e); - Toast("Error fetching config"); + Toast('Error fetching config'); }); } else { const { host, port, macaroonHex } = LndConnectUtils.processLndConnectUrl(scannedData); if (host && macaroonHex) { - navigation.navigate("EnterNodeConfig", { + navigation.navigate('EnterNodeConfig', { node: { host: host, port: port, @@ -143,7 +143,7 @@ export default function ScanNodeConfig({ navigation }) { }, }); } else { - Toast("Invalid QR"); + Toast('Invalid QR'); } } } @@ -152,7 +152,7 @@ export default function ScanNodeConfig({ navigation }) { @@ -179,21 +179,21 @@ export default function ScanNodeConfig({ navigation }) { { - navigation.navigate("EnterNodeConfig"); + navigation.navigate('EnterNodeConfig'); }} activeOpacity={0.6} style={styles.addModalView} @@ -225,10 +225,10 @@ export default function ScanNodeConfig({ navigation }) { }} > {strings.Entermanually} - {"Customize your set up"} + {'Customize your set up'} Date: Fri, 30 Jun 2023 14:24:38 +0530 Subject: [PATCH 12/15] resolving conflicts --- .../lightningAccount/ScanNodeConfigScreen.tsx | 85 ++++++++++--------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx index 0b107aa3af..b47b52693a 100644 --- a/src/pages/lightningAccount/ScanNodeConfigScreen.tsx +++ b/src/pages/lightningAccount/ScanNodeConfigScreen.tsx @@ -13,19 +13,19 @@ import { heightPercentageToDP as hp, widthPercentageToDP, heightPercentageToDP, -} from 'react-native-responsive-screen'; -import Colors from '../../common/Colors'; -import Fonts from '../../common/Fonts'; -import CommonStyles from '../../common/Styles/Styles'; -import FontAwesome from 'react-native-vector-icons/FontAwesome'; -import { RFValue } from 'react-native-responsive-fontsize'; -import { LocalizationContext } from '../../common/content/LocContext'; -import HeaderTitle1 from '../../components/HeaderTitle1'; -import CoveredQRCodeScanner from '../../components/qr-code-scanning/CoveredQRCodeScanner'; -import BottomInfoBox from '../../components/BottomInfoBox'; -import LndConnectUtils from '../../utils/ln/LndConnectUtils'; -import Toast from '../../components/Toast'; -import Ionicons from 'react-native-vector-icons/Ionicons'; +} from 'react-native-responsive-screen' +import Colors from '../../common/Colors' +import Fonts from '../../common/Fonts' +import CommonStyles from '../../common/Styles/Styles' +import FontAwesome from 'react-native-vector-icons/FontAwesome' +import { RFValue } from 'react-native-responsive-fontsize' +import { LocalizationContext } from '../../common/content/LocContext' +import HeaderTitle1 from '../../components/HeaderTitle1' +import CoveredQRCodeScanner from '../../components/qr-code-scanning/CoveredQRCodeScanner' +import BottomInfoBox from '../../components/BottomInfoBox' +import LndConnectUtils from '../../utils/ln/LndConnectUtils' +import Toast from '../../components/Toast' +import Ionicons from 'react-native-vector-icons/Ionicons' const styles = StyleSheet.create({ viewContainer: { @@ -53,50 +53,50 @@ const styles = StyleSheet.create({ marginVertical: hp('2%'), }, icArrow: { - marginLeft: wp('3%'), - marginRight: wp('3%'), + marginLeft: wp( '3%' ), + marginRight: wp( '3%' ), alignSelf: 'center', }, textValue: { fontFamily: Fonts.Regular, - fontSize: RFValue(13), + fontSize: RFValue( 13 ), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp('3%'), + marginLeft: wp( '3%' ), }, textHelpUs: { fontFamily: Fonts.SemiBold, - fontSize: RFValue(12), + fontSize: RFValue( 12 ), color: Colors.THEAM_TEXT_COLOR, - marginLeft: wp('3%'), + marginLeft: wp( '3%' ), }, textHelpUsSub: { fontFamily: Fonts.Regular, - fontSize: RFValue(12), + fontSize: RFValue( 12 ), color: Colors.THEAM_INFO_TEXT_COLOR, - marginLeft: wp('3%'), - marginTop: wp('1%'), + marginLeft: wp( '3%' ), + marginTop: wp( '1%' ), }, addModalView: { backgroundColor: Colors.gray7, paddingVertical: 25, - paddingHorizontal: widthPercentageToDP(1), + paddingHorizontal: widthPercentageToDP( 1 ), flexDirection: 'row', display: 'flex', justifyContent: 'space-between', - marginTop: heightPercentageToDP('5'), + marginTop: heightPercentageToDP( '5' ), alignSelf: 'center', - borderRadius: widthPercentageToDP('2'), - marginBottom: heightPercentageToDP('1.2'), + borderRadius: widthPercentageToDP( '2' ), + marginBottom: heightPercentageToDP( '1.2' ), shadowOpacity: 0.05, // shadowColor: Colors.shadowColor, shadowOffset: { - width: 10, - height: 10, + width: 10, height: 10 }, shadowRadius: 6, elevation: 6, }, -}); +} ) + export default function ScanNodeConfig({ navigation }) { const { translations } = useContext(LocalizationContext); @@ -202,7 +202,7 @@ export default function ScanNodeConfig({ navigation }) { marginBottom: 16, }} /> - {/* { @@ -211,21 +211,28 @@ export default function ScanNodeConfig({ navigation }) { > {strings.Entermanually} */} - { navigation.navigate('EnterNodeConfig'); }} activeOpacity={0.6} - style={styles.addModalView} + style={styles.addModalView + } > - - {strings.Entermanually} - {'Customize your set up'} + + + {strings.Entermanually} + + + {'Customize your set up'} + Date: Wed, 19 Jul 2023 15:07:56 +0530 Subject: [PATCH 13/15] settings page added --- flows/settings.yaml | 100 ++++++++++++++++++ .../AppBottomSheetTouchableWrapper.tsx | 2 +- .../MoreOptionsContainerScreen.tsx | 5 +- .../PersonalNodeConnectionForm.tsx | 5 +- .../PersonalNodeDetailsSection.tsx | 2 +- .../PersonalNodeSettingsHeader.tsx | 1 + .../WalletSettingsContainerScreen.tsx | 2 +- 7 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 flows/settings.yaml diff --git a/flows/settings.yaml b/flows/settings.yaml new file mode 100644 index 0000000000..6134a41423 --- /dev/null +++ b/flows/settings.yaml @@ -0,0 +1,100 @@ +# settings.yaml + +appId: io.hexawallet.hexa.development +--- +- runFlow: "login.yaml" +- tapOn: Setting, tab, 4 of 4 + +# ------------ Wallet Backup -------------- + +- tapOn: + id: SettingsButton + index: 0 +- tapOn: + point: "24%,87%" +- tapOn: 01 ******** +- tapOn: 02 ******** +- tapOn: 03 ******** +- tapOn: 04 ******** +- tapOn: Back +- tapOn: + point: 7%,11% + +# ------------ Account Management -------------- + +- tapOn: + id: SettingsButton + index: 1 +- tapOn: + point: "7%,11%" + +# ------------ Node Settings -------------- + +- tapOn: + id: SettingsButton + index: 2 +- tapOn: + id: SetupPersonalNodeAddButton +- tapOn: + id: RNE__Input__text-input + index: 0 +- inputText: "Sample Node Address" +- tapOn: + id: RNE__Input__text-input + index: 1 +- inputText: "Sample Port Number" +- tapOn: + id: UseSSLNodeSwitch +- tapOn: + id: CloseSetupPersonalNodeButton +- extendedWaitUntil: + visible: + id: SetupPersonalNodeAddButton # or any other selector + timeout: 400000 # Timeout in milliseconds +- tapOn:  + +# ------------ Wallet Settings -------------- + +- tapOn: + id: SettingsButton + index: 3 +- tapOn: + id: WalletSettingsOptions + index: 1 +- tapOn: $ USD  +- tapOn: ₹ INR +- tapOn:  +- tapOn: + id: WalletSettingsOptions + index: 0 +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +- tapOn: Proceed +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" +- tapOn: Proceed +- tapOn: View Settings + +# ------------ App Info -------------- + +- tapOn: + id: SettingsButton + index: 4 +- tapOn:  + +# # ------------ FAQ -------------- +# - tapOn: +# id: faqButton + +# # ------------ TG Group -------------- + +# - tapOn: +# id: btTelegram diff --git a/src/components/AppBottomSheetTouchableWrapper.tsx b/src/components/AppBottomSheetTouchableWrapper.tsx index 1d72f3d8ae..55914ab996 100644 --- a/src/components/AppBottomSheetTouchableWrapper.tsx +++ b/src/components/AppBottomSheetTouchableWrapper.tsx @@ -11,7 +11,7 @@ import React, { ReactNode } from 'react' * `@gorhom/bottom-sheet` across the app. */ export const AppBottomSheetTouchableWrapper = ( - props: { children: ReactNode } & Pick, + props: { children: ReactNode } & Pick, ) => Platform.select( { android: , diff --git a/src/pages/MoreOptions/MoreOptionsContainerScreen.tsx b/src/pages/MoreOptions/MoreOptionsContainerScreen.tsx index 8c788d5a35..ab7260c29e 100644 --- a/src/pages/MoreOptions/MoreOptionsContainerScreen.tsx +++ b/src/pages/MoreOptions/MoreOptionsContainerScreen.tsx @@ -425,6 +425,7 @@ const MoreOptionsContainerScreen: React.FC = ( { navigation }: Props ) => // )} renderItem={( { item: menuOption }: { item: MenuOption } ) => { return handleOptionSelection( menuOption )} style={[ styles.addModalView, ( ( levelData[ 0 ].keeper1.status == 'notSetup' || @@ -493,7 +494,7 @@ const MoreOptionsContainerScreen: React.FC = ( { navigation }: Props ) => }} /> - { Linking.openURL( 'https://bitcointribe.app/faq/' ) .then( ( _data ) => { } ) @@ -525,7 +526,7 @@ const MoreOptionsContainerScreen: React.FC = ( { navigation }: Props ) => }} /> - { Linking.openURL( 'https://t.me/bitcoinTribe_' ) .then( ( _data ) => { } ) diff --git a/src/pages/MoreOptions/NodeSettings/PersonalNodeConnectionForm.tsx b/src/pages/MoreOptions/NodeSettings/PersonalNodeConnectionForm.tsx index 668f8103b2..4e51c31d11 100644 --- a/src/pages/MoreOptions/NodeSettings/PersonalNodeConnectionForm.tsx +++ b/src/pages/MoreOptions/NodeSettings/PersonalNodeConnectionForm.tsx @@ -92,7 +92,7 @@ const PersonalNodeConnectionForm: React.FC = ( { params, onSubmit, onClos }}> {strings.SetupPersonal} - + = ( { params, onSubmit, onClos = ( { params, onSubmit, onClos - + = ( { }}> {strings.PersonalNodeDetails} - + = ( { = ( { navigation, }: Props {menuOptions.map( ( menuOption, index ) => { return ( - handleOptionSelection( menuOption )} style={styles.selectedContactsView} key={index} From 90551794b3f24c556a616b35e9be777607a4bdcc Mon Sep 17 00:00:00 2001 From: Raihan Khan Date: Fri, 18 Aug 2023 18:30:34 +0530 Subject: [PATCH 14/15] added recovery userflow and notification and scan qr button --- flows/home.yaml | 58 +++++++++++++ flows/recovery.yaml | 94 ++++++++++++++++++++++ flows/signup.yaml | 12 --- src/components/home/home-header_update.tsx | 4 +- src/pages/Home/HomeQRScannerScreen.tsx | 2 +- src/pages/Home/ReceiveQrScreen.tsx | 2 +- src/pages/WalletInitializationScreen.tsx | 6 +- 7 files changed, 159 insertions(+), 19 deletions(-) create mode 100644 flows/recovery.yaml delete mode 100644 flows/signup.yaml diff --git a/flows/home.yaml b/flows/home.yaml index 479e62c884..0e8025e5a1 100644 --- a/flows/home.yaml +++ b/flows/home.yaml @@ -40,3 +40,61 @@ appId: io.hexawallet.hexa.development id: "BuyBitcoinButton" - tapOn: "Close" - tapOn: "Close" + +- tapOn: + id: notificationButton +- tapOn: + point: "91%,34%" + +- tapOn: + id: navigateToQRScreen +- tapOn: + id: RNE__Input__text-input +- inputText: "1hsmMidMUjZt29p1eZik9Z83kMPos315Y" +- tapOn: Send Max +- inputText: "1" +- tapOn: Confirm & Proceed +- tapOn: Confirm & Send +- tapOn: + point: "63%,89%" +- tapOn:  + +- tapOn: + id: navigateToQRScreen +- tapOn: + id: receiveBitcoinButton +- tapOn: + id: enterAmountToReceive +- tapOn: + point: "26%,77%" +- inputText: 10 +- tapOn: + id: notificationButton +- tapOn: + point: "91%,34%" + +- tapOn: + id: navigateToQRScreen +- tapOn: + id: RNE__Input__text-input +- inputText: "1hsmMidMUjZt29p1eZik9Z83kMPos315Y" +- tapOn: Send Max +- inputText: "1" +- tapOn: Confirm & Proceed +- tapOn: Confirm & Send +- tapOn: + point: "63%,89%" +- tapOn:  + +- tapOn: + id: navigateToQRScreen +- tapOn: + id: receiveBitcoinButton +# - tapOn: +# id: enterAmountToReceive +# - tapOn: +# point: "26%,77%" +# - inputText: 10 +# - tapOn: +# point: "26%,59%" + diff --git a/flows/recovery.yaml b/flows/recovery.yaml new file mode 100644 index 0000000000..9d45ded62f --- /dev/null +++ b/flows/recovery.yaml @@ -0,0 +1,94 @@ +# signup.yaml + +# First time login + +appId: io.hexawallet.hexa.development +--- +- launchApp +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" + +- tapOn: "1" +- tapOn: "2" +- tapOn: "3" +- tapOn: "4" + +- tapOn: Proceed + + +# --------- Recovery Using BackUp Phrase ----------- + +- tapOn: + id: UsingBackupPhraseButton + +- tapOn: "01 Enter 1st word" +- inputText: "muffin" +- pressKey: Enter + +- tapOn: 02 Enter 2nd word +- inputText: "jeans" +- pressKey: Enter + +- tapOn: 03 Enter 3rd word +- inputText: "other" +- pressKey: Enter + +- tapOn: 04 Enter 4th word +- inputText: "year" +- pressKey: Enter + +- tapOn: 05 Enter 5th word +- inputText: "rare" +- pressKey: Enter + +- tapOn: 06 Enter 6th word +- inputText: "prevent" +- pressKey: Enter + +- tapOn: Next + +- tapOn: "07 Enter 7th word" +- inputText: "message" +- pressKey: Enter + +- tapOn: 08 Enter 8th word +- inputText: "symbol" +- pressKey: Enter + +- tapOn: 09 Enter 9th word +- inputText: "pulse" +- pressKey: Enter + +- tapOn: 10 Enter 10th word +- inputText: "fine" +- pressKey: Enter + +- tapOn: 11 Enter 11th word +- inputText: "midnight" +- pressKey: Enter + +- tapOn: 12 Enter 12th word +- inputText: "solar" +- pressKey: Enter + +- tapOn: Proceed + +# --------- Recovery Using Recovery Keys ----------- + +- tapOn: + id: UsingRecoveryKeysButton +- tapOn: + point: "50%,85%" + +# --------- Start witha new Tribe Wallet ----------- + +- tapOn: + id: StartWithANewTribeWalletButton + +- tapOn: + point: 50%,28% +- inputText: "Test" +- pressKey: Enter +- tapOn: Proceed \ No newline at end of file diff --git a/flows/signup.yaml b/flows/signup.yaml deleted file mode 100644 index 3a33ef64ab..0000000000 --- a/flows/signup.yaml +++ /dev/null @@ -1,12 +0,0 @@ -# signup.yaml - -# First time login - -appId: io.hexawallet.hexa.development ---- -- runFlow: "login.yaml" -- tapOn: Using Backup phrase  -- tapOn: Start with a new Tribe Wallet wallet  -- tapOn: Start with a new Tribe Wallet wallet  -- inputText: "TestWallet" -- tapOn: Proceed \ No newline at end of file diff --git a/src/components/home/home-header_update.tsx b/src/components/home/home-header_update.tsx index 585f7ba8e7..c5663920af 100644 --- a/src/components/home/home-header_update.tsx +++ b/src/components/home/home-header_update.tsx @@ -433,7 +433,7 @@ const HomeHeader = ( { - - = ( { navigation, }: Props ) => { Import From Gallery */} -