diff --git a/android/app/build.gradle b/android/app/build.gradle index d305a864de..04865ed2b2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -168,15 +168,14 @@ android { } dependencies { + implementation project(':react-native-secure-storage') + implementation project(':react-native-gesture-handler') implementation project(':react-native-svg') - implementation project(':react-native-randombytes') implementation project(':@react-native-community_netinfo') - implementation project(':react-native-camera') - implementation project(':react-native-secure-storage') + implementation project(':react-native-randombytes') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'com.facebook.react:react-native:0.60.3' - implementation project(':react-native-gesture-handler') if (useIntlJsc) { implementation 'org.webkit:android-jsc-intl:+' diff --git a/android/app/src/main/assets/fonts/Manifold-CF-Bold.otf b/android/app/src/main/assets/fonts/Manifold-CF-Bold.otf new file mode 100755 index 0000000000..0cfd1a8f68 Binary files /dev/null and b/android/app/src/main/assets/fonts/Manifold-CF-Bold.otf differ diff --git a/android/app/src/main/assets/fonts/Manifold-CF-Demi-Bold.otf b/android/app/src/main/assets/fonts/Manifold-CF-Demi-Bold.otf new file mode 100755 index 0000000000..1e193816f8 Binary files /dev/null and b/android/app/src/main/assets/fonts/Manifold-CF-Demi-Bold.otf differ diff --git a/android/app/src/main/assets/fonts/Manifold-CF-Extra-Bold.otf b/android/app/src/main/assets/fonts/Manifold-CF-Extra-Bold.otf new file mode 100755 index 0000000000..86539a4604 Binary files /dev/null and b/android/app/src/main/assets/fonts/Manifold-CF-Extra-Bold.otf differ diff --git a/android/app/src/main/assets/fonts/Manifold-CF-Light.otf b/android/app/src/main/assets/fonts/Manifold-CF-Light.otf new file mode 100755 index 0000000000..7d595aea98 Binary files /dev/null and b/android/app/src/main/assets/fonts/Manifold-CF-Light.otf differ diff --git a/android/app/src/main/assets/fonts/Manifold-CF.otf b/android/app/src/main/assets/fonts/Manifold-CF.otf new file mode 100755 index 0000000000..98318acba0 Binary files /dev/null and b/android/app/src/main/assets/fonts/Manifold-CF.otf differ diff --git a/android/app/src/main/java/io/parity/signer/MainActivity.java b/android/app/src/main/java/io/parity/signer/MainActivity.java index 54b3f5a6f5..334e6d8adc 100644 --- a/android/app/src/main/java/io/parity/signer/MainActivity.java +++ b/android/app/src/main/java/io/parity/signer/MainActivity.java @@ -32,10 +32,9 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, getMainComponentName()) { - @Override protected ReactRootView createRootView() { - return new RNGestureHandlerEnabledRootView(MainActivity.this); + return new RNGestureHandlerEnabledRootView(MainActivity.this); } }; } diff --git a/android/app/src/main/java/io/parity/signer/MainApplication.java b/android/app/src/main/java/io/parity/signer/MainApplication.java index 2555ed7b46..263d9c79ec 100644 --- a/android/app/src/main/java/io/parity/signer/MainApplication.java +++ b/android/app/src/main/java/io/parity/signer/MainApplication.java @@ -3,17 +3,16 @@ import android.app.Application; import com.facebook.react.ReactApplication; +import com.reactlibrary.RNSecureStoragePackage; +import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; import com.horcrux.svg.SvgPackage; import com.bitgo.randombytes.RandomBytesPackage; import com.reactnativecommunity.netinfo.NetInfoPackage; -import org.reactnative.camera.RNCameraPackage; -import com.reactlibrary.RNSecureStoragePackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; import com.facebook.soloader.SoLoader; -import com.swmansion.gesturehandler.react.RNGestureHandlerPackage; import java.util.Arrays; import java.util.List; @@ -30,11 +29,10 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), - new SvgPackage(), - new RandomBytesPackage(), - new NetInfoPackage(), - new RNCameraPackage(), new RNSecureStoragePackage(), + new SvgPackage(), + new NetInfoPackage(), + new RandomBytesPackage(), new EthkeyBridgePackage(), new RNGestureHandlerPackage() ); diff --git a/android/build.gradle b/android/build.gradle index 3fe0bfd85b..68347d37a3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -47,4 +47,4 @@ subprojects { } } } -} +} \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index c6515cea84..f01553aa5a 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,14 +1,14 @@ rootProject.name = 'Parity Signer' +include ':react-native-secure-storage' +project(':react-native-secure-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-secure-storage/android') +include ':react-native-gesture-handler' +project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android') include ':react-native-svg' project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android') -include ':react-native-randombytes' -project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') include ':@react-native-community_netinfo' project(':@react-native-community_netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android') -include ':react-native-camera' -project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') -include ':react-native-secure-storage' -project(':react-native-secure-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-secure-storage/android') +include ':react-native-randombytes' +project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' diff --git a/ios/NativeSigner.xcodeproj/project.pbxproj b/ios/NativeSigner.xcodeproj/project.pbxproj index d806d5902e..0713fba218 100644 --- a/ios/NativeSigner.xcodeproj/project.pbxproj +++ b/ios/NativeSigner.xcodeproj/project.pbxproj @@ -31,9 +31,12 @@ 1F426F9C208D358500CA43DB /* EthkeyBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F426F99208D358500CA43DB /* EthkeyBridge.swift */; }; 1F426F9D208D358500CA43DB /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F426F9A208D358500CA43DB /* String.swift */; }; 1F73EE2721777A1D00706E91 /* libsigner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F426F39208B7CC000CA43DB /* libsigner.a */; }; + 391AD32122F9BF6F005136A0 /* libRNCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 39D36A8722F4A07200EDA4F1 /* libRNCamera.a */; }; + 391AD3F022F9D848005136A0 /* libRNCNetInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 39D36A0622F4588C00EDA4F1 /* libRNCNetInfo.a */; }; + 3972BABE230D88B200202B52 /* libRNSecureStorage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3972BA68230C4CBE00202B52 /* libRNSecureStorage.a */; }; 399D1B0E22DDDE1B00A815EB /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 399D1B0D22DDDE1B00A815EB /* JavaScriptCore.framework */; }; 39D32408FC4A464384BA5A5C /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E8E0FEBC36F54D78A81C1639 /* SimpleLineIcons.ttf */; }; - 39DA351122DDFE0300334898 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 39DA350E22DDFDF200334898 /* libRNGestureHandler.a */; }; + 39D36A1222F458FC00EDA4F1 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 39D36A0F22F458DE00EDA4F1 /* libRNGestureHandler.a */; }; 3C31DDCB4CD0465084344D5F /* Manifold-CF-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 624E6C0FF4A64A97A7D51BEF /* Manifold-CF-Bold.otf */; }; 3D7A98D07DE443E381067D3A /* Roboto-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 183C9D1307934735A4129705 /* Roboto-BlackItalic.ttf */; }; 423E02567C044AF6832B2388 /* Roboto-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 53880E8FF84C419EB11ACA5C /* Roboto-Light.ttf */; }; @@ -51,16 +54,13 @@ 8E3CF6503EDE413B99EADC1C /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4BF2B8970DC245F4BA0574F9 /* MaterialIcons.ttf */; }; 95279244A36A49849FCE2DAE /* Roboto-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D592A5F1000548E09C637958 /* Roboto-Bold.ttf */; }; 9CE53E9B76FD4CE88D0778EC /* libRNRandomBytes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 170C0768897F45A7A496F2BE /* libRNRandomBytes.a */; }; - A174652260CA4A7785BEC78B /* libRNCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 756B74B1A2EC494B84EF8056 /* libRNCamera.a */; }; A53C2785040148EEBE6E3B58 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 431C560691184DF8B5347066 /* FontAwesome5_Solid.ttf */; }; A6DE194CA1E344F6B2BBDD09 /* Roboto-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5F744F56289845F0A1085BBB /* Roboto-MediumItalic.ttf */; }; AD0B6F7EACB74BA7A42D2A2E /* Manifold-CF-Demi-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 5D4F46832A564A6C98432D76 /* Manifold-CF-Demi-Bold.otf */; }; B201F070BAEF4F0FB05AE5F7 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 15BC2D6C3FC64019985638C1 /* FontAwesome.ttf */; }; B43B3542B9ED441AB8AFBA0B /* Roboto-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 42D126E4D4D84C4784E2377B /* Roboto-Italic.ttf */; }; B6F2B7C38D8C47168DE75A98 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2D0EA96B71FC4AFF8C35B80E /* Feather.ttf */; }; - BB1BF6E8C2204EDEA0DEFB71 /* libRNSecureStorage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AFB9B36F67549FE85C83E49 /* libRNSecureStorage.a */; }; BB9F6E527C3C41EAA7FB339D /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6C53A63D96B24FDD95AF1C97 /* Fontisto.ttf */; }; - BC281020BE04470E86371E16 /* libRNCNetInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F78A5174AF744169974591A9 /* libRNCNetInfo.a */; }; BF3C785B2A694FAF9954DC20 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 91D53BBCAE6D418EA362A703 /* Foundation.ttf */; }; D6EED2987CEF454F865C09E0 /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D44E3C511D404074AF5AFDB9 /* libRNSVG.a */; }; E501D58522AE41A9AF18340A /* Roboto-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0A3530DA239B43579EF02112 /* Roboto-BoldItalic.ttf */; }; @@ -189,27 +189,34 @@ remoteGlobalIDString = 3D383D621EBD27B9005632C8; remoteInfo = "double-conversion-tvOS"; }; - 39519F0122E1DC4F00B44CA7 /* PBXContainerItemProxy */ = { + 391AD3E222F9D7F0005136A0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8A220E0ECC914D32B35EF7FC /* RNCamera.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4107012F1ACB723B00C6AA39; - remoteInfo = RNCamera; - }; - 39519F0522E1DC4F00B44CA7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 28E4C30CA68041C98EE1012E /* RNCNetInfo.xcodeproj */; + containerPortal = 7F019AE07E4148359A2FBCAB /* RNCNetInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNCNetInfo; }; - 39519F0722E1DC4F00B44CA7 /* PBXContainerItemProxy */ = { + 391AD3E422F9D7F0005136A0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 28E4C30CA68041C98EE1012E /* RNCNetInfo.xcodeproj */; + containerPortal = 7F019AE07E4148359A2FBCAB /* RNCNetInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = B5027B1B2237B30F00F1AABA; remoteInfo = "RNCNetInfo-tvOS"; }; + 3955110622F4547F00078B17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 99AC61BF1E3C4FE8B07077D3 /* RNRandomBytes.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 73EEC9391BFE4B1D00D468EB; + remoteInfo = RNRandomBytes; + }; + 3955110822F4547F00078B17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 99AC61BF1E3C4FE8B07077D3 /* RNRandomBytes.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 163CDE4E2087CAD3001065FB; + remoteInfo = "RNRandomBytes-tvOS"; + }; 3959CD1F22D89E430042E675 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; @@ -238,27 +245,62 @@ remoteGlobalIDString = ED296FEE214C9CF800B7C4FE; remoteInfo = "jsiexecutor-tvOS"; }; - 399D1B0B22DDD09700A815EB /* PBXContainerItemProxy */ = { + 3972BA67230C4CBE00202B52 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8CC63279C525400CA35EAF96 /* RNSecureStorage.xcodeproj */; + containerPortal = 23407C2347C34F7D9EF80F09 /* RNSecureStorage.xcodeproj */; proxyType = 2; remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNSecureStorage; }; - 39DA350D22DDFDF200334898 /* PBXContainerItemProxy */ = { + 39D36A0522F4588C00EDA4F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BB0882DC34AE448DAA1E2320 /* RNCNetInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNCNetInfo; + }; + 39D36A0722F4588C00EDA4F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BB0882DC34AE448DAA1E2320 /* RNCNetInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B5027B1B2237B30F00F1AABA; + remoteInfo = "RNCNetInfo-tvOS"; + }; + 39D36A0E22F458DE00EDA4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 39DA350822DDFDF200334898 /* RNGestureHandler.xcodeproj */; + containerPortal = 39D36A0922F458DD00EDA4F1 /* RNGestureHandler.xcodeproj */; proxyType = 2; remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNGestureHandler; }; - 39DA350F22DDFDF200334898 /* PBXContainerItemProxy */ = { + 39D36A1022F458DE00EDA4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 39DA350822DDFDF200334898 /* RNGestureHandler.xcodeproj */; + containerPortal = 39D36A0922F458DD00EDA4F1 /* RNGestureHandler.xcodeproj */; proxyType = 2; remoteGlobalIDString = B5C32A36220C603B000FFB8D; remoteInfo = "RNGestureHandler-tvOS"; }; + 39D36A4D22F45ABF00EDA4F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 31EA7650B3084F7080008B3C /* RNSVG.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C; + remoteInfo = RNSVG; + }; + 39D36A4F22F45ABF00EDA4F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 31EA7650B3084F7080008B3C /* RNSVG.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 94DDAC5C1F3D024300EED511; + remoteInfo = "RNSVG-tvOS"; + }; + 39D36A8622F4A07200EDA4F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 39D36A6022F4A07200EDA4F1 /* RNCamera.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4107012F1ACB723B00C6AA39; + remoteInfo = RNCamera; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -425,16 +467,19 @@ 1F426F9A208D358500CA43DB /* String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = String.swift; path = NativeSigner/String.swift; sourceTree = ""; }; 1F426F9B208D358500CA43DB /* NativeSigner-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NativeSigner-Bridging-Header.h"; path = "NativeSigner/NativeSigner-Bridging-Header.h"; sourceTree = ""; }; 1F7FFA3B208B691700FF717A /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; }; - 28E4C30CA68041C98EE1012E /* RNCNetInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNCNetInfo.xcodeproj; path = "../node_modules/@react-native-community/netinfo/ios/RNCNetInfo.xcodeproj"; sourceTree = ""; }; + 23407C2347C34F7D9EF80F09 /* RNSecureStorage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSecureStorage.xcodeproj; path = "../node_modules/react-native-secure-storage/ios/RNSecureStorage.xcodeproj"; sourceTree = ""; }; 2D0EA96B71FC4AFF8C35B80E /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = ""; }; 2EC5DDFE054D4A68B1B7D900 /* Manifold-CF.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Manifold-CF.otf"; path = "../res/fonts/Manifold-CF.otf"; sourceTree = ""; }; 31AAF2CB51C04377BFC79634 /* Manifold-CF-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Manifold-CF-Light.otf"; path = "../res/fonts/Manifold-CF-Light.otf"; sourceTree = ""; }; + 31EA7650B3084F7080008B3C /* RNSVG.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSVG.xcodeproj; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = ""; }; 399D1B0D22DDDE1B00A815EB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - 39DA350822DDFDF200334898 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = ""; }; + 39D36A0922F458DD00EDA4F1 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = ""; }; + 39D36A6022F4A07200EDA4F1 /* RNCamera.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RNCamera.xcodeproj"; sourceTree = ""; }; 3DB51A3702D94B6BA025DDE6 /* 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 = ""; }; 42D126E4D4D84C4784E2377B /* Roboto-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Italic.ttf"; path = "../res/fonts/Roboto-Italic.ttf"; sourceTree = ""; }; 431C560691184DF8B5347066 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; }; 4BF2B8970DC245F4BA0574F9 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; + 5099F906199C4A1DB534B2F2 /* libRNRandomBytes.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNRandomBytes.a; sourceTree = ""; }; 520CF0A85F434C3DA3D3EFF4 /* RNRandomBytes.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNRandomBytes.xcodeproj; path = "../node_modules/react-native-randombytes/RNRandomBytes.xcodeproj"; sourceTree = ""; }; 53880E8FF84C419EB11ACA5C /* Roboto-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Light.ttf"; path = "../res/fonts/Roboto-Light.ttf"; sourceTree = ""; }; 5CD421FF72D947B0AA9EBABB /* Roboto-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Regular.ttf"; path = "../res/fonts/Roboto-Regular.ttf"; sourceTree = ""; }; @@ -444,17 +489,18 @@ 624E6C0FF4A64A97A7D51BEF /* Manifold-CF-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Manifold-CF-Bold.otf"; path = "../res/fonts/Manifold-CF-Bold.otf"; sourceTree = ""; }; 6A7AB3BD3C1A4E0EB3C4B3B6 /* 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 = ""; }; 6C53A63D96B24FDD95AF1C97 /* 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 = ""; }; - 756B74B1A2EC494B84EF8056 /* libRNCamera.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCamera.a; sourceTree = ""; }; 7733AB637FF54DE5B174F42C /* 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 = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 7F019AE07E4148359A2FBCAB /* RNCNetInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNCNetInfo.xcodeproj; path = "../node_modules/@react-native-community/netinfo/ios/RNCNetInfo.xcodeproj"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 84D1117E71B04C839F00F619 /* 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 = ""; }; 894E2A1A52DC44C28E9F9A71 /* 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 = ""; }; - 8A220E0ECC914D32B35EF7FC /* RNCamera.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RNCamera.xcodeproj"; sourceTree = ""; }; 8C99AB759A004CEB88AC4455 /* Roboto-LightItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-LightItalic.ttf"; path = "../res/fonts/Roboto-LightItalic.ttf"; sourceTree = ""; }; - 8CC63279C525400CA35EAF96 /* RNSecureStorage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSecureStorage.xcodeproj; path = "../node_modules/react-native-secure-storage/ios/RNSecureStorage.xcodeproj"; sourceTree = ""; }; 91D53BBCAE6D418EA362A703 /* 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 = ""; }; + 99AC61BF1E3C4FE8B07077D3 /* RNRandomBytes.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNRandomBytes.xcodeproj; path = "../node_modules/react-native-randombytes/RNRandomBytes.xcodeproj"; sourceTree = ""; }; 9AFB9B36F67549FE85C83E49 /* libRNSecureStorage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSecureStorage.a; sourceTree = ""; }; + AB66C405057A41298E1FC8BB /* libRNSVG.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSVG.a; sourceTree = ""; }; + BB0882DC34AE448DAA1E2320 /* RNCNetInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNCNetInfo.xcodeproj; path = "../node_modules/@react-native-community/netinfo/ios/RNCNetInfo.xcodeproj"; sourceTree = ""; }; C0205550495341279B513024 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSVG.xcodeproj; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = ""; }; CB5C4A7F0E8B4E4E98E06EFD /* 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 = ""; }; D44E3C511D404074AF5AFDB9 /* libRNSVG.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSVG.a; sourceTree = ""; }; @@ -467,7 +513,6 @@ EA252ACE6F044BD88BDCD173 /* Roboto-Black.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Black.ttf"; path = "../res/fonts/Roboto-Black.ttf"; sourceTree = ""; }; F198D2DE15BC4461B2308E3C /* Manifold-CF-Extra-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Manifold-CF-Extra-Bold.otf"; path = "../res/fonts/Manifold-CF-Extra-Bold.otf"; sourceTree = ""; }; F2FB2DDD90964B3BB1FC813C /* 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 = ""; }; - F78A5174AF744169974591A9 /* libRNCNetInfo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCNetInfo.a; sourceTree = ""; }; FAE70C1AAEEA45159C8CB0EA /* Roboto-ThinItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-ThinItalic.ttf"; path = "../res/fonts/Roboto-ThinItalic.ttf"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -484,7 +529,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 39DA351122DDFE0300334898 /* libRNGestureHandler.a in Frameworks */, + 3972BABE230D88B200202B52 /* libRNSecureStorage.a in Frameworks */, + 391AD3F022F9D848005136A0 /* libRNCNetInfo.a in Frameworks */, + 391AD32122F9BF6F005136A0 /* libRNCamera.a in Frameworks */, + 39D36A1222F458FC00EDA4F1 /* libRNGestureHandler.a in Frameworks */, 399D1B0E22DDDE1B00A815EB /* JavaScriptCore.framework in Frameworks */, 1F73EE2721777A1D00706E91 /* libsigner.a in Frameworks */, 1F426F95208D334200CA43DB /* libReact.a in Frameworks */, @@ -492,14 +540,11 @@ 1F426F93208D332A00CA43DB /* libRCTAnimation.a in Frameworks */, 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, 1F426F92208D32FA00CA43DB /* libRCTImage.a in Frameworks */, 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, - 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - BB1BF6E8C2204EDEA0DEFB71 /* libRNSecureStorage.a in Frameworks */, - BC281020BE04470E86371E16 /* libRNCNetInfo.a in Frameworks */, - A174652260CA4A7785BEC78B /* libRNCamera.a in Frameworks */, 9CE53E9B76FD4CE88D0778EC /* libRNRandomBytes.a in Frameworks */, D6EED2987CEF454F865C09E0 /* libRNSVG.a in Frameworks */, ); @@ -632,9 +677,9 @@ isa = PBXGroup; children = ( DDFA123E816A46BBB8DF60B6 /* libRCTCamera.a */, + 5099F906199C4A1DB534B2F2 /* libRNRandomBytes.a */, + AB66C405057A41298E1FC8BB /* libRNSVG.a */, 9AFB9B36F67549FE85C83E49 /* libRNSecureStorage.a */, - F78A5174AF744169974591A9 /* libRNCNetInfo.a */, - 756B74B1A2EC494B84EF8056 /* libRNCamera.a */, 170C0768897F45A7A496F2BE /* libRNRandomBytes.a */, D44E3C511D404074AF5AFDB9 /* libRNSVG.a */, ); @@ -651,36 +696,63 @@ name = Frameworks; sourceTree = ""; }; - 39519EFC22E1DC4F00B44CA7 /* Products */ = { + 391AD3B922F9D7F0005136A0 /* Products */ = { + isa = PBXGroup; + children = ( + 391AD3E322F9D7F0005136A0 /* libRNCNetInfo.a */, + 391AD3E522F9D7F0005136A0 /* libRNCNetInfo-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 3955110222F4547F00078B17 /* Products */ = { + isa = PBXGroup; + children = ( + 3955110722F4547F00078B17 /* libRNRandomBytes.a */, + 3955110922F4547F00078B17 /* libRNRandomBytes-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 3972BA37230C4CBD00202B52 /* Products */ = { + isa = PBXGroup; + children = ( + 3972BA68230C4CBE00202B52 /* libRNSecureStorage.a */, + ); + name = Products; + sourceTree = ""; + }; + 39D36A0122F4588B00EDA4F1 /* Products */ = { isa = PBXGroup; children = ( - 39519F0222E1DC4F00B44CA7 /* libRNCamera.a */, + 39D36A0622F4588C00EDA4F1 /* libRNCNetInfo.a */, + 39D36A0822F4588C00EDA4F1 /* libRNCNetInfo-tvOS.a */, ); name = Products; sourceTree = ""; }; - 39519EFE22E1DC4F00B44CA7 /* Products */ = { + 39D36A0A22F458DD00EDA4F1 /* Products */ = { isa = PBXGroup; children = ( - 39519F0622E1DC4F00B44CA7 /* libRNCNetInfo.a */, - 39519F0822E1DC4F00B44CA7 /* libRNCNetInfo-tvOS.a */, + 39D36A0F22F458DE00EDA4F1 /* libRNGestureHandler.a */, + 39D36A1122F458DE00EDA4F1 /* libRNGestureHandler-tvOS.a */, ); name = Products; sourceTree = ""; }; - 399D1B0822DDD09600A815EB /* Products */ = { + 39D36A4922F45ABF00EDA4F1 /* Products */ = { isa = PBXGroup; children = ( - 399D1B0C22DDD09700A815EB /* libRNSecureStorage.a */, + 39D36A4E22F45ABF00EDA4F1 /* libRNSVG.a */, + 39D36A5022F45ABF00EDA4F1 /* libRNSVG-tvOS.a */, ); name = Products; sourceTree = ""; }; - 39DA350922DDFDF200334898 /* Products */ = { + 39D36A6122F4A07200EDA4F1 /* Products */ = { isa = PBXGroup; children = ( - 39DA350E22DDFDF200334898 /* libRNGestureHandler.a */, - 39DA351022DDFDF200334898 /* libRNGestureHandler-tvOS.a */, + 39D36A8722F4A07200EDA4F1 /* libRNCamera.a */, ); name = Products; sourceTree = ""; @@ -746,7 +818,8 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 39DA350822DDFDF200334898 /* RNGestureHandler.xcodeproj */, + 39D36A6022F4A07200EDA4F1 /* RNCamera.xcodeproj */, + 39D36A0922F458DD00EDA4F1 /* RNGestureHandler.xcodeproj */, 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, @@ -758,11 +831,10 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - 8CC63279C525400CA35EAF96 /* RNSecureStorage.xcodeproj */, - 28E4C30CA68041C98EE1012E /* RNCNetInfo.xcodeproj */, - 8A220E0ECC914D32B35EF7FC /* RNCamera.xcodeproj */, 520CF0A85F434C3DA3D3EFF4 /* RNRandomBytes.xcodeproj */, C0205550495341279B513024 /* RNSVG.xcodeproj */, + 7F019AE07E4148359A2FBCAB /* RNCNetInfo.xcodeproj */, + 23407C2347C34F7D9EF80F09 /* RNSecureStorage.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -936,24 +1008,36 @@ ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, { - ProductGroup = 39519EFC22E1DC4F00B44CA7 /* Products */; - ProjectRef = 8A220E0ECC914D32B35EF7FC /* RNCamera.xcodeproj */; + ProductGroup = 39D36A6122F4A07200EDA4F1 /* Products */; + ProjectRef = 39D36A6022F4A07200EDA4F1 /* RNCamera.xcodeproj */; + }, + { + ProductGroup = 39D36A0122F4588B00EDA4F1 /* Products */; + ProjectRef = BB0882DC34AE448DAA1E2320 /* RNCNetInfo.xcodeproj */; }, { - ProductGroup = 39519EFE22E1DC4F00B44CA7 /* Products */; - ProjectRef = 28E4C30CA68041C98EE1012E /* RNCNetInfo.xcodeproj */; + ProductGroup = 391AD3B922F9D7F0005136A0 /* Products */; + ProjectRef = 7F019AE07E4148359A2FBCAB /* RNCNetInfo.xcodeproj */; }, { - ProductGroup = 39DA350922DDFDF200334898 /* Products */; - ProjectRef = 39DA350822DDFDF200334898 /* RNGestureHandler.xcodeproj */; + ProductGroup = 39D36A0A22F458DD00EDA4F1 /* Products */; + ProjectRef = 39D36A0922F458DD00EDA4F1 /* RNGestureHandler.xcodeproj */; + }, + { + ProductGroup = 3955110222F4547F00078B17 /* Products */; + ProjectRef = 99AC61BF1E3C4FE8B07077D3 /* RNRandomBytes.xcodeproj */; }, { ProductGroup = 88043C762301BD2B00340AB7 /* Products */; ProjectRef = 520CF0A85F434C3DA3D3EFF4 /* RNRandomBytes.xcodeproj */; }, { - ProductGroup = 399D1B0822DDD09600A815EB /* Products */; - ProjectRef = 8CC63279C525400CA35EAF96 /* RNSecureStorage.xcodeproj */; + ProductGroup = 3972BA37230C4CBD00202B52 /* Products */; + ProjectRef = 23407C2347C34F7D9EF80F09 /* RNSecureStorage.xcodeproj */; + }, + { + ProductGroup = 39D36A4922F45ABF00EDA4F1 /* Products */; + ProjectRef = 31EA7650B3084F7080008B3C /* RNSVG.xcodeproj */; }, { ProductGroup = 88043C742301BD2B00340AB7 /* Products */; @@ -1081,25 +1165,32 @@ remoteRef = 1FE167BE2088EA11004A6284 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 39519F0222E1DC4F00B44CA7 /* libRNCamera.a */ = { + 391AD3E322F9D7F0005136A0 /* libRNCNetInfo.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNCamera.a; - remoteRef = 39519F0122E1DC4F00B44CA7 /* PBXContainerItemProxy */; + path = libRNCNetInfo.a; + remoteRef = 391AD3E222F9D7F0005136A0 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 39519F0622E1DC4F00B44CA7 /* libRNCNetInfo.a */ = { + 391AD3E522F9D7F0005136A0 /* libRNCNetInfo-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNCNetInfo.a; - remoteRef = 39519F0522E1DC4F00B44CA7 /* PBXContainerItemProxy */; + path = "libRNCNetInfo-tvOS.a"; + remoteRef = 391AD3E422F9D7F0005136A0 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 39519F0822E1DC4F00B44CA7 /* libRNCNetInfo-tvOS.a */ = { + 3955110722F4547F00078B17 /* libRNRandomBytes.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libRNCNetInfo-tvOS.a"; - remoteRef = 39519F0722E1DC4F00B44CA7 /* PBXContainerItemProxy */; + path = libRNRandomBytes.a; + remoteRef = 3955110622F4547F00078B17 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3955110922F4547F00078B17 /* libRNRandomBytes-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNRandomBytes-tvOS.a"; + remoteRef = 3955110822F4547F00078B17 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 3959CD2022D89E430042E675 /* libjsi.a */ = { @@ -1130,25 +1221,60 @@ remoteRef = 3959CD2522D89E430042E675 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 399D1B0C22DDD09700A815EB /* libRNSecureStorage.a */ = { + 3972BA68230C4CBE00202B52 /* libRNSecureStorage.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRNSecureStorage.a; - remoteRef = 399D1B0B22DDD09700A815EB /* PBXContainerItemProxy */; + remoteRef = 3972BA67230C4CBE00202B52 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 39DA350E22DDFDF200334898 /* libRNGestureHandler.a */ = { + 39D36A0622F4588C00EDA4F1 /* libRNCNetInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNCNetInfo.a; + remoteRef = 39D36A0522F4588C00EDA4F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 39D36A0822F4588C00EDA4F1 /* libRNCNetInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNCNetInfo-tvOS.a"; + remoteRef = 39D36A0722F4588C00EDA4F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 39D36A0F22F458DE00EDA4F1 /* libRNGestureHandler.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRNGestureHandler.a; - remoteRef = 39DA350D22DDFDF200334898 /* PBXContainerItemProxy */; + remoteRef = 39D36A0E22F458DE00EDA4F1 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 39DA351022DDFDF200334898 /* libRNGestureHandler-tvOS.a */ = { + 39D36A1122F458DE00EDA4F1 /* libRNGestureHandler-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = "libRNGestureHandler-tvOS.a"; - remoteRef = 39DA350F22DDFDF200334898 /* PBXContainerItemProxy */; + remoteRef = 39D36A1022F458DE00EDA4F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 39D36A4E22F45ABF00EDA4F1 /* libRNSVG.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNSVG.a; + remoteRef = 39D36A4D22F45ABF00EDA4F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 39D36A5022F45ABF00EDA4F1 /* libRNSVG-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNSVG-tvOS.a"; + remoteRef = 39D36A4F22F45ABF00EDA4F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 39D36A8722F4A07200EDA4F1 /* libRNCamera.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNCamera.a; + remoteRef = 39D36A8622F4A07200EDA4F1 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { @@ -1468,11 +1594,13 @@ "$(inherited)", "$(SRCROOT)/../node_modules/react-native-camera/ios", "$(SRCROOT)/../rust/signer", - "$(SRCROOT)/../node_modules/react-native-secure-storage/ios/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", "$(SRCROOT)/../node_modules/@react-native-community/netinfo/ios", "$(SRCROOT)/../node_modules/react-native-camera/ios/**", "$(SRCROOT)/../node_modules/react-native-randombytes", "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + "$(SRCROOT)/../node_modules/@react-native-community/netinfo/ios", + "$(SRCROOT)/../node_modules/react-native-secure-storage/ios/**", ); INFOPLIST_FILE = NativeSigner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -1506,11 +1634,13 @@ "$(inherited)", "$(SRCROOT)/../node_modules/react-native-camera/ios", "$(SRCROOT)/../rust/signer", - "$(SRCROOT)/../node_modules/react-native-secure-storage/ios/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", "$(SRCROOT)/../node_modules/@react-native-community/netinfo/ios", "$(SRCROOT)/../node_modules/react-native-camera/ios/**", "$(SRCROOT)/../node_modules/react-native-randombytes", "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + "$(SRCROOT)/../node_modules/@react-native-community/netinfo/ios", + "$(SRCROOT)/../node_modules/react-native-secure-storage/ios/**", ); INFOPLIST_FILE = NativeSigner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; diff --git a/ios/NativeSigner/EthkeyBridge.swift b/ios/NativeSigner/EthkeyBridge.swift index ec5a6a6fef..8437f6caf9 100644 --- a/ios/NativeSigner/EthkeyBridge.swift +++ b/ios/NativeSigner/EthkeyBridge.swift @@ -83,17 +83,6 @@ class EthkeyBridge: NSObject { } } - @objc func blake2s(_ data: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void { - var error: UInt32 = 0 - var data_ptr = data.asPtr() - let hash_rust_str = blake(&error, &data_ptr) - let hash_rust_str_ptr = rust_string_ptr(hash_rust_str) - let hash = String.fromStringPtr(ptr: hash_rust_str_ptr!.pointee) - rust_string_ptr_destroy(hash_rust_str_ptr) - rust_string_destroy(hash_rust_str) - resolve(hash) - } - @objc func ethSign(_ data: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void { var error: UInt32 = 0 var data_ptr = data.asPtr() diff --git a/ios/NativeSigner/main.m b/ios/NativeSigner/main.m index f8d6869716..7cc804552b 100644 --- a/ios/NativeSigner/main.m +++ b/ios/NativeSigner/main.m @@ -19,6 +19,6 @@ int main(int argc, char * argv[]) { @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } diff --git a/jest-setup.js b/jest-setup.js index 251ff8ba8f..d504646150 100644 --- a/jest-setup.js +++ b/jest-setup.js @@ -17,14 +17,4 @@ /* global jest */ // import mockCamera from './__mocks__/Camera' -jest.unmock('Image') -jest.mock('react-native-camera', () => 'camera') -jest.mock('Linking', () => { - return { - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - openURL: jest.fn(), - canOpenURL: jest.fn(), - getInitialURL: jest.fn() - } -}) +jest.doMock('react-native', () => 'reactNativeMock') \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index e4fb3a9196..c95987d139 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,33 @@ +// Copyright 2015-2019 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +const { defaults } = require('jest-config'); + module.exports = { + preset: "react-native", + moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'], verbose: true, - roots: ['/src'], -}; + roots: [ + "/src" + ], + setupFiles: [ + "/jest-setup.js" + ], + testEnvironment: "node", + testPathIgnorePatterns: [ + "/node_modules/" + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 5241c9f2dc..7e2834e2eb 100644 --- a/package.json +++ b/package.json @@ -22,18 +22,20 @@ "dependencies": { "@plugnet/util": "^0.94.100", "@plugnet/wasm-crypto-js": "^0.11.102", - "@polkadot/keyring": "^1.0.1", - "@polkadot/reactnative-identicon": "^0.42.0-beta.28", - "@polkadot/util-crypto": "^1.0.1", + "@polkadot/api": "^0.90.0-beta.66", + "@polkadot/reactnative-identicon": "^0.42.0-beta.26", + "@polkadot/util": "^1.0.1", + "@polkadot/util-crypto": "1.1.0-beta.1", + "@polkadot/wasm-crypto": "^0.13.1", "@react-native-community/netinfo": "^4.1.1", "@tradle/react-native-http": "^2.0.1", "bignumber.js": "^9.0.0", "hoist-non-react-statics": "^3.3.0", "node-libs-react-native": "^1.0.3", "prop-types": "^15.6.1", - "react": "16.8.6", + "react": "^16.9.0", "react-native": "0.60.4", - "react-native-camera": "^2.11.1", + "react-native-camera": "^3.0.0", "react-native-gesture-handler": "^1.3.0", "react-native-keyboard-aware-scroll-view": "^0.8.0", "react-native-markdown-renderer": "^3.2.8", @@ -60,19 +62,12 @@ "babel-plugin-rewrite-require": "^1.14.5", "eslint": "^6.0.1", "jest": "^24.8.0", - "jest-react-native": "^18.0.0", "jetifier": "^1.6.3", "metro-react-native-babel-preset": "^0.55.0", "pre-git": "^3.14.0", "prettier": "1.18.2", - "reactotron-react-native": "^3.6.4", - "react-test-renderer": "16.8.6" - }, - "jest": { - "preset": "react-native", - "setupFiles": [ - "/jest-setup.js" - ] + "react-test-renderer": "16.8.6", + "reactotron-react-native": "^3.6.4" }, "release": { "analyzeCommits": "simple-commit-message" diff --git a/shim.js b/shim.js index 3494b9a47b..763e02d331 100644 --- a/shim.js +++ b/shim.js @@ -1 +1 @@ -process.browser = true; \ No newline at end of file +process.browser = true; diff --git a/src/components/DerivationPathField.js b/src/components/DerivationPathField.js index de10d33205..792c5fc242 100644 --- a/src/components/DerivationPathField.js +++ b/src/components/DerivationPathField.js @@ -59,7 +59,6 @@ export default function DerivationPathField(props) { { const derivationPath = keyExtract(text); - console.log('derivationPath',derivationPath) onChange({ derivationPassword: derivationPath.password || '', derivationPath: derivationPath.derivePath || '' diff --git a/src/components/PayloadDetailsCard.js b/src/components/PayloadDetailsCard.js new file mode 100644 index 0000000000..e278b2050e --- /dev/null +++ b/src/components/PayloadDetailsCard.js @@ -0,0 +1,117 @@ +// Copyright 2015-2019 Parity Technologies (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +// @flow + +import { GenericExtrinsicPayload } from '@polkadot/types'; +import PropTypes from 'prop-types'; +import React from 'react'; +import { StyleSheet, Text, View, ViewPropTypes } from 'react-native'; + +import colors from '../colors'; +import fonts from '../fonts'; + +export default class PayloadDetailsCard extends React.PureComponent { + static propTypes = { + description: PropTypes.string.isRequired, + payload: PropTypes.object, + signature: PropTypes.string, + style: ViewPropTypes.style + }; + + render() { + const { description, payload, signature, style } = this.props; + + return ( + + {description} + { + payload && ( + + + + + + + + + ) + } + { + signature && ( + + + Signature + + {signature} + + ) + } + + ); + } +} + +function ExtrinsicPart({ label, style, value }) { + + return ( + + + + {label} + + {value} + + + ); +} + +const styles = StyleSheet.create({ + body: { + padding: 20, + paddingTop: 10, + flexDirection: 'column', + backgroundColor: colors.card_bg + }, + content: {}, + icon: { + width: 47, + height: 47 + }, + footer: { + backgroundColor: '#977CF6', + flexDirection: 'row-reverse', + padding: 5 + }, + titleText: { + textAlign: 'center', + fontFamily: fonts.bold, + fontSize: 14, + color: colors.card_bg_text + }, + secondaryText: { + textAlign: 'center', + color: colors.card_bg_text, + fontFamily: fonts.semiBold, + fontSize: 12 + }, + footerText: { + color: colors.card_bg, + fontFamily: fonts.bold + } +}); diff --git a/src/components/QrView.js b/src/components/QrView.js index 7b8d7531ca..e894cc7b04 100644 --- a/src/components/QrView.js +++ b/src/components/QrView.js @@ -16,29 +16,30 @@ 'use strict'; +import { isHex } from '@polkadot/util'; +import PropTypes from 'prop-types'; import React from 'react'; -import { Dimensions, StyleSheet, Image, View } from 'react-native'; -import colors from '../colors'; -import { qrCode } from '../util/native'; +import { Dimensions, Image, StyleSheet, Text, View } from 'react-native'; +import { qrCode, qrHex } from '../util/native'; export default class QrView extends React.PureComponent { + static propTypes = { + data: PropTypes.string.isRequired // arbitrary message/txn string or `${networkType}:0x${address.toLowerCase()}@${networkKey}` + } - state = {}; + constructor(props) { + super(props); - displayQrCode = async (data) => { - try { - let qr = await qrCode(data); - this.setState({ - qr: qr - }); - } catch (e) { - console.log(e); - } + this.state = { + qr: null + }; } componentDidMount() { - this.displayQrCode(this.props.text); + const { data } = this.props; + + this.displayQrCode(data); } componentWillReceiveProps(newProps) { @@ -47,6 +48,18 @@ export default class QrView extends React.PureComponent { } } + async displayQrCode (data) { + try { + const qr = isHex(data) ? await qrHex(data) : await qrCode(data); + + this.setState({ + qr: qr + }) + } catch (e) { + console.error(e); + } + } + render() { if (this.props.screen) { return {this.renderQr()}; diff --git a/src/console.d.ts b/src/console.d.ts new file mode 100644 index 0000000000..29fbdfe62c --- /dev/null +++ b/src/console.d.ts @@ -0,0 +1,5 @@ +// Prevent auto importing console when console logging... + +declare module 'console' { + export = typeof import("console"); +} \ No newline at end of file diff --git a/src/screens/About.js b/src/screens/About.js index 91175f7a30..d9462ba015 100644 --- a/src/screens/About.js +++ b/src/screens/About.js @@ -31,7 +31,7 @@ export default class About extends React.PureComponent { render() { return ( - PARITY SIGNER ({packageJson.version}) + PARITY SIGNER The Parity Signer mobile application is a secure air-gapped wallet diff --git a/src/screens/AccountDetails.js b/src/screens/AccountDetails.js index 746debf76f..bce9cc72a9 100644 --- a/src/screens/AccountDetails.js +++ b/src/screens/AccountDetails.js @@ -135,7 +135,7 @@ This account can only be recovered with its associated recovery phrase.`, title={account.name} /> - + ); diff --git a/src/screens/AccountNew.js b/src/screens/AccountNew.js index eebf938e61..176c575ff8 100644 --- a/src/screens/AccountNew.js +++ b/src/screens/AccountNew.js @@ -29,7 +29,7 @@ import KeyboardScrollView from '../components/KeyboardScrollView'; import NetworkButton from '../components/NetworkButton'; import TextInput from '../components/TextInput'; import { NETWORK_LIST, NetworkProtocols } from '../constants'; -import fonts from "../fonts"; +import fonts from '../fonts'; import AccountsStore from '../stores/AccountsStore'; import { empty, validateSeed } from '../util/account'; diff --git a/src/screens/AccountPin.js b/src/screens/AccountPin.js index a14513d761..0d5baa44d3 100644 --- a/src/screens/AccountPin.js +++ b/src/screens/AccountPin.js @@ -58,10 +58,7 @@ class AccountPinView extends React.PureComponent { const account = accountCreation ? accounts.getNew() : accounts.getSelected(); - if ( - this.state.pin.length >= 6 && - this.state.pin === this.state.confirmation - ) { + if (this.state.pin.length >= 6 && this.state.pin === this.state.confirmation) { if (accountCreation) { await accounts.submitNew(pin); const resetAction = StackActions.reset({ diff --git a/src/screens/AccountRecover.js b/src/screens/AccountRecover.js index bd17376b16..b025d2bc5e 100644 --- a/src/screens/AccountRecover.js +++ b/src/screens/AccountRecover.js @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +// @flow + 'use strict'; import React from 'react'; diff --git a/src/screens/AccountUnlock.js b/src/screens/AccountUnlock.js index dbbee1bc80..9d74c6d1d4 100644 --- a/src/screens/AccountUnlock.js +++ b/src/screens/AccountUnlock.js @@ -33,6 +33,7 @@ export class AccountUnlockAndSign extends React.PureComponent { render() { const { navigation } = this.props; const next = navigation.getParam('next', 'SignedTx'); + return ( {(accounts, scannerStore) => ( @@ -41,7 +42,6 @@ export class AccountUnlockAndSign extends React.PureComponent { accounts={accounts} checkPin={async pin => { try { - scannerStore.getTXRequest(); await scannerStore.signData(pin); return true; } catch (e) { diff --git a/src/screens/MessageDetails.js b/src/screens/MessageDetails.js index f0f4346c27..dd408bc51c 100644 --- a/src/screens/MessageDetails.js +++ b/src/screens/MessageDetails.js @@ -18,7 +18,7 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { ScrollView, StyleSheet, Text } from 'react-native'; +import { Alert, ScrollView, StyleSheet, Text } from 'react-native'; import { Subscribe } from 'unstated'; import colors from '../colors'; import fonts from "../fonts"; @@ -39,8 +39,8 @@ export default class MessageDetails extends React.PureComponent { {(scannerStore, accounts) => { const dataToSign = scannerStore.getDataToSign(); + if (dataToSign) { - const tx = scannerStore.getTx(); return ( { await accounts.select(account); this.props.navigation.navigate('AccountDetails'); @@ -76,12 +77,13 @@ export class MessageDetailsView extends React.PureComponent { static propTypes = { onNext: PropTypes.func.isRequired, dataToSign: PropTypes.string.isRequired, + isOversized: PropTypes.bool.isRequired, sender: PropTypes.object.isRequired, message: PropTypes.string.isRequired }; render() { - const {data, message, onNext, onPressAccount, sender} = this.props; + const {data, isOversized, message, onNext, onPressAccount, sender} = this.props; return ( +