Phecda

feat: add RNCamera

add RNCamera module and fix a bug on iOS which lead to crash. See react-native #28583, #28545
... ... @@ -135,6 +135,8 @@ android {
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
missingDimensionStrategy 'react-native-camera', 'general'
multiDexEnabled true
}
splits {
abi {
... ...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ngplay">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ngplay">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<!-- 🚨 Permissioins start 🚨 -->
<!-- <uses-permission android:name="android.permission.ACCEPT_HANDOVER" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
<!-- <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />-->
<!-- <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />-->
<!-- <uses-permission android:name="android.permission.BODY_SENSORS" />-->
<!-- <uses-permission android:name="android.permission.CALL_PHONE" />-->
<uses-permission android:name="android.permission.CAMERA" />
<!-- <uses-permission android:name="android.permission.GET_ACCOUNTS" />-->
<!-- <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />-->
<!-- <uses-permission android:name="android.permission.READ_CALENDAR" />-->
<!-- <uses-permission android:name="android.permission.READ_CALL_LOG" />-->
<!-- <uses-permission android:name="android.permission.READ_CONTACTS" />-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />-->
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
<!-- <uses-permission android:name="android.permission.READ_SMS" />-->
<!-- <uses-permission android:name="android.permission.RECEIVE_MMS" />-->
<!-- <uses-permission android:name="android.permission.RECEIVE_SMS" />-->
<!-- <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />-->
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" />-->
<!-- <uses-permission android:name="android.permission.SEND_SMS" />-->
<!-- <uses-permission android:name="android.permission.USE_SIP" />-->
<!-- <uses-permission android:name="android.permission.WRITE_CALENDAR" />-->
<!-- <uses-permission android:name="android.permission.WRITE_CALL_LOG" />-->
<!-- <uses-permission android:name="android.permission.WRITE_CONTACTS" />-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- … -->
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
... ...
... ... @@ -8,18 +8,19 @@
/* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; };
1164347145E0DAEFB1F33C34 /* libPods-NGPlay-NGPlayTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */; };
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
288FC1B5F87808D918D46453 /* libPods-NGPlay-NGPlayTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2DCD954D1E0B4F2C00145EB5 /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; };
39CDDEC249ED7996A20106D1 /* libPods-NGPlay-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */; };
838E2F862CDD952C9D5DC6B9 /* libPods-NGPlay-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */; };
EA2B88C952C6F50E4262BF80 /* libPods-NGPlay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */; };
6042DD5EE85D210DAA8FB423 /* libPods-NGPlay-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */; };
B42641190DD22299CEC01B2A /* libPods-NGPlay-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */; };
CA3002C2EBE7552EB8773862 /* libPods-NGPlay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */; };
CE18668224486D6800FBDC7A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE18668424486D6800FBDC7A /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
... ... @@ -51,23 +52,25 @@
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NGPlay/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = NGPlay/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NGPlay/main.m; sourceTree = "<group>"; };
22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.debug.xcconfig"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* NGPlay-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NGPlay-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* NGPlay-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NGPlay-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay.a"; sourceTree = BUILT_PRODUCTS_DIR; };
36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.debug.xcconfig"; sourceTree = "<group>"; };
443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.release.xcconfig"; sourceTree = "<group>"; };
4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.debug.xcconfig"; sourceTree = "<group>"; };
5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.release.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.release.xcconfig"; sourceTree = "<group>"; };
781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-NGPlayTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.release.xcconfig"; sourceTree = "<group>"; };
7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.release.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.release.xcconfig"; sourceTree = "<group>"; };
97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.release.xcconfig"; sourceTree = "<group>"; };
B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.debug.xcconfig"; sourceTree = "<group>"; };
CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
CE18667F24480E4200FBDC7A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; };
CE18668324486D6800FBDC7A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CE18668524486D6F00FBDC7A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-NGPlayTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.release.xcconfig"; sourceTree = "<group>"; };
FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
... ... @@ -75,7 +78,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
1164347145E0DAEFB1F33C34 /* libPods-NGPlay-NGPlayTests.a in Frameworks */,
288FC1B5F87808D918D46453 /* libPods-NGPlay-NGPlayTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -83,7 +86,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
EA2B88C952C6F50E4262BF80 /* libPods-NGPlay.a in Frameworks */,
CA3002C2EBE7552EB8773862 /* libPods-NGPlay.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -91,7 +94,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
838E2F862CDD952C9D5DC6B9 /* libPods-NGPlay-tvOS.a in Frameworks */,
6042DD5EE85D210DAA8FB423 /* libPods-NGPlay-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -99,7 +102,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
39CDDEC249ED7996A20106D1 /* libPods-NGPlay-tvOSTests.a in Frameworks */,
B42641190DD22299CEC01B2A /* libPods-NGPlay-tvOSTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -133,6 +136,7 @@
13B07FB61A68108700A75B9A /* Info.plist */,
13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
13B07FB71A68108700A75B9A /* main.m */,
CE18668424486D6800FBDC7A /* InfoPlist.strings */,
);
name = NGPlay;
sourceTree = "<group>";
... ... @@ -142,10 +146,10 @@
children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */,
C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */,
5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */,
8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */,
3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */,
D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */,
B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */,
2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
... ... @@ -186,14 +190,14 @@
978F2DE249B40372BE3CFB34 /* Pods */ = {
isa = PBXGroup;
children = (
4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */,
73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */,
36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */,
443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */,
781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */,
F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */,
698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */,
B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */,
C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */,
7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */,
22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */,
3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */,
FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */,
97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */,
CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */,
CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
... ... @@ -205,11 +209,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NGPlayTests" */;
buildPhases = (
AF7CA5B873F71A1FB4E56637 /* [CP] Check Pods Manifest.lock */,
55827B61ABE11DB99B73D735 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
D5D387F840E9276032E1A161 /* [CP] Copy Pods Resources */,
9C9F0214FCC18C3F9F8BC0FE /* [CP] Copy Pods Resources */,
);
buildRules = (
);
... ... @@ -225,13 +229,13 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NGPlay" */;
buildPhases = (
6A48AA69620DEC1B74C29AD2 /* [CP] Check Pods Manifest.lock */,
E918BDC659F0D3C5A862E50A /* [CP] Check Pods Manifest.lock */,
FD10A7F022414F080027D42C /* Start Packager */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
FFA47E9D3DB73E89ADF80B32 /* [CP] Copy Pods Resources */,
F497E0579BFD083304C65F31 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
... ... @@ -246,7 +250,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOS" */;
buildPhases = (
7F2C2457986D77ADA13C1AA9 /* [CP] Check Pods Manifest.lock */,
AB335EA7C3C420CEB5EFF28A /* [CP] Check Pods Manifest.lock */,
FD10A7F122414F3F0027D42C /* Start Packager */,
2D02E4771E0B4A5D006451C7 /* Sources */,
2D02E4781E0B4A5D006451C7 /* Frameworks */,
... ... @@ -266,7 +270,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOSTests" */;
buildPhases = (
69E7B5B017B17519E840477E /* [CP] Check Pods Manifest.lock */,
B9AC4E502CB670D7CB94DDC9 /* [CP] Check Pods Manifest.lock */,
2D02E48C1E0B4A5D006451C7 /* Sources */,
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
2D02E48E1E0B4A5D006451C7 /* Resources */,
... ... @@ -343,6 +347,7 @@
buildActionMask = 2147483647;
files = (
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
CE18668224486D6800FBDC7A /* InfoPlist.strings in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
... ... @@ -393,7 +398,7 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
69E7B5B017B17519E840477E /* [CP] Check Pods Manifest.lock */ = {
55827B61ABE11DB99B73D735 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
... ... @@ -408,14 +413,62 @@
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOSTests-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-NGPlay-NGPlayTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
6A48AA69620DEC1B74C29AD2 /* [CP] Check Pods Manifest.lock */ = {
9C9F0214FCC18C3F9F8BC0FE /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
AB335EA7C3C420CEB5EFF28A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
... ... @@ -430,14 +483,14 @@
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-NGPlay-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
7F2C2457986D77ADA13C1AA9 /* [CP] Check Pods Manifest.lock */ = {
B9AC4E502CB670D7CB94DDC9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
... ... @@ -452,14 +505,14 @@
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOS-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOSTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
AF7CA5B873F71A1FB4E56637 /* [CP] Check Pods Manifest.lock */ = {
E918BDC659F0D3C5A862E50A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
... ... @@ -474,20 +527,20 @@
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-NGPlay-NGPlayTests-checkManifestLockResult.txt",
"$(DERIVED_FILE_DIR)/Pods-NGPlay-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
D5D387F840E9276032E1A161 /* [CP] Copy Pods Resources */ = {
F497E0579BFD083304C65F31 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh",
"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
... ... @@ -526,7 +579,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh\"\n";
showEnvVarsInLog = 0;
};
FD10A7F022414F080027D42C /* Start Packager */ = {
... ... @@ -567,54 +620,6 @@
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
showEnvVarsInLog = 0;
};
FFA47E9D3DB73E89ADF80B32 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
... ... @@ -678,12 +683,21 @@
path = NGPlay;
sourceTree = "<group>";
};
CE18668424486D6800FBDC7A /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
CE18668324486D6800FBDC7A /* en */,
CE18668524486D6F00FBDC7A /* zh-Hans */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */;
baseConfigurationReference = 22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
GCC_PREPROCESSOR_DEFINITIONS = (
... ... @@ -706,7 +720,7 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */;
baseConfigurationReference = 3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
... ... @@ -726,7 +740,7 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */;
baseConfigurationReference = C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
... ... @@ -754,7 +768,7 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */;
baseConfigurationReference = 7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
... ... @@ -776,7 +790,7 @@
};
2D02E4971E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */;
baseConfigurationReference = FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
... ... @@ -804,7 +818,7 @@
};
2D02E4981E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */;
baseConfigurationReference = 97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
... ... @@ -832,7 +846,7 @@
};
2D02E4991E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */;
baseConfigurationReference = CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
... ... @@ -859,7 +873,7 @@
};
2D02E49A1E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */;
baseConfigurationReference = CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
... ...
... ... @@ -37,8 +37,14 @@
</dict>
</dict>
</dict>
<key>NSCameraUsageDescription</key>
<string>Use your camera to take a photo or scan codes</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<string>Use your location to check security</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Add photos to your photo library</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Read images from your photo library to set a avatar or scan codes</string>
<key>UIAppFonts</key>
<array>
<string>AntDesign.ttf</string>
... ...
... ... @@ -2,7 +2,7 @@ platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
def add_flipper_pods!
version = '~> 0.33.1'
version = '~> 0.37.0'
pod 'FlipperKit', version, :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => 'Debug'
pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => 'Debug'
... ... @@ -54,6 +54,27 @@ target 'NGPlay' do
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
# RNPermission start
permissions_path = '../node_modules/react-native-permissions/ios'
# pod 'Permission-BluetoothPeripheral', :path => "#{permissions_path}/BluetoothPeripheral.podspec"
# pod 'Permission-Calendars', :path => "#{permissions_path}/Calendars.podspec"
pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
# pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts.podspec"
# pod 'Permission-FaceID', :path => "#{permissions_path}/FaceID.podspec"
# pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec"
pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse.podspec"
# pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary.podspec"
# pod 'Permission-Microphone', :path => "#{permissions_path}/Microphone.podspec"
# pod 'Permission-Motion', :path => "#{permissions_path}/Motion.podspec"
# pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications.podspec"
pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"
# pod 'Permission-Reminders', :path => "#{permissions_path}/Reminders.podspec"
# pod 'Permission-Siri', :path => "#{permissions_path}/Siri.podspec"
# pod 'Permission-SpeechRecognition', :path => "#{permissions_path}/SpeechRecognition.podspec"
# pod 'Permission-StoreKit', :path => "#{permissions_path}/StoreKit.podspec"
# RNPermission end
target 'NGPlayTests' do
inherit! :complete
# Pods for testing
... ...
... ... @@ -11,11 +11,11 @@ PODS:
- React-Core (= 0.62.1)
- React-jsi (= 0.62.1)
- ReactCommon/turbomodule/core (= 0.62.1)
- Flipper (0.33.1):
- Flipper-Folly (~> 2.1)
- Flipper-RSocket (~> 1.0)
- Flipper (0.37.0):
- Flipper-Folly (~> 2.2)
- Flipper-RSocket (~> 1.1)
- Flipper-DoubleConversion (1.1.7)
- Flipper-Folly (2.1.1):
- Flipper-Folly (2.2.0):
- boost-for-react-native
- CocoaLibEvent (~> 1.0)
- Flipper-DoubleConversion
... ... @@ -23,38 +23,38 @@ PODS:
- OpenSSL-Universal (= 1.0.2.19)
- Flipper-Glog (0.3.6)
- Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.0.0):
- Flipper-Folly (~> 2.0)
- FlipperKit (0.33.1):
- FlipperKit/Core (= 0.33.1)
- FlipperKit/Core (0.33.1):
- Flipper (~> 0.33.1)
- Flipper-RSocket (1.1.0):
- Flipper-Folly (~> 2.2)
- FlipperKit (0.37.0):
- FlipperKit/Core (= 0.37.0)
- FlipperKit/Core (0.37.0):
- Flipper (~> 0.37.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- FlipperKit/CppBridge (0.33.1):
- Flipper (~> 0.33.1)
- FlipperKit/FBCxxFollyDynamicConvert (0.33.1):
- Flipper-Folly (~> 2.1)
- FlipperKit/FBDefines (0.33.1)
- FlipperKit/FKPortForwarding (0.33.1):
- FlipperKit/CppBridge (0.37.0):
- Flipper (~> 0.37.0)
- FlipperKit/FBCxxFollyDynamicConvert (0.37.0):
- Flipper-Folly (~> 2.2)
- FlipperKit/FBDefines (0.37.0)
- FlipperKit/FKPortForwarding (0.37.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (0.33.1):
- FlipperKit/FlipperKitHighlightOverlay (0.37.0)
- FlipperKit/FlipperKitLayoutPlugin (0.37.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.33.1)
- FlipperKit/FlipperKitNetworkPlugin (0.33.1):
- FlipperKit/FlipperKitLayoutTextSearchable (0.37.0)
- FlipperKit/FlipperKitNetworkPlugin (0.37.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.33.1):
- FlipperKit/FlipperKitReactPlugin (0.37.0):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1):
- FlipperKit/FlipperKitUserDefaultsPlugin (0.37.0):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.33.1):
- FlipperKit/SKIOSNetworkPlugin (0.37.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- Folly (2018.10.22.00):
... ... @@ -70,6 +70,12 @@ PODS:
- OpenSSL-Universal (1.0.2.19):
- OpenSSL-Universal/Static (= 1.0.2.19)
- OpenSSL-Universal/Static (1.0.2.19)
- Permission-Camera (2.1.2):
- RNPermissions
- Permission-LocationWhenInUse (2.1.2):
- RNPermissions
- Permission-PhotoLibrary (2.1.2):
- RNPermissions
- RCTRequired (0.62.1)
- RCTTypeSafety (0.62.1):
- FBLazyVector (= 0.62.1)
... ... @@ -233,6 +239,14 @@ PODS:
- React-cxxreact (= 0.62.1)
- React-jsi (= 0.62.1)
- React-jsinspector (0.62.1)
- react-native-camera (3.23.1):
- React
- react-native-camera/RCT (= 3.23.1)
- react-native-camera/RN (= 3.23.1)
- react-native-camera/RCT (3.23.1):
- React
- react-native-camera/RN (3.23.1):
- React
- react-native-netinfo (5.7.1):
- React
- react-native-safe-area-context (0.7.3):
... ... @@ -310,6 +324,8 @@ PODS:
- React
- RNLocalize (1.4.0):
- React
- RNPermissions (2.1.2):
- React
- RNReanimated (1.7.1):
- React
- RNScreens (2.4.0):
... ... @@ -324,13 +340,16 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
- FlipperKit (~> 0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1)
- FlipperKit/FlipperKitReactPlugin (~> 0.33.1)
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1)
- FlipperKit/SKIOSNetworkPlugin (~> 0.33.1)
- FlipperKit (~> 0.37.0)
- FlipperKit/FlipperKitLayoutPlugin (~> 0.37.0)
- FlipperKit/FlipperKitReactPlugin (~> 0.37.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.37.0)
- FlipperKit/SKIOSNetworkPlugin (~> 0.37.0)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera.podspec`)
- Permission-LocationWhenInUse (from `../node_modules/react-native-permissions/ios/LocationWhenInUse.podspec`)
- Permission-PhotoLibrary (from `../node_modules/react-native-permissions/ios/PhotoLibrary.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
... ... @@ -342,6 +361,7 @@ DEPENDENCIES:
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- react-native-camera (from `../node_modules/react-native-camera`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-webview (from `../node_modules/react-native-webview`)
... ... @@ -362,6 +382,7 @@ DEPENDENCIES:
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNLocalize (from `../node_modules/react-native-localize`)
- RNPermissions (from `../node_modules/react-native-permissions`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNVectorIcons (from `../node_modules/react-native-vector-icons`)
... ... @@ -393,6 +414,12 @@ EXTERNAL SOURCES:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
Permission-Camera:
:path: "../node_modules/react-native-permissions/ios/Camera.podspec"
Permission-LocationWhenInUse:
:path: "../node_modules/react-native-permissions/ios/LocationWhenInUse.podspec"
Permission-PhotoLibrary:
:path: "../node_modules/react-native-permissions/ios/PhotoLibrary.podspec"
RCTRequired:
:path: "../node_modules/react-native/Libraries/RCTRequired"
RCTTypeSafety:
... ... @@ -411,6 +438,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-camera:
:path: "../node_modules/react-native-camera"
react-native-netinfo:
:path: "../node_modules/@react-native-community/netinfo"
react-native-safe-area-context:
... ... @@ -449,6 +478,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-gesture-handler"
RNLocalize:
:path: "../node_modules/react-native-localize"
RNPermissions:
:path: "../node_modules/react-native-permissions"
RNReanimated:
:path: "../node_modules/react-native-reanimated"
RNScreens:
... ... @@ -465,16 +496,19 @@ SPEC CHECKSUMS:
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
FBLazyVector: 95ee3e58937a6052f86b0e32f142388c22fa22c5
FBReactNativeSpec: 26dd6459299e48cd64eb397c45635e466dba9f45
Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69
Flipper: 1670db365568191bd123a0c905b834e77ba9e3d3
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Folly: 2de3d03e0acc7064d5e4ed9f730e2f217486f162
Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: 1260a31c05c238eabfa9bb8a64e3983049048371
FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e
Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7
FlipperKit: afd4259ef9eadeeb2d30250b37d95cb3b6b97a69
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355
Permission-Camera: ebdba00e6926aface672cc547b19fa317c3d956e
Permission-LocationWhenInUse: cfd0d39a1c8ab2e9aeb0a1460800f85f74705404
Permission-PhotoLibrary: e29736d903e867d278747eb30951528303425f64
RCTRequired: e291538a455f5ad1afc2139a4288990be0cadd46
RCTTypeSafety: 8b6237185765dd9a03a3647807e08864105b1f95
React: 7b33e15fab929c47ac9c3c94c409258b13cfe452
... ... @@ -484,6 +518,7 @@ SPEC CHECKSUMS:
React-jsi: 600d8e42510c3254fd2abd702f4b9d3f598d8f52
React-jsiexecutor: e9698dee4fd43ceb44832baf15d5745f455b0157
React-jsinspector: f74a62727e5604119abd4a1eda52c0a12144bcd5
react-native-camera: 1b52abea404d04e040edb3e74b7c5523c01a3089
react-native-netinfo: 4fa023c153d582aeae8435df95c9a975c5986449
react-native-safe-area-context: e200d4433aba6b7e60b52da5f37af11f7a0b0392
react-native-webview: 0633fd7861a9bd7a80bacaee7da763c3afc248fa
... ... @@ -503,12 +538,13 @@ SPEC CHECKSUMS:
RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765
RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38
RNLocalize: b6df30cc25ae736d37874f9bce13351db2f56796
RNPermissions: a96580116f7894146552e92b000ac30bf1661947
RNReanimated: 4e102df74a9674fa943e05f97f3362b6e44d0b48
RNScreens: b5c0e1b2b04512919e78bd3898e144a157ce2363
RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4
Yoga: 50fb6eb13d2152e7363293ff603385db380815b1
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: be6f1c915e19e27904229555c28ac7d81a2caf5a
PODFILE CHECKSUM: e597d8e8194d3baf3ffcf09c60685a36eaabf88f
COCOAPODS: 1.9.1
... ...
/*
InfoPlist.strings
NGPlay
Created by Phecda on 2020/4/16.
*/
"NSCameraUsageDescription" = "Use your camera to take a photo or scan codes";
"NSLocationWhenInUseUsageDescription" = "Use your location to check security";
"NSPhotoLibraryAddUsageDescription" = "Add photos to your photo library";
"NSPhotoLibraryUsageDescription" = "Read images from your photo library to set a avatar or scan codes";
... ...
/*
InfoPlist.strings
NGPlay
Created by Phecda on 2020/4/16.
*/
"NSCameraUsageDescription" = "拍照或扫码功能需要使用相机";
"NSLocationWhenInUseUsageDescription" = "为保证安全,需要定位";
"NSPhotoLibraryAddUsageDescription" = "向照片图库中添加照片";
"NSPhotoLibraryUsageDescription" = "诸如扫码、设置头像等功能需要从照片图库中读取图片";
... ...
... ... @@ -25,11 +25,13 @@
"immer": "^6.0.3",
"react": "16.11.0",
"react-native": "0.62.1",
"react-native-camera": "^3.23.1",
"react-native-dark-mode": "^0.2.2",
"react-native-device-info": "^5.5.4",
"react-native-elements": "^1.2.7",
"react-native-gesture-handler": "^1.6.1",
"react-native-localize": "^1.4.0",
"react-native-permissions": "^2.1.2",
"react-native-progress": "^4.1.2",
"react-native-reanimated": "^1.7.1",
"react-native-safe-area-context": "^0.7.3",
... ...
... ... @@ -41,6 +41,7 @@ export const ListItem = ({
subtitleStyle,
rightTitleStyle,
rightSubtitleStyle,
chevron,
...props
}: ListItemProps) => {
const styles = useDynamicStyleSheet(dynamicStyles);
... ... @@ -51,6 +52,7 @@ export const ListItem = ({
subtitleStyle={[styles.subtitleStyle, subtitleStyle]}
rightTitleStyle={[styles.rightTitleStyle, rightTitleStyle]}
rightSubtitleStyle={[styles.rightSubtitleStyle, rightSubtitleStyle]}
chevron={chevron ?? !!props.onPress}
{...props}
/>
);
... ...
... ... @@ -20,6 +20,7 @@ import WebviewScreen from './WebviewScreen';
import { Platform } from 'react-native';
import RNLocalize from './RNLocalize';
import { useI18nStrings } from '../i18n';
import CameraScreen from './CameraScreen';
const MainTab = createBottomTabNavigator<MainTabParamList>();
... ... @@ -111,6 +112,7 @@ const Container = () => {
})}
/>
<MainStack.Screen name="RNLocalize" component={RNLocalize} />
<MainStack.Screen name="RNCamera" component={CameraScreen} />
</MainStack.Navigator>
</NavigationContainer>
);
... ...
import React, { useRef, useCallback, useState } from 'react';
import {
RNCamera,
TakePictureResponse,
RNCameraProps,
} from 'react-native-camera';
import { BGScroll, ListItem, Card, Divider } from '../component/View';
import { useSwitch, useToggle } from '@huse/boolean';
import {
Image,
useWindowDimensions,
View,
SafeAreaView,
ActivityIndicator,
Modal,
} from 'react-native';
import { Icon } from 'react-native-elements';
import {
DynamicStyleSheet,
useDynamicStyleSheet,
} from 'react-native-dark-mode';
import { colorPreset } from '../design';
const dynamicStyles = new DynamicStyleSheet({
cameraContainerPortrait: {
flex: 1,
backgroundColor: colorPreset.backgroundColor.primary,
},
topBar: { flex: 0.5 },
bottomBar: {
justifyContent: 'space-evenly',
alignItems: 'center',
flex: 1,
},
loadingButton: {
width: 52,
height: 52,
borderRadius: 28,
backgroundColor: 'white',
margin: 7,
justifyContent: 'center',
alignItems: 'center',
},
photoResult: {
flex: 1,
height: 240,
resizeMode: 'contain',
margin: 16,
},
});
const CameraModal = ({
visible,
onCancel,
onTakenPicture,
}: {
onCancel: () => void;
visible: boolean;
onTakenPicture: (picture: TakePictureResponse) => void;
}) => {
const styles = useDynamicStyleSheet(dynamicStyles);
const camera = useRef<RNCamera>(null);
const [loading, toggleLoading] = useToggle(false);
const [isBackCamera, toggleCameraType] = useToggle(true);
const { width, height } = useWindowDimensions();
const inPortrait = width <= height;
const previewDimension = inPortrait
? { width, height: (width * 4) / 3 }
: { height, width: (height * 4) / 3 };
const bottomDirection = inPortrait ? 'row' : 'column';
const containerDirection = inPortrait ? 'column' : 'row';
const onShot = useCallback(async () => {
if (camera.current) {
toggleLoading();
const result = await camera.current.takePictureAsync({
base64: true,
quality: 0.8,
pauseAfterCapture: true,
doNotSave: true,
});
toggleLoading();
onTakenPicture(result);
}
}, [onTakenPicture, toggleLoading]);
return (
<Modal visible={visible} onRequestClose={onCancel} animationType="slide">
<View
style={[
styles.cameraContainerPortrait,
{ flexDirection: containerDirection },
]}
>
<SafeAreaView style={styles.topBar} />
<RNCamera
ref={camera}
type={isBackCamera ? 'back' : 'front'}
style={previewDimension}
captureAudio={false}
/>
<SafeAreaView
style={[
styles.bottomBar,
{
flexDirection: bottomDirection,
},
]}
>
<Icon name="close" raised onPress={onCancel} />
{loading ? (
<View style={styles.loadingButton}>
<ActivityIndicator />
</View>
) : (
<Icon name="camera" raised onPress={onShot} />
)}
<Icon
type="ionicon"
name="ios-reverse-camera"
raised
onPress={toggleCameraType}
/>
</SafeAreaView>
</View>
</Modal>
);
};
type ParamsOf<T extends (...args: any[]) => any> = T extends (
...args: infer U
) => any
? U
: never;
const Scanner = ({
visible,
onCancel,
onScanCode,
}: {
visible: boolean;
onCancel: () => void;
onScanCode: (
...args: ParamsOf<Required<RNCameraProps>['onBarCodeRead']>
) => void;
}) => {
const styles = useDynamicStyleSheet(dynamicStyles);
const camera = useRef<RNCamera>(null);
const { width, height } = useWindowDimensions();
const inPortrait = width <= height;
const previewDimension = inPortrait
? { width, height: (width * 4) / 3 }
: { height, width: (height * 4) / 3 };
const bottomDirection = inPortrait ? 'row' : 'column';
const containerDirection = inPortrait ? 'column' : 'row';
return (
<Modal visible={visible} onRequestClose={onCancel} animationType="slide">
<View
style={[
styles.cameraContainerPortrait,
{ flexDirection: containerDirection },
]}
>
<SafeAreaView style={styles.topBar} />
<RNCamera
ref={camera}
style={previewDimension}
captureAudio={false}
onBarCodeRead={onScanCode}
/>
<SafeAreaView
style={[
styles.bottomBar,
{
flexDirection: bottomDirection,
},
]}
>
<Icon name="close" raised onPress={onCancel} />
</SafeAreaView>
</View>
</Modal>
);
};
const CameraScreen = () => {
const styles = useDynamicStyleSheet(dynamicStyles);
const [cameraVisible, openCamera, closeCamera] = useSwitch(false);
const [scannerVisible, openScanner, closeScanner] = useSwitch(false);
const [tempPicture, setTempPicture] = useState<TakePictureResponse>();
const [codeData, setCodeData] = useState<string>();
const [codeType, setCodeType] = useState<string>();
return (
<>
<BGScroll>
<Card round>
<ListItem title="Camera Modal" onPress={openCamera} />
{tempPicture && <Divider />}
{tempPicture && (
<Image
style={styles.photoResult}
source={{
uri: `data:image/jpeg;base64,${tempPicture.base64}`,
}}
/>
)}
</Card>
<Card round>
<ListItem title="Scanner Modal" onPress={openScanner} />
<Divider />
<ListItem title="data" rightTitle={codeData} />
<Divider />
<ListItem title="type" rightTitle={codeType} />
</Card>
</BGScroll>
<CameraModal
visible={cameraVisible}
onTakenPicture={(picture) => {
setTempPicture(picture);
closeCamera();
}}
onCancel={closeCamera}
/>
<Scanner
visible={scannerVisible}
onCancel={closeScanner}
onScanCode={(e) => {
setCodeData(e.data);
setCodeType(e.type);
closeScanner();
}}
/>
</>
);
};
export default CameraScreen;
... ...
... ... @@ -84,6 +84,12 @@ const SystemInfo = ({
rightTitle={strings.name}
chevron
/>
<Divider />
<ListItem
title={'Camera'}
onPress={() => navigation.navigate('RNCamera')}
chevron
/>
</Card>
</BGScroll>
);
... ...
... ... @@ -12,6 +12,7 @@ export type MainStackParamList = {
RNDeviceInfoList: undefined;
WebviewScreen: { uri: string } | undefined;
RNLocalize: undefined;
RNCamera: undefined;
};
export type MainTabScreenProps<RouteName extends keyof MainTabParamList> = {
... ...
... ... @@ -6880,6 +6880,13 @@ react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-
resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=
react-native-camera@^3.23.1:
version "3.23.1"
resolved "https://registry.npm.taobao.org/react-native-camera/download/react-native-camera-3.23.1.tgz#fb6fe52f8a357852de6dcd81d0d187cd632dc7dd"
integrity sha1-+2/lL4o1eFLebc2B0NGHzWMtx90=
dependencies:
prop-types "^15.6.2"
react-native-dark-mode@^0.2.2:
version "0.2.2"
resolved "https://registry.npm.taobao.org/react-native-dark-mode/download/react-native-dark-mode-0.2.2.tgz#4faa335e36330bfca832ba8b3d2bd84c7b880381"
... ... @@ -6930,6 +6937,11 @@ react-native-localize@^1.4.0:
resolved "https://registry.npm.taobao.org/react-native-localize/download/react-native-localize-1.4.0.tgz#4653596d066d0941c48f5404dc1c0d08b6950443"
integrity sha1-RlNZbQZtCUHEj1QE3BwNCLaVBEM=
react-native-permissions@^2.1.2:
version "2.1.2"
resolved "https://registry.npm.taobao.org/react-native-permissions/download/react-native-permissions-2.1.2.tgz#14f30a6cfa0851ecb210d7eadcc590f8823c8585"
integrity sha1-FPMKbPoIUeyyENfq3MWQ+II8hYU=
react-native-progress@^4.1.2:
version "4.1.2"
resolved "https://registry.npm.taobao.org/react-native-progress/download/react-native-progress-4.1.2.tgz#ffb2264ddfeba409c730e36a9791bb7bbe07a00d"
... ...