diff --git a/App.tsx b/App.tsx deleted file mode 100644 index e267e687f..000000000 --- a/App.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { Component } from "react"; -import { Platform, StyleSheet, Text, View } from "react-native"; - - -export default () => { - return ( - - Welcome to React Native! - - ); -}; - -const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: "center", - alignItems: "center", - backgroundColor: "#F5FCFF", - }, - welcome: { - fontSize: 20, - textAlign: "center", - margin: 10, - }, -}); diff --git a/android/app/build.gradle b/android/app/build.gradle index acf97d2c9..fea611dfb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -107,6 +107,7 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" + missingDimensionStrategy 'react-native-camera', 'general' } splits { abi { @@ -138,6 +139,8 @@ android { } dependencies { + implementation project(':react-native-svg') + implementation project(':react-native-camera') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" implementation "com.facebook.react:react-native:+" // From node_modules diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 34d727762..b5814efff 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ package="com.blixtwallet"> + getPackages() { return Arrays.asList( - new MainReactPackage() + new MainReactPackage(), + new SvgPackage(), + new RNCameraPackage() ); } diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 88ff8c55c..d4253e7fb 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - BlixtWallet + Blixt Wallet diff --git a/android/build.gradle b/android/build.gradle index c6e7c7c0a..5eaf03d80 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -29,5 +29,9 @@ allprojects { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } + maven { + url "https://jitpack.io" + } + } } diff --git a/android/settings.gradle b/android/settings.gradle index 92bcdb62c..df772d9c8 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,3 +1,7 @@ rootProject.name = 'BlixtWallet' +include ':react-native-svg' +project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android') +include ':react-native-camera' +project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') include ':app' diff --git a/app.json b/app.json index 407e95aee..655136e75 100644 --- a/app.json +++ b/app.json @@ -1,4 +1,4 @@ { "name": "BlixtWallet", - "displayName": "BlixtWallet" -} \ No newline at end of file + "displayName": "Blixt Wallet" +} diff --git a/index.js b/index.js index a850d031d..69303b34d 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ */ import {AppRegistry} from 'react-native'; -import App from './App'; +import App from './src/App'; import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/ios/BlixtWallet.xcodeproj/project.pbxproj b/ios/BlixtWallet.xcodeproj/project.pbxproj index 879d8d86b..b5fd62ed4 100644 --- a/ios/BlixtWallet.xcodeproj/project.pbxproj +++ b/ios/BlixtWallet.xcodeproj/project.pbxproj @@ -5,7 +5,6 @@ }; objectVersion = 46; objects = { - /* Begin PBXBuildFile section */ 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; @@ -40,6 +39,27 @@ ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; }; ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; }; + 6BCFA3D862AC484FB93A0A11 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A5E60D8E77444249BBC37932 /* AntDesign.ttf */; }; + 258617F423D040F78B149C6C /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D6985BBC714F403AA21758B7 /* Entypo.ttf */; }; + 19C047FF95D849CC834E0502 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E20F78A2E29D472EB08466AF /* EvilIcons.ttf */; }; + D6FBAB41115C4913BB38E981 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 63AE28216C6944AF92BDFE36 /* Feather.ttf */; }; + 5CA9306702E940E5957F7E6E /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 232E4EB922F543ED9CB805DE /* FontAwesome.ttf */; }; + C4969CA50EC3447898A9AB5F /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEF847D1F0C94996AF898BBC /* FontAwesome5_Brands.ttf */; }; + 4236BB92F2FB43C9A57A66F3 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B1BA625E3DB4564BA3F9E93 /* FontAwesome5_Regular.ttf */; }; + 11D889F9F67747F7BBC9BA11 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B435794CFED540CF9475F07F /* FontAwesome5_Solid.ttf */; }; + AB7DBBBCE6EE498BAAFDCA96 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 869C972DF8BE4225A4199E6E /* Foundation.ttf */; }; + 30BD2728420647F0ABDDE9C4 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DE616D07978F4298991C4DA2 /* Ionicons.ttf */; }; + 1E99BBEE07B048B5B82DF6C1 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8DF5A4301B2A4369AC501E85 /* MaterialCommunityIcons.ttf */; }; + ED2157E9C29A4B579267CE07 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4D08AAD3EA1748709ABD19B7 /* MaterialIcons.ttf */; }; + 3776D6A1F09C48E092B31397 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6B5FA0FC9A15448DA445E1FD /* Octicons.ttf */; }; + FCDA1538CAB7481A9887678E /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0AB1924C83894EDA8D0A7215 /* Roboto_medium.ttf */; }; + 8FC3B5362B00448A88BCFA7E /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 86A2FC7C997E428380612AEE /* Roboto.ttf */; }; + 6B0400163BAD4BD0A1F6E3E5 /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 414647DAE69640738264157E /* rubicon-icon-font.ttf */; }; + CFA73C097DD64D1C808166CF /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 785430B83E9F4496819A1EE4 /* SimpleLineIcons.ttf */; }; + 24A1104E5BAF49E3BB99A1EC /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A10DDCB137C14DAFB2EABC1C /* Zocial.ttf */; }; + A14A22CD7962466EA3C0E1F2 /* libRNCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B699ED7474AE4259AC6F7551 /* libRNCamera.a */; }; + 8F5C59F485294DE78C4682AD /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 84AF629C7AF94F1D9891B9F4 /* libRNSVG.a */; }; + 9B8DB826E9AA4AD098650CF1 /* libRNSVG-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 864C077F658945F2B9423169 /* libRNSVG-tvOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -347,6 +367,29 @@ ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; 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; }; + A5E60D8E77444249BBC37932 /* AntDesign.ttf */ = {isa = PBXFileReference; name = "AntDesign.ttf"; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + D6985BBC714F403AA21758B7 /* Entypo.ttf */ = {isa = PBXFileReference; name = "Entypo.ttf"; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + E20F78A2E29D472EB08466AF /* EvilIcons.ttf */ = {isa = PBXFileReference; name = "EvilIcons.ttf"; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 63AE28216C6944AF92BDFE36 /* Feather.ttf */ = {isa = PBXFileReference; name = "Feather.ttf"; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 232E4EB922F543ED9CB805DE /* FontAwesome.ttf */ = {isa = PBXFileReference; name = "FontAwesome.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + EEF847D1F0C94996AF898BBC /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Brands.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 9B1BA625E3DB4564BA3F9E93 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Regular.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + B435794CFED540CF9475F07F /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; name = "FontAwesome5_Solid.ttf"; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 869C972DF8BE4225A4199E6E /* Foundation.ttf */ = {isa = PBXFileReference; name = "Foundation.ttf"; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + DE616D07978F4298991C4DA2 /* Ionicons.ttf */ = {isa = PBXFileReference; name = "Ionicons.ttf"; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 8DF5A4301B2A4369AC501E85 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; name = "MaterialCommunityIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 4D08AAD3EA1748709ABD19B7 /* MaterialIcons.ttf */ = {isa = PBXFileReference; name = "MaterialIcons.ttf"; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 6B5FA0FC9A15448DA445E1FD /* Octicons.ttf */ = {isa = PBXFileReference; name = "Octicons.ttf"; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 0AB1924C83894EDA8D0A7215 /* Roboto_medium.ttf */ = {isa = PBXFileReference; name = "Roboto_medium.ttf"; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 86A2FC7C997E428380612AEE /* Roboto.ttf */ = {isa = PBXFileReference; name = "Roboto.ttf"; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 414647DAE69640738264157E /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 785430B83E9F4496819A1EE4 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; name = "SimpleLineIcons.ttf"; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + A10DDCB137C14DAFB2EABC1C /* Zocial.ttf */ = {isa = PBXFileReference; name = "Zocial.ttf"; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + 4CBA905A704442CAA4E83FDD /* RNCamera.xcodeproj */ = {isa = PBXFileReference; name = "RNCamera.xcodeproj"; path = "../node_modules/react-native-camera/ios/RNCamera.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; + B699ED7474AE4259AC6F7551 /* libRNCamera.a */ = {isa = PBXFileReference; name = "libRNCamera.a"; path = "libRNCamera.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + FFE88D4B0499492DAFB408C7 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; name = "RNSVG.xcodeproj"; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; + 84AF629C7AF94F1D9891B9F4 /* libRNSVG.a */ = {isa = PBXFileReference; name = "libRNSVG.a"; path = "libRNSVG.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + 864C077F658945F2B9423169 /* libRNSVG-tvOS.a */ = {isa = PBXFileReference; name = "libRNSVG-tvOS.a"; path = "libRNSVG-tvOS.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -375,6 +418,8 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + A14A22CD7962466EA3C0E1F2 /* libRNCamera.a in Frameworks */, + 8F5C59F485294DE78C4682AD /* libRNSVG.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -391,6 +436,7 @@ 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, + 9B8DB826E9AA4AD098650CF1 /* libRNSVG-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -564,6 +610,8 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + 4CBA905A704442CAA4E83FDD /* RNCamera.xcodeproj */, + FFE88D4B0499492DAFB408C7 /* RNSVG.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -585,6 +633,7 @@ 00E356EF1AD99517003FC87E /* BlixtWalletTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D89093DB4E004A04B6E3BB20 /* Resources */, ); indentWidth = 2; sourceTree = ""; @@ -611,6 +660,32 @@ name = Products; sourceTree = ""; }; + D89093DB4E004A04B6E3BB20 /* Resources */ = { + isa = "PBXGroup"; + children = ( + A5E60D8E77444249BBC37932 /* AntDesign.ttf */, + D6985BBC714F403AA21758B7 /* Entypo.ttf */, + E20F78A2E29D472EB08466AF /* EvilIcons.ttf */, + 63AE28216C6944AF92BDFE36 /* Feather.ttf */, + 232E4EB922F543ED9CB805DE /* FontAwesome.ttf */, + EEF847D1F0C94996AF898BBC /* FontAwesome5_Brands.ttf */, + 9B1BA625E3DB4564BA3F9E93 /* FontAwesome5_Regular.ttf */, + B435794CFED540CF9475F07F /* FontAwesome5_Solid.ttf */, + 869C972DF8BE4225A4199E6E /* Foundation.ttf */, + DE616D07978F4298991C4DA2 /* Ionicons.ttf */, + 8DF5A4301B2A4369AC501E85 /* MaterialCommunityIcons.ttf */, + 4D08AAD3EA1748709ABD19B7 /* MaterialIcons.ttf */, + 6B5FA0FC9A15448DA445E1FD /* Octicons.ttf */, + 0AB1924C83894EDA8D0A7215 /* Roboto_medium.ttf */, + 86A2FC7C997E428380612AEE /* Roboto.ttf */, + 414647DAE69640738264157E /* rubicon-icon-font.ttf */, + 785430B83E9F4496819A1EE4 /* SimpleLineIcons.ttf */, + A10DDCB137C14DAFB2EABC1C /* Zocial.ttf */, + ); + name = Resources; + sourceTree = ""; + path = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -692,7 +767,7 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0940; + LastUpgradeCheck = 940; ORGANIZATIONNAME = Facebook; TargetAttributes = { 00E356ED1AD99517003FC87E = { @@ -1057,6 +1132,24 @@ files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + 6BCFA3D862AC484FB93A0A11 /* AntDesign.ttf in Resources */, + 258617F423D040F78B149C6C /* Entypo.ttf in Resources */, + 19C047FF95D849CC834E0502 /* EvilIcons.ttf in Resources */, + D6FBAB41115C4913BB38E981 /* Feather.ttf in Resources */, + 5CA9306702E940E5957F7E6E /* FontAwesome.ttf in Resources */, + C4969CA50EC3447898A9AB5F /* FontAwesome5_Brands.ttf in Resources */, + 4236BB92F2FB43C9A57A66F3 /* FontAwesome5_Regular.ttf in Resources */, + 11D889F9F67747F7BBC9BA11 /* FontAwesome5_Solid.ttf in Resources */, + AB7DBBBCE6EE498BAAFDCA96 /* Foundation.ttf in Resources */, + 30BD2728420647F0ABDDE9C4 /* Ionicons.ttf in Resources */, + 1E99BBEE07B048B5B82DF6C1 /* MaterialCommunityIcons.ttf in Resources */, + ED2157E9C29A4B579267CE07 /* MaterialIcons.ttf in Resources */, + 3776D6A1F09C48E092B31397 /* Octicons.ttf in Resources */, + FCDA1538CAB7481A9887678E /* Roboto_medium.ttf in Resources */, + 8FC3B5362B00448A88BCFA7E /* Roboto.ttf in Resources */, + 6B0400163BAD4BD0A1F6E3E5 /* rubicon-icon-font.ttf in Resources */, + CFA73C097DD64D1C808166CF /* SimpleLineIcons.ttf in Resources */, + 24A1104E5BAF49E3BB99A1EC /* Zocial.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1189,6 +1282,17 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BlixtWallet.app/BlixtWallet"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Debug; }; @@ -1207,6 +1311,17 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BlixtWallet.app/BlixtWallet"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Release; }; @@ -1226,6 +1341,11 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = BlixtWallet; VERSIONING_SYSTEM = "apple-generic"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Debug; }; @@ -1244,6 +1364,11 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = BlixtWallet; VERSIONING_SYSTEM = "apple-generic"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Release; }; @@ -1270,6 +1395,17 @@ SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.2; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Debug; }; @@ -1296,6 +1432,17 @@ SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.2; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Release; }; @@ -1321,6 +1468,17 @@ SDKROOT = appletvos; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BlixtWallet-tvOS.app/BlixtWallet-tvOS"; TVOS_DEPLOYMENT_TARGET = 10.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Debug; }; @@ -1346,6 +1504,17 @@ SDKROOT = appletvos; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BlixtWallet-tvOS.app/BlixtWallet-tvOS"; TVOS_DEPLOYMENT_TARGET = 10.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-camera/ios/**", + "$(SRCROOT)/../node_modules/react-native-svg/ios/**", + ); }; name = Release; }; diff --git a/ios/BlixtWallet/Info.plist b/ios/BlixtWallet/Info.plist index 89e6ea0e4..0041b685b 100644 --- a/ios/BlixtWallet/Info.plist +++ b/ios/BlixtWallet/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - BlixtWallet + Blixt Wallet CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -25,7 +25,7 @@ LSRequiresIPhoneOS NSLocationWhenInUseUsageDescription - + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities @@ -40,13 +40,10 @@ UIViewControllerBasedStatusBarAppearance - NSLocationWhenInUseUsageDescription - NSAppTransportSecurity - - NSAllowsArbitraryLoads - + NSAllowsArbitraryLoads + NSExceptionDomains localhost @@ -56,5 +53,26 @@ + UIAppFonts + + AntDesign.ttf + Entypo.ttf + EvilIcons.ttf + Feather.ttf + FontAwesome.ttf + FontAwesome5_Brands.ttf + FontAwesome5_Regular.ttf + FontAwesome5_Solid.ttf + Foundation.ttf + Ionicons.ttf + MaterialCommunityIcons.ttf + MaterialIcons.ttf + Octicons.ttf + Roboto_medium.ttf + Roboto.ttf + rubicon-icon-font.ttf + SimpleLineIcons.ttf + Zocial.ttf + diff --git a/package-lock.json b/package-lock.json index e9688b37b..8380d3f7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2607,8 +2607,7 @@ "@types/node": { "version": "10.12.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "dev": true + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" }, "@types/prop-types": { "version": "15.7.0", @@ -2616,6 +2615,14 @@ "integrity": "sha512-eItQyV43bj4rR3JPV0Skpl1SncRCdziTEK9/v8VwXmV6d/qOUO8/EuWeHBbCZcsfSHfzI5UyMJLCSXtxxznyZg==", "dev": true }, + "@types/qrcode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.3.2.tgz", + "integrity": "sha512-QOxN/lb82j/cLQKUMQVZ3cSOUsUGZqflliEyKwn6tMo+oggjW0NwMDIsPofXcxypHHiz3r0y9Ppoj8TjelQacQ==", + "requires": { + "@types/node": "*" + } + }, "@types/react": { "version": "16.8.13", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.13.tgz", @@ -3582,6 +3589,14 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, + "can-promise": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/can-promise/-/can-promise-0.0.1.tgz", + "integrity": "sha512-gzVrHyyrvgt0YpDm7pn04MQt8gjh0ZAhN4ZDyCRtGl6YnuuK6b4aiUTD7G52r9l4YNmxfTtEscb92vxtAlL6XQ==", + "requires": { + "window-or-global": "^1.0.1" + } + }, "capture-exit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", @@ -4108,6 +4123,11 @@ "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", "dev": true }, + "dijkstrajs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", + "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" + }, "doctrine": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", @@ -8425,7 +8445,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -9340,8 +9359,7 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, "p-each-series": { "version": "1.0.0", @@ -9360,8 +9378,7 @@ "p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "p-limit": { "version": "1.3.0", @@ -9582,6 +9599,11 @@ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -9713,6 +9735,157 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qrcode": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.3.3.tgz", + "integrity": "sha512-SH7V13AcJusH3GT8bMNOGz4w0L+LjcpNOU/NiOgtBhT/5DoWeZE6D5ntMJnJ84AMkoaM4kjJJoHoh9g++8lWFg==", + "requires": { + "can-promise": "0.0.1", + "dijkstrajs": "^1.0.1", + "isarray": "^2.0.1", + "pngjs": "^3.3.0", + "yargs": "^12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "isarray": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", + "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -9863,6 +10036,14 @@ "yargs": "^9.0.0" } }, + "react-native-camera": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-native-camera/-/react-native-camera-2.3.0.tgz", + "integrity": "sha512-K0CTQ+LGeeJ5UDpjAzF1FFZX8fhAEHwtv2IXuQABJuUsXO0+Pc5Ikq5HvD6onsQNMYor96vU5Di7GltZOiPjMA==", + "requires": { + "prop-types": "^15.6.2" + } + }, "react-native-drawer": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/react-native-drawer/-/react-native-drawer-2.5.1.tgz", @@ -9894,6 +10075,19 @@ "react-native-iphone-x-helper": "^1.0.3" } }, + "react-native-svg": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.4.0.tgz", + "integrity": "sha512-IVJlVbS2dAPerPr927fEi4uXzrPXzlra5ddgyJXZZ2IKA2ZygyYWFZDM+vsQs+Vj20CfL8nOWszQQV57vdQgFg==" + }, + "react-native-svg-uri": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-native-svg-uri/-/react-native-svg-uri-1.2.3.tgz", + "integrity": "sha1-L2fzBWQGig/uaKdRhFMypRhaGqs=", + "requires": { + "xmldom": "^0.1.22" + } + }, "react-native-vector-icons": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.1.0.tgz", @@ -11771,6 +11965,11 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "window-or-global": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/window-or-global/-/window-or-global-1.0.1.tgz", + "integrity": "sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4=" + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 411195112..75dfb65fa 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,15 @@ "test": "jest" }, "dependencies": { + "@types/qrcode": "^1.3.2", "native-base": "^2.12.1", + "qrcode": "^1.3.3", "react": "16.8.3", - "react-native": "0.59.4" + "react-native": "0.59.4", + "react-native-camera": "^2.3.0", + "react-native-easy-grid": "^0.2.1", + "react-native-svg": "^9.4.0", + "react-native-svg-uri": "^1.2.3" }, "devDependencies": { "@babel/core": "7.4.3", diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 000000000..7f2ef419a --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,74 @@ +import React, { Component, useState, useRef } from "react"; +import { Alert, Platform, Modal, StyleSheet, View, TouchableHighlight, Image } from "react-native"; +import { Badge, Button, Container, Content, Footer, FooterTab, Icon, Item, Label, Text } from "native-base"; + +import * as QRCode from "qrcode"; +import SvgUri from "react-native-svg-uri"; + +import FooterNav from "./components/FooterNav"; +import Overview from "./windows/Overview"; +import Send from "./windows/Send"; +import Receive from "./windows/Receive"; + + +const svga = QRCode.toString("lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w".toUpperCase()); +//console.log(svga._55.length); +const svgb = QRCode.toString("lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w"); +//console.log(svgb._55.length); + +export default () => { + const [sendModalVisible, setSendModalVisible] = useState(false); + const [receiveModalVisible, setReceiveModalVisible] = useState(false); + + return ( + + { + setSendModalVisible(false); + }}> + setSendModalVisible(false)} doneCallback={() => {}} /> + + + { + setReceiveModalVisible(false); + }}> + setReceiveModalVisible(false)} /> + + + + + + + setSendModalVisible(true)} + onReceiveButtonClicked={() => setReceiveModalVisible(true)} + /> + + ); +}; + +const styles = StyleSheet.create({ + + container: { + flex: 1, + justifyContent: "center", + alignItems: "center", + backgroundColor: "#FFF", + // backgroundColor: "#F5FCFF", + }, + welcome: { + fontSize: 20, + textAlign: "center", + margin: 10, + }, + button: { + textAlign: "center", + }, +}); diff --git a/src/components/FooterNav.tsx b/src/components/FooterNav.tsx new file mode 100644 index 000000000..0cd7fa004 --- /dev/null +++ b/src/components/FooterNav.tsx @@ -0,0 +1,36 @@ +import React from "react"; +import { Button, Footer, FooterTab, Icon, Text } from "native-base"; + +export default ({ onSendButtonClicked, onReceiveButtonClicked }) => { + return ( +
+ + + + + + + + + +
+ ); +}; diff --git a/src/windows/Overview.tsx b/src/windows/Overview.tsx new file mode 100644 index 000000000..18adbb4e5 --- /dev/null +++ b/src/windows/Overview.tsx @@ -0,0 +1,249 @@ +import React, { Component, useState, useRef } from "react"; +import { Alert, Platform, Modal, StyleSheet, View, TouchableHighlight, Image, ScrollView } from "react-native"; +import { Badge, Body, Button, Card, CardItem, Container, Content, Icon, Item, Text, H1, H3, Right } from "native-base"; +import { Col, Row, Grid } from "react-native-easy-grid"; + +export default () => { + return ( + + + + + Alert.alert("Bitcoin")} /> + Alert.alert("Settings")} /> + + 1.234 567 89 ₿ +

200 SEK

+ +
+ + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + -0.01 ₿ + + + + To:{"\n "}Bob + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + + From:{"\n "}Alice + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + onchain + + + + From:{"\n "}1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + -0.01 ₿ + + + + To:{"\n "}Bob + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + + From:{"\n "}Alice + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + onchain + + + + From:{"\n "}1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + -0.01 ₿ + + + + To:{"\n "}Bob + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + + From:{"\n "}Alice + + + + + + Alert.alert("Transaction")}> + + + 2019-01-01 10:00  + + + +0.01 ₿ + + + onchain + + + + From:{"\n "}1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX + + + + + + + +
+ ); +}; + + +const style = StyleSheet.create({ + grid: { + flex: 1, + width: "100%", + height: "100%", + backgroundColor: "#EFEFEF", + }, + top: { + flex: 1, + alignItems: "center", + justifyContent: "center", + width: "100%", + height: 200, + backgroundColor: "#FCFCFC", + }, + onchainIcon: { + position: "absolute", + top: 9, + left : 9, + fontSize: 24, + color: "#d3a100", + }, + settingsIcon: { + position: "absolute", + top: 9, + right: 9, + fontSize: 24, + color: "#2b3751" + }, + transactionList: { + flex: 1, + justifyContent: "flex-start", + padding: 8, + }, +}); + +const header = StyleSheet.create({ + btc: { + fontSize: 36, + marginTop: 16, + marginBottom: 7, + }, + fiat: { + color: "#666" + } +}); + +const transaction = StyleSheet.create({ + transactionTop: { + marginBottom: 8, + }, + transactionTopDate: { + fontWeight: "bold", + paddingRight: 4, + }, + transactionTopValuePositive: { + color: "green", + paddingRight: 8, + }, + transactionTopValueNegative: { + color: "red", + paddingRight: 8, + }, + transactionOnChain: { + marginTop: 1, + }, +}); diff --git a/src/windows/Receive.tsx b/src/windows/Receive.tsx new file mode 100644 index 000000000..43d8af8da --- /dev/null +++ b/src/windows/Receive.tsx @@ -0,0 +1,123 @@ +import React, { useState, useRef } from "react"; +import { View, Touchable, TouchableHighlight, Share, Clipboard, Alert } from "react-native"; +import { Button, Body, Container, Icon, Header, Text, Title, Left, Content, Form, Item, Label, Input, H1, H3, Toast, Root } from "native-base"; + +import * as QRCode from "qrcode"; +import SvgUri from "react-native-svg-uri"; + +const lnInvoice = "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w" + +const qr = QRCode.toString(lnInvoice); + +interface IReceiveProps { + onGoBackCallback: ( transactionInfo: any) => void; +} + +type State = "FORM" | "QR"; + +export default ({ onGoBackCallback }: IReceiveProps) => { + const [state, setState] = useState("FORM"); + const [btcValue, setBtcValue] = useState(undefined); + const [dollarValue, setDollarValue] = useState(undefined); + + return ( + + +
+ + + + + Receive + +
+ {state === "FORM" && + +
+ + + { + text = text.replace(/,/g, "."); + if (text.length === 0) { + setBtcValue(undefined); + setDollarValue(undefined); + return; + } + setBtcValue(text); + setDollarValue((Number.parseFloat(text) * 5083).toFixed(2).toString()); + }} + placeholder="0.00000000" value={btcValue !== undefined ? btcValue.toString() : undefined} keyboardType="numeric" /> + + + + { + text = text.replace(/,/g, "."); + if (text.length === 0) { + setBtcValue(undefined); + setDollarValue(undefined); + return; + } + setBtcValue((Number.parseFloat(text) / 5083).toFixed(8).toString()); + setDollarValue(text); + }} placeholder="0.00" value={dollarValue !== undefined ? dollarValue.toString() : undefined} keyboardType="numeric" /> + + +
+
+ } + {state === "QR" && + +

Scan this QR code

+ Expires: 1h + { + console.log("TEST share"); + const result = await Share.share({ + // message: lnInvoice, + url: "lightning:" + lnInvoice, + }); + }}> + + + { + Clipboard.setString(lnInvoice); + Toast.show({ + text: "Copied to clipboard.", + type: "warning", + }); + }} + style={{ paddingLeft: 18, paddingRight: 18, paddingBottom: 20 }} + numberOfLines={1} + lineBreakMode="middle" + note={true}> + {lnInvoice} + +

100 sat

+
+ } +
+
+ ); +}; diff --git a/src/windows/Send.tsx b/src/windows/Send.tsx new file mode 100644 index 000000000..4eb90bd61 --- /dev/null +++ b/src/windows/Send.tsx @@ -0,0 +1,73 @@ +import React, { useState, useRef, useEffect } from "react"; +import { View } from "react-native"; +import { Badge, Button, Container, Content, Footer, FooterTab, Icon, Item, Label, Text, Header, Left, Title, Body } from "native-base"; +import { RNCamera, Barcode } from "react-native-camera"; + +interface ISendProps { + onGoBackCallback: ( transactionInfo: any) => void; + doneCallback: ( transactionInfo: any) => void; + bolt11Invoice: string; +} + +type State = "CAMERA" | "CONFIRMATION"; + +export default (props: ISendProps) => { + const { onGoBackCallback, doneCallback } = props; + const [ state, setState ] = useState("CAMERA"); + const [ bolt11Invoice, setBolt11Invoice ] = useState(undefined); + + useEffect(() => { + console.log("useEffect inside Send.tsx"); + if (props.bolt11Invoice) { + setBolt11Invoice(props.bolt11Invoice); + setState("CONFIRMATION"); + } + }, [bolt11Invoice, state]); + + if (state === "CAMERA") { + return ( + + { + setBolt11Invoice(barcodes[0].data); + setState("CONFIRMATION"); + }} + onBarCodeRead={({ data }) => { + setBolt11Invoice(data); + setState("CONFIRMATION"); + }} + captureAudio={false} + /> + + ); + } + else if (state === "CONFIRMATION") { + return ( + +
+ + + + + Confirm Pay Invoice + +
+ + fdsfds + {bolt11Invoice} + {JSON.stringify(bolt11Invoice)} +
+ ); + } + else { + return ( + Unknown state + ); + } +}; diff --git a/tslint.json b/tslint.json index 2eb2e5084..0c533c192 100644 --- a/tslint.json +++ b/tslint.json @@ -1,17 +1,24 @@ { - "defaultSeverity": "error", - "extends": [ - "tslint:recommended", - "tslint-react", - "tslint-react-native" - ], - "jsRules": { - }, - "rules": { - "no-var-requires" : true, - "no-empty-interface": false, - "object-literal-sort-keys": false, - "no-consecutive-blank-lines": false - }, - "rulesDirectory": [] + "defaultSeverity": "error", + "extends": [ + "tslint:recommended", + "tslint-react", + "tslint-react-native" + ], + "jsRules": { + }, + "rules": { + "jsx-no-lambda": false, + "no-var-requires" : true, + "no-empty-interface": false, + "object-literal-sort-keys": false, + "no-consecutive-blank-lines": false, + "ordered-imports": false, + "jsx-no-multiline-js": false, + "jsx-alignment": false, + "no-console": false, + "one-line": false, + "no-empty": false + }, + "rulesDirectory": [] }