@transfergratis/react-native-sdk 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_file_paths.xml.flat +0 -0
  2. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -2
  3. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +1 -1
  4. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
  5. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
  6. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
  7. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +25 -25
  8. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  9. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  10. package/android/build/outputs/logs/manifest-merger-debug-report.txt +35 -35
  11. package/build/components/EnhancedCameraView.d.ts.map +1 -1
  12. package/build/components/EnhancedCameraView.js +12 -6
  13. package/build/components/EnhancedCameraView.js.map +1 -1
  14. package/build/modules/camera/VisionCameraModule.d.ts.map +1 -1
  15. package/build/modules/camera/VisionCameraModule.js +2 -1
  16. package/build/modules/camera/VisionCameraModule.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/components/EnhancedCameraView.tsx +15 -7
  19. package/src/modules/camera/VisionCameraModule.ts +2 -1
  20. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  21. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  22. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  23. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  24. package/android/.gradle/8.9/gc.properties +0 -0
  25. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  26. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  27. package/android/.gradle/config.properties +0 -2
  28. package/android/.gradle/vcs-1/gc.properties +0 -0
  29. package/android/.idea/caches/deviceStreaming.xml +0 -860
  30. package/android/.idea/gradle.xml +0 -14
  31. package/android/.idea/migrations.xml +0 -10
  32. package/android/.idea/misc.xml +0 -9
  33. package/android/.idea/runConfigurations.xml +0 -17
  34. package/android/.idea/vcs.xml +0 -6
  35. package/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar +0 -0
  36. package/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
  37. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  38. package/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-transfergratis-react-native-sdk.jar +0 -0
  39. package/android/build/outputs/aar/transfergratis-react-native-sdk-debug.aar +0 -0
  40. package/android/local.properties +0 -8
  41. /package/android/build/.transforms/{01c28d00c798aa4846f16ce72123ebf9 → 5623d2d87812f07e4b485399524916d6}/results.bin +0 -0
  42. /package/android/build/.transforms/{01c28d00c798aa4846f16ce72123ebf9 → 5623d2d87812f07e4b485399524916d6}/transformed/classes/classes_dex/classes.dex +0 -0
@@ -1,2 +1,2 @@
1
- #Tue Sep 23 09:33:25 WAT 2025
2
- kyc.transfergratis.com.transfergratis-react-native-sdk-main-6\:/xml/file_paths.xml=/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/file_paths.xml
1
+ #Tue Nov 11 10:53:16 WAT 2025
2
+ kyc.transfergratis.com.transfergratis-react-native-sdk-main-6\:/xml/file_paths.xml=/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/file_paths.xml
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res"><file name="file_paths" path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res/xml/file_paths.xml" qualifiers="" type="xml"/></source></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
2
+ <merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res"><file name="file_paths" path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/res/xml/file_paths.xml" qualifiers="" type="xml"/></source></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/jniLibs"/></dataSet></merger>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/jniLibs"/></dataSet></merger>
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/shaders"/></dataSet></merger>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/shaders"/></dataSet></merger>
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
@@ -6,55 +6,55 @@
6
6
  6
7
7
  7 <!-- Permissions nécessaires -->
8
8
  8 <uses-permission android:name="android.permission.CAMERA" />
9
- 8-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:5-65
10
- 8-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:22-62
9
+ 8-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:5-65
10
+ 8-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:22-62
11
11
  9 <uses-permission android:name="android.permission.RECORD_AUDIO" />
12
- 9-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:5-71
13
- 9-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:22-68
12
+ 9-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:5-71
13
+ 9-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:22-68
14
14
  10 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
15
- 10-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:5-80
16
- 10-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:22-77
15
+ 10-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:5-80
16
+ 10-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:22-77
17
17
  11 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
18
- 11-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:5-81
19
- 11-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:22-78
18
+ 11-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:5-81
19
+ 11-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:22-78
20
20
  12 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
21
- 12-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:5-82
22
- 12-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:22-79
21
+ 12-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:5-82
22
+ 12-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:22-79
23
23
  13
24
24
  14 <!-- Features nécessaires -->
25
25
  15 <uses-feature
26
- 15-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:5-84
26
+ 15-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:5-84
27
27
  16 android:name="android.hardware.camera"
28
- 16-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:19-57
28
+ 16-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:19-57
29
29
  17 android:required="true" />
30
- 17-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:58-81
30
+ 17-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:58-81
31
31
  18 <uses-feature
32
- 18-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:5-95
32
+ 18-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:5-95
33
33
  19 android:name="android.hardware.camera.autofocus"
34
- 19-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:19-67
34
+ 19-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:19-67
35
35
  20 android:required="false" />
36
- 20-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:68-92
36
+ 20-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:68-92
37
37
  21
38
38
  22 <application>
39
- 22-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:16:5-27:19
39
+ 22-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:16:5-27:19
40
40
  23
41
41
  24 <!-- FileProvider pour partager les fichiers -->
42
42
  25 <provider
43
- 25-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:18:9-26:20
43
+ 25-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:18:9-26:20
44
44
  26 android:name="androidx.core.content.FileProvider"
45
- 26-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:19:13-62
45
+ 26-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:19:13-62
46
46
  27 android:authorities="${applicationId}.fileprovider"
47
- 27-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:20:13-64
47
+ 27-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:20:13-64
48
48
  28 android:exported="false"
49
- 28-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:21:13-37
49
+ 28-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:21:13-37
50
50
  29 android:grantUriPermissions="true" >
51
- 29-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:22:13-47
51
+ 29-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:22:13-47
52
52
  30 <meta-data
53
- 30-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:23:13-25:54
53
+ 30-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:23:13-25:54
54
54
  31 android:name="android.support.FILE_PROVIDER_PATHS"
55
- 31-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:24:17-67
55
+ 31-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:24:17-67
56
56
  32 android:resource="@xml/file_paths" />
57
- 32-->/Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:25:17-51
57
+ 32-->/Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:25:17-51
58
58
  33 </provider>
59
59
  34 </application>
60
60
  35
@@ -1,67 +1,67 @@
1
1
  -- Merging decision tree log ---
2
2
  manifest
3
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:1-29:12
4
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:1-29:12
3
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:1-29:12
4
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:1-29:12
5
5
  package
6
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:3:5-37
7
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
6
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:3:5-37
7
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
8
8
  xmlns:android
9
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:11-69
9
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:2:11-69
10
10
  uses-permission#android.permission.CAMERA
11
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:5-65
11
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:5-65
12
12
  android:name
13
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:22-62
13
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:6:22-62
14
14
  uses-permission#android.permission.RECORD_AUDIO
15
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:5-71
15
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:5-71
16
16
  android:name
17
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:22-68
17
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:7:22-68
18
18
  uses-permission#android.permission.READ_EXTERNAL_STORAGE
19
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:5-80
19
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:5-80
20
20
  android:name
21
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:22-77
21
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:8:22-77
22
22
  uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
23
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:5-81
23
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:5-81
24
24
  android:name
25
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:22-78
25
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:9:22-78
26
26
  uses-permission#android.permission.MANAGE_EXTERNAL_STORAGE
27
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:5-82
27
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:5-82
28
28
  android:name
29
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:22-79
29
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:10:22-79
30
30
  uses-feature#android.hardware.camera
31
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:5-84
31
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:5-84
32
32
  android:required
33
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:58-81
33
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:58-81
34
34
  android:name
35
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:19-57
35
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:13:19-57
36
36
  uses-feature#android.hardware.camera.autofocus
37
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:5-95
37
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:5-95
38
38
  android:required
39
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:68-92
39
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:68-92
40
40
  android:name
41
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:19-67
41
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:14:19-67
42
42
  application
43
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:16:5-27:19
43
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:16:5-27:19
44
44
  provider#androidx.core.content.FileProvider
45
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:18:9-26:20
45
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:18:9-26:20
46
46
  android:grantUriPermissions
47
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:22:13-47
47
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:22:13-47
48
48
  android:authorities
49
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:20:13-64
49
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:20:13-64
50
50
  android:exported
51
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:21:13-37
51
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:21:13-37
52
52
  android:name
53
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:19:13-62
53
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:19:13-62
54
54
  meta-data#android.support.FILE_PROVIDER_PATHS
55
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:23:13-25:54
55
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:23:13-25:54
56
56
  android:resource
57
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:25:17-51
57
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:25:17-51
58
58
  android:name
59
- ADDED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:24:17-67
59
+ ADDED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml:24:17-67
60
60
  uses-sdk
61
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
62
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
63
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
61
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
62
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
63
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
64
64
  android:targetSdkVersion
65
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
65
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
66
66
  android:minSdkVersion
67
- INJECTED from /Users/admin/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
67
+ INJECTED from /Users/transfergratis/Documents/GitHub/KYC-User-Frontend/transfergratis-sdk/android/src/main/AndroidManifest.xml
@@ -1 +1 @@
1
- {"version":3,"file":"EnhancedCameraView.d.ts","sourceRoot":"","sources":["../../src/components/EnhancedCameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAKzD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2ThE,CAAC"}
1
+ {"version":3,"file":"EnhancedCameraView.d.ts","sourceRoot":"","sources":["../../src/components/EnhancedCameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAMzD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAkUhE,CAAC"}
@@ -3,6 +3,7 @@ import { View, StyleSheet, TouchableOpacity, Text } from 'react-native';
3
3
  import { Camera, useCameraDevice } from 'react-native-vision-camera';
4
4
  import VisionCameraModule from '../modules/camera/VisionCameraModule';
5
5
  import { useI18n } from '../hooks/useI18n';
6
+ import { Button } from './ui/Button';
6
7
  export const EnhancedCameraView = ({ instructions = 'Position yourself in the frame and tap the capture button', showCamera, cameraType: initialCameraType = 'front', style, onCapture, onError, onClose, enableFlash = false, enableHdr = false, quality = 'high', showCaptureButton = true, showSwitchCamera = true, overlayComponent, bbox, canFlip = true, enableVideo = false, isRecording = false, onVideoRecordingStart, onVideoRecordingStop, videoDuration = 10, onSilentCapture, silentCaptureResult, }) => {
7
8
  const { t } = useI18n();
8
9
  const camera = useRef(null);
@@ -10,20 +11,18 @@ export const EnhancedCameraView = ({ instructions = 'Position yourself in the fr
10
11
  const [hasPermission, setHasPermission] = useState(false);
11
12
  const [isInitialized, setIsInitialized] = useState(false);
12
13
  const [flash, setFlash] = useState('off');
14
+ const [refreshCamera, setRefreshCamera] = useState(false);
13
15
  const device = useCameraDevice(cameraType);
14
16
  console.log({ setCameraType, setFlash });
15
- // Check permissions on component mount
16
- useEffect(() => {
17
- if (showCamera) {
18
- checkPermissions();
19
- }
20
- }, [showCamera]);
21
17
  const checkPermissions = async () => {
22
18
  try {
23
19
  const hasAllPermissions = await VisionCameraModule.hasAllPermissions();
20
+ console.log('hasAllPermissions', hasAllPermissions);
24
21
  if (!hasAllPermissions) {
25
22
  const granted = await VisionCameraModule.requestAllPermissions();
23
+ console.log('granted', granted);
26
24
  if (!granted) {
25
+ console.log('permissionRequired', t('camera.permissionRequired'));
27
26
  onError?.({ message: t('camera.permissionRequired') });
28
27
  return;
29
28
  }
@@ -35,6 +34,12 @@ export const EnhancedCameraView = ({ instructions = 'Position yourself in the fr
35
34
  onError?.({ message: t('camera.errorOccurred') });
36
35
  }
37
36
  };
37
+ // Check permissions on component mount
38
+ useEffect(() => {
39
+ if (showCamera) {
40
+ checkPermissions();
41
+ }
42
+ }, [showCamera, refreshCamera]);
38
43
  const onInitialized = useCallback(() => {
39
44
  console.log('Camera initialized!');
40
45
  setIsInitialized(true);
@@ -156,6 +161,7 @@ export const EnhancedCameraView = ({ instructions = 'Position yourself in the fr
156
161
  <Text style={styles.permissionMessage}>
157
162
  {t('camera.permissionRequired')}
158
163
  </Text>
164
+ <Button title="Refresh Camera" onPress={() => setRefreshCamera(!refreshCamera)}/>
159
165
  </View>);
160
166
  }
161
167
  if (!device) {
@@ -1 +1 @@
1
- {"version":3,"file":"EnhancedCameraView.js","sourceRoot":"","sources":["../../src/components/EnhancedCameraView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { View, StyleSheet, TouchableOpacity, Text } from 'react-native';\nimport { Camera, useCameraDevice } from 'react-native-vision-camera';\nimport VisionCameraModule from '../modules/camera/VisionCameraModule';\nimport { useI18n } from '../hooks/useI18n';\nimport { EnhancedCameraViewProps } from './OverLay/type';\n\n\n\n\nexport const EnhancedCameraView: React.FC<EnhancedCameraViewProps> = ({\n instructions = 'Position yourself in the frame and tap the capture button',\n showCamera,\n cameraType: initialCameraType = 'front',\n style,\n onCapture,\n onError,\n onClose,\n enableFlash = false,\n enableHdr = false,\n quality = 'high',\n showCaptureButton = true,\n showSwitchCamera = true,\n overlayComponent,\n bbox,\n canFlip = true,\n enableVideo = false,\n isRecording = false,\n onVideoRecordingStart,\n onVideoRecordingStop,\n videoDuration = 10,\n onSilentCapture,\n silentCaptureResult,\n}) => {\n const { t } = useI18n();\n const camera = useRef<Camera>(null);\n const [cameraType, setCameraType] = useState<'front' | 'back'>(initialCameraType);\n const [hasPermission, setHasPermission] = useState(false);\n const [isInitialized, setIsInitialized] = useState(false);\n const [flash, setFlash] = useState<'off' | 'on' | 'auto'>('off');\n\n const device = useCameraDevice(cameraType);\n console.log({ setCameraType, setFlash });\n\n // Check permissions on component mount\n useEffect(() => {\n if (showCamera) {\n checkPermissions();\n }\n }, [showCamera]);\n\n const checkPermissions = async () => {\n try {\n const hasAllPermissions = await VisionCameraModule.hasAllPermissions();\n if (!hasAllPermissions) {\n const granted = await VisionCameraModule.requestAllPermissions();\n if (!granted) {\n onError?.({ message: t('camera.permissionRequired') });\n return;\n }\n }\n setHasPermission(true);\n } catch (error) {\n console.error('Error checking permissions:', error);\n onError?.({ message: t('camera.errorOccurred') });\n }\n };\n\n const onInitialized = useCallback(() => {\n console.log('Camera initialized!');\n setIsInitialized(true);\n }, []);\n\n const onCameraError = useCallback((error: any) => {\n console.error('Camera error:', error);\n onError?.({ message: error.message || t('camera.errorOccurred') });\n }, [onError, t]);\n\n const captureSilentPhoto = useCallback(async () => {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n console.log('silentCaptureResult', silentCaptureResult);\n if (silentCaptureResult?.isAnalyzing || silentCaptureResult?.success) {\n return;\n }\n try {\n const photo = await camera.current.takePhoto({\n enableShutterSound: true,\n flash: enableFlash ? flash : 'off',\n });\n\n const result = await VisionCameraModule.processPhotoResult(photo);\n onSilentCapture?.(result);\n } catch (error) {\n\n }\n }, [isInitialized, onError, onSilentCapture]);\n\n // Automatically take a silent photo every 5 seconds when ready\n useEffect(() => {\n if (!showCamera || !isInitialized) {\n return;\n }\n\n const intervalId = setInterval(() => {\n captureSilentPhoto();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [showCamera, isInitialized, captureSilentPhoto]);\n\n const capturePhoto = useCallback(async () => {\n try {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n const photo = await camera.current.takePhoto({\n enableShutterSound: true,\n flash: enableFlash ? flash : 'off',\n });\n\n const result = await VisionCameraModule.processPhotoResult(photo);\n onCapture?.(result);\n } catch (error) {\n console.error('Error taking photo:', error);\n onCapture?.({\n success: false,\n error: error instanceof Error ? error.message : t('camera.failedToCapture'),\n });\n }\n }, [isInitialized, quality, flash, enableFlash, onCapture, onError]);\n\n const startVideoRecording = useCallback(async () => {\n try {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n await camera.current.startRecording({\n onRecordingFinished: (video: any) => {\n onVideoRecordingStop?.({\n success: true,\n path: video.path,\n });\n },\n onRecordingError: (error: any) => {\n console.error('Recording error:', error);\n onVideoRecordingStop?.({\n success: false,\n error: error.message || t('camera.failedToStartRecording'),\n });\n },\n });\n\n onVideoRecordingStart?.();\n } catch (error) {\n console.error('Error starting video recording:', error);\n onVideoRecordingStop?.({\n success: false,\n error: error instanceof Error ? error.message : t('camera.failedToStartRecording'),\n });\n }\n }, [isInitialized, onVideoRecordingStart, onVideoRecordingStop, onError]);\n\n const stopVideoRecording = useCallback(async () => {\n try {\n if (!camera.current) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n await camera.current.stopRecording();\n } catch (error) {\n console.error('Error stopping video recording:', error);\n onError?.({ message: t('camera.failedToStopRecording') });\n }\n }, [onError]);\n\n // const switchCamera = useCallback(() => {\n // setCameraType(current => current === 'front' ? 'back' : 'front');\n // }, []);\n\n // const toggleFlash = useCallback(() => {\n // setFlash(current => {\n // switch (current) {\n // case 'off': return 'on';\n // case 'on': return 'auto';\n // case 'auto': return 'off';\n // default: return 'off';\n // }\n // });\n // }, []);\n\n if (!hasPermission) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.permissionMessage}>\n {t('camera.permissionRequired')}\n </Text>\n </View>\n );\n }\n\n if (!device) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.errorMessage}>\n {t('camera.deviceNotAvailable')}\n </Text>\n </View>\n );\n }\n\n if (!showCamera) {\n return <View style={[styles.container, style]} />;\n }\n\n return (\n <View style={[styles.container, style]}>\n <Camera\n ref={camera}\n style={StyleSheet.absoluteFill}\n device={device}\n isActive={showCamera}\n photo={true}\n video={enableVideo}\n audio={enableVideo}\n onInitialized={onInitialized}\n onError={onCameraError}\n />\n\n {/* Instructions */}\n {/* {instructions && (\n <View style={styles.instructionsOverlay}>\n <Text style={styles.instructions}>{instructions}</Text>\n </View>\n )} */}\n\n {/* Custom overlay component */}\n {overlayComponent}\n\n {/* Bounding box overlay */}\n {bbox && (\n <View style={styles.bboxOverlay}>\n <View\n style={[\n styles.bbox,\n {\n left: `${bbox.xMin}%`,\n top: `${bbox.yMin}%`,\n width: `${bbox.xMax - bbox.xMin}%`,\n height: `${bbox.yMax - bbox.yMin}%`,\n borderColor: bbox.borderColor || '#2DBD60',\n borderWidth: bbox.borderWidth || 3,\n borderRadius: bbox.cornerRadius || 8,\n }\n ]}\n />\n </View>\n )}\n\n\n {/* Camera controls */}\n <View style={styles.controlsContainer}>\n {/* Flash button */}\n {/* {enableFlash && (\n <TouchableOpacity style={styles.controlButton} onPress={toggleFlash}>\n <Text style={styles.controlButtonText}>\n {flash === 'off' ? '⚡' : flash === 'on' ? '⚡️' : '✨'}\n </Text>\n </TouchableOpacity>\n )} */}\n\n {/* Capture button */}\n {showCaptureButton && !enableVideo && silentCaptureResult?.success && (\n <TouchableOpacity\n style={styles.captureButton}\n onPress={capturePhoto}\n disabled={!isInitialized}\n >\n <View style={[\n styles.captureButtonInner,\n !isInitialized && styles.captureButtonDisabled\n ]} />\n </TouchableOpacity>\n )}\n\n {/* Video recording button */}\n {showCaptureButton && enableVideo && silentCaptureResult?.success && (\n <TouchableOpacity\n style={[\n styles.captureButton,\n isRecording && styles.recordingButton\n ]}\n onPress={isRecording ? stopVideoRecording : startVideoRecording}\n disabled={!isInitialized}\n >\n <View style={[\n styles.captureButtonInner,\n !isInitialized && styles.captureButtonDisabled,\n isRecording && styles.recordingButtonInner\n ]} />\n </TouchableOpacity>\n )}\n\n {/* Switch camera button */}\n {/* {showSwitchCamera && canFlip && (\n <TouchableOpacity style={styles.controlButton} onPress={switchCamera}>\n <Text style={styles.controlButtonText}>🔄</Text>\n </TouchableOpacity>\n )} */}\n\n {silentCaptureResult?.isAnalyzing && (\n <View style={{ backgroundColor: 'rgba(0, 0, 0, 0.7)', padding: 10, borderRadius: 10 }}>\n <Text style={{ color: 'white', fontSize: 16, fontWeight: 'bold' }}>{t('camera.analyzing')}</Text>\n </View>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: 'black',\n },\n instructionsOverlay: {\n position: 'absolute',\n top: 60,\n left: 20,\n right: 20,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n // borderRadius: 10,\n zIndex: 1,\n },\n instructions: {\n color: 'white',\n fontSize: 16,\n textAlign: 'center',\n fontWeight: '500',\n },\n closeButton: {\n position: 'absolute',\n top: 50,\n right: 20,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n width: 40,\n height: 40,\n borderRadius: 20,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 2,\n },\n closeButtonText: {\n color: 'white',\n fontSize: 20,\n fontWeight: 'bold',\n },\n controlsContainer: {\n position: 'absolute',\n bottom: 40,\n left: 0,\n right: 0,\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingHorizontal: 40,\n zIndex: 1,\n },\n controlButton: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n width: 50,\n height: 50,\n borderRadius: 25,\n justifyContent: 'center',\n alignItems: 'center',\n },\n controlButtonText: {\n fontSize: 24,\n },\n captureButton: {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n width: 80,\n height: 80,\n borderRadius: 40,\n justifyContent: 'center',\n alignItems: 'center',\n borderWidth: 3,\n borderColor: 'white',\n },\n captureButtonInner: {\n backgroundColor: 'white',\n width: 60,\n height: 60,\n borderRadius: 30,\n },\n captureButtonDisabled: {\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\n },\n recordingButton: {\n backgroundColor: 'rgba(255, 59, 48, 0.3)',\n borderColor: '#FF3B30',\n },\n recordingButtonInner: {\n backgroundColor: '#FF3B30',\n },\n permissionMessage: {\n color: 'white',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n errorMessage: {\n color: 'red',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n bboxOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n },\n bbox: {\n position: 'absolute',\n borderStyle: 'solid',\n backgroundColor: 'transparent',\n },\n});"]}
1
+ {"version":3,"file":"EnhancedCameraView.js","sourceRoot":"","sources":["../../src/components/EnhancedCameraView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { View, StyleSheet, TouchableOpacity, Text } from 'react-native';\nimport { Camera, useCameraDevice } from 'react-native-vision-camera';\nimport VisionCameraModule from '../modules/camera/VisionCameraModule';\nimport { useI18n } from '../hooks/useI18n';\nimport { EnhancedCameraViewProps } from './OverLay/type';\nimport { Button } from './ui/Button';\n\n\n\n\nexport const EnhancedCameraView: React.FC<EnhancedCameraViewProps> = ({\n instructions = 'Position yourself in the frame and tap the capture button',\n showCamera,\n cameraType: initialCameraType = 'front',\n style,\n onCapture,\n onError,\n onClose,\n enableFlash = false,\n enableHdr = false,\n quality = 'high',\n showCaptureButton = true,\n showSwitchCamera = true,\n overlayComponent,\n bbox,\n canFlip = true,\n enableVideo = false,\n isRecording = false,\n onVideoRecordingStart,\n onVideoRecordingStop,\n videoDuration = 10,\n onSilentCapture,\n silentCaptureResult,\n}) => {\n const { t } = useI18n();\n const camera = useRef<Camera>(null);\n const [cameraType, setCameraType] = useState<'front' | 'back'>(initialCameraType);\n const [hasPermission, setHasPermission] = useState(false);\n const [isInitialized, setIsInitialized] = useState(false);\n const [flash, setFlash] = useState<'off' | 'on' | 'auto'>('off');\n const [refreshCamera, setRefreshCamera] = useState(false);\n\n const device = useCameraDevice(cameraType);\n console.log({ setCameraType, setFlash });\n\n const checkPermissions = async () => {\n try {\n const hasAllPermissions = await VisionCameraModule.hasAllPermissions();\n console.log('hasAllPermissions', hasAllPermissions);\n if (!hasAllPermissions) {\n const granted = await VisionCameraModule.requestAllPermissions();\n console.log('granted', granted);\n if (!granted) {\n console.log('permissionRequired', t('camera.permissionRequired'));\n onError?.({ message: t('camera.permissionRequired') });\n return;\n }\n }\n setHasPermission(true);\n } catch (error) {\n console.error('Error checking permissions:', error);\n onError?.({ message: t('camera.errorOccurred') });\n }\n };\n\n // Check permissions on component mount\n useEffect(() => {\n if (showCamera) {\n checkPermissions();\n }\n }, [showCamera, refreshCamera]);\n\n\n\n const onInitialized = useCallback(() => {\n console.log('Camera initialized!');\n setIsInitialized(true);\n }, []);\n\n const onCameraError = useCallback((error: any) => {\n console.error('Camera error:', error);\n onError?.({ message: error.message || t('camera.errorOccurred') });\n }, [onError, t]);\n\n const captureSilentPhoto = useCallback(async () => {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n console.log('silentCaptureResult', silentCaptureResult);\n if (silentCaptureResult?.isAnalyzing || silentCaptureResult?.success) {\n return;\n }\n try {\n const photo = await camera.current.takePhoto({\n enableShutterSound: true,\n flash: enableFlash ? flash : 'off',\n });\n\n const result = await VisionCameraModule.processPhotoResult(photo);\n onSilentCapture?.(result);\n } catch (error) {\n\n }\n }, [isInitialized, onError, onSilentCapture]);\n\n // Automatically take a silent photo every 5 seconds when ready\n useEffect(() => {\n if (!showCamera || !isInitialized) {\n return;\n }\n\n const intervalId = setInterval(() => {\n captureSilentPhoto();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [showCamera, isInitialized, captureSilentPhoto]);\n\n const capturePhoto = useCallback(async () => {\n try {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n const photo = await camera.current.takePhoto({\n enableShutterSound: true,\n flash: enableFlash ? flash : 'off',\n });\n\n const result = await VisionCameraModule.processPhotoResult(photo);\n onCapture?.(result);\n } catch (error) {\n console.error('Error taking photo:', error);\n onCapture?.({\n success: false,\n error: error instanceof Error ? error.message : t('camera.failedToCapture'),\n });\n }\n }, [isInitialized, quality, flash, enableFlash, onCapture, onError]);\n\n const startVideoRecording = useCallback(async () => {\n try {\n if (!camera.current || !isInitialized) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n await camera.current.startRecording({\n onRecordingFinished: (video: any) => {\n onVideoRecordingStop?.({\n success: true,\n path: video.path,\n });\n },\n onRecordingError: (error: any) => {\n console.error('Recording error:', error);\n onVideoRecordingStop?.({\n success: false,\n error: error.message || t('camera.failedToStartRecording'),\n });\n },\n });\n\n onVideoRecordingStart?.();\n } catch (error) {\n console.error('Error starting video recording:', error);\n onVideoRecordingStop?.({\n success: false,\n error: error instanceof Error ? error.message : t('camera.failedToStartRecording'),\n });\n }\n }, [isInitialized, onVideoRecordingStart, onVideoRecordingStop, onError]);\n\n const stopVideoRecording = useCallback(async () => {\n try {\n if (!camera.current) {\n onError?.({ message: t('camera.notReady') });\n return;\n }\n\n await camera.current.stopRecording();\n } catch (error) {\n console.error('Error stopping video recording:', error);\n onError?.({ message: t('camera.failedToStopRecording') });\n }\n }, [onError]);\n\n // const switchCamera = useCallback(() => {\n // setCameraType(current => current === 'front' ? 'back' : 'front');\n // }, []);\n\n // const toggleFlash = useCallback(() => {\n // setFlash(current => {\n // switch (current) {\n // case 'off': return 'on';\n // case 'on': return 'auto';\n // case 'auto': return 'off';\n // default: return 'off';\n // }\n // });\n // }, []);\n\n if (!hasPermission) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.permissionMessage}>\n {t('camera.permissionRequired')}\n </Text>\n <Button title=\"Refresh Camera\" onPress={() => setRefreshCamera(!refreshCamera)} />\n </View>\n );\n }\n\n if (!device) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.errorMessage}>\n {t('camera.deviceNotAvailable')}\n </Text>\n </View>\n );\n }\n\n if (!showCamera) {\n return <View style={[styles.container, style]} />;\n }\n\n return (\n <View style={[styles.container, style]}>\n <Camera\n ref={camera}\n style={StyleSheet.absoluteFill}\n device={device}\n isActive={showCamera}\n photo={true}\n video={enableVideo}\n audio={enableVideo}\n onInitialized={onInitialized}\n onError={onCameraError}\n />\n\n {/* Instructions */}\n {/* {instructions && (\n <View style={styles.instructionsOverlay}>\n <Text style={styles.instructions}>{instructions}</Text>\n </View>\n )} */}\n\n {/* Custom overlay component */}\n {overlayComponent}\n\n {/* Bounding box overlay */}\n {bbox && (\n <View style={styles.bboxOverlay}>\n <View\n style={[\n styles.bbox,\n {\n left: `${bbox.xMin}%`,\n top: `${bbox.yMin}%`,\n width: `${bbox.xMax - bbox.xMin}%`,\n height: `${bbox.yMax - bbox.yMin}%`,\n borderColor: bbox.borderColor || '#2DBD60',\n borderWidth: bbox.borderWidth || 3,\n borderRadius: bbox.cornerRadius || 8,\n }\n ]}\n />\n </View>\n )}\n\n\n {/* Camera controls */}\n <View style={styles.controlsContainer}>\n {/* Flash button */}\n {/* {enableFlash && (\n <TouchableOpacity style={styles.controlButton} onPress={toggleFlash}>\n <Text style={styles.controlButtonText}>\n {flash === 'off' ? '⚡' : flash === 'on' ? '⚡️' : '✨'}\n </Text>\n </TouchableOpacity>\n )} */}\n\n {/* Capture button */}\n {showCaptureButton && !enableVideo && silentCaptureResult?.success && (\n <TouchableOpacity\n style={styles.captureButton}\n onPress={capturePhoto}\n disabled={!isInitialized}\n >\n <View style={[\n styles.captureButtonInner,\n !isInitialized && styles.captureButtonDisabled\n ]} />\n </TouchableOpacity>\n )}\n\n {/* Video recording button */}\n {showCaptureButton && enableVideo && silentCaptureResult?.success && (\n <TouchableOpacity\n style={[\n styles.captureButton,\n isRecording && styles.recordingButton\n ]}\n onPress={isRecording ? stopVideoRecording : startVideoRecording}\n disabled={!isInitialized}\n >\n <View style={[\n styles.captureButtonInner,\n !isInitialized && styles.captureButtonDisabled,\n isRecording && styles.recordingButtonInner\n ]} />\n </TouchableOpacity>\n )}\n\n {/* Switch camera button */}\n {/* {showSwitchCamera && canFlip && (\n <TouchableOpacity style={styles.controlButton} onPress={switchCamera}>\n <Text style={styles.controlButtonText}>🔄</Text>\n </TouchableOpacity>\n )} */}\n\n {silentCaptureResult?.isAnalyzing && (\n <View style={{ backgroundColor: 'rgba(0, 0, 0, 0.7)', padding: 10, borderRadius: 10 }}>\n <Text style={{ color: 'white', fontSize: 16, fontWeight: 'bold' }}>{t('camera.analyzing')}</Text>\n </View>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: 'black',\n },\n instructionsOverlay: {\n position: 'absolute',\n top: 60,\n left: 20,\n right: 20,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n // borderRadius: 10,\n zIndex: 1,\n },\n instructions: {\n color: 'white',\n fontSize: 16,\n textAlign: 'center',\n fontWeight: '500',\n },\n closeButton: {\n position: 'absolute',\n top: 50,\n right: 20,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n width: 40,\n height: 40,\n borderRadius: 20,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 2,\n },\n closeButtonText: {\n color: 'white',\n fontSize: 20,\n fontWeight: 'bold',\n },\n controlsContainer: {\n position: 'absolute',\n bottom: 40,\n left: 0,\n right: 0,\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingHorizontal: 40,\n zIndex: 1,\n },\n controlButton: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n width: 50,\n height: 50,\n borderRadius: 25,\n justifyContent: 'center',\n alignItems: 'center',\n },\n controlButtonText: {\n fontSize: 24,\n },\n captureButton: {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n width: 80,\n height: 80,\n borderRadius: 40,\n justifyContent: 'center',\n alignItems: 'center',\n borderWidth: 3,\n borderColor: 'white',\n },\n captureButtonInner: {\n backgroundColor: 'white',\n width: 60,\n height: 60,\n borderRadius: 30,\n },\n captureButtonDisabled: {\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\n },\n recordingButton: {\n backgroundColor: 'rgba(255, 59, 48, 0.3)',\n borderColor: '#FF3B30',\n },\n recordingButtonInner: {\n backgroundColor: '#FF3B30',\n },\n permissionMessage: {\n color: 'white',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n errorMessage: {\n color: 'red',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n bboxOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n },\n bbox: {\n position: 'absolute',\n borderStyle: 'solid',\n backgroundColor: 'transparent',\n },\n});"]}
@@ -1 +1 @@
1
- {"version":3,"file":"VisionCameraModule.d.ts","sourceRoot":"","sources":["../../../src/modules/camera/VisionCameraModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGrG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;WAE9B,WAAW,IAAI,kBAAkB;IAO/C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAUjD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAW1D;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAWzD;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUjD;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAkBvD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAU3C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAc/C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAc3C;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAuBxE;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAiCrF;;AAED,wBAAgD"}
1
+ {"version":3,"file":"VisionCameraModule.d.ts","sourceRoot":"","sources":["../../../src/modules/camera/VisionCameraModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGrG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;WAE9B,WAAW,IAAI,kBAAkB;IAO/C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAUjD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAW1D;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAWzD;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUjD;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAkBvD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAW3C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAc/C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAc3C;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAuBxE;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAiCrF;;AAED,wBAAgD"}
@@ -102,7 +102,8 @@ export class VisionCameraModule {
102
102
  async hasAllPermissions() {
103
103
  try {
104
104
  const status = await this.getPermissionStatus();
105
- return status.camera === 'granted' && status.microphone === 'granted';
105
+ console.log('status', status);
106
+ return status.camera === 'granted';
106
107
  }
107
108
  catch (error) {
108
109
  console.error('Error checking permissions:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"VisionCameraModule.js","sourceRoot":"","sources":["../../../src/modules/camera/VisionCameraModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAmD,MAAM,4BAA4B,CAAC;AACrG,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAa/C,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAC,QAAQ,CAAqB;IAErC,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACjC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YACxE,OAAO,WAAW,IAAI,IAAI,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YACtE,OAAO,UAAU,IAAI,IAAI,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;YAC1D,OAAO,UAAU,KAAK,SAAS,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,2BAA2B,EAAE,CAAC;YAC9D,OAAO,UAAU,KAAK,SAAS,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,yBAAyB,EAAE,CAAC;YAC9D,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,6BAA6B,EAAE,CAAC;YAEtE,OAAO;gBACL,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,gBAAgB;aAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,QAAQ;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC;YACH,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC3D,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,2BAA2B,EAAE;aACnC,CAAC,CAAC;YAEH,OAAO,aAAa,IAAI,iBAAiB,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC,CAAC,oCAAoC;YACpD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAgB;QAEvC,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAEzE,MAAM,UAAU,CAAC,SAAS,CAAC;YACzB,IAAI,EAAE,UAAU,KAAK,CAAC,IAAI,EAAE;YAC5B,EAAE,EAAE,OAAO;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,0BAA0B,CAAC,YAAoB;QACnD,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAElG,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gCAAgC;iBACxC,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,sBAAsB;iBAC9B,CAAC;YACJ,CAAC;YAED,4EAA4E;YAC5E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM;aACrC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,eAAe,kBAAkB,CAAC,WAAW,EAAE,CAAC","sourcesContent":["import { Platform } from 'react-native';\nimport { Camera, CameraDevice, CameraPermissionStatus, PhotoFile } from 'react-native-vision-camera';\nimport * as FileSystem from \"expo-file-system\";\n\nexport interface CameraCaptureResult {\n success: boolean;\n path?: string;\n error?: string;\n}\n\nexport interface CameraPermissions {\n camera: CameraPermissionStatus;\n microphone: CameraPermissionStatus;\n}\n\nexport class VisionCameraModule {\n private static instance: VisionCameraModule;\n\n public static getInstance(): VisionCameraModule {\n if (!VisionCameraModule.instance) {\n VisionCameraModule.instance = new VisionCameraModule();\n }\n return VisionCameraModule.instance;\n }\n\n /**\n * Get available camera devices\n */\n async getCameraDevices(): Promise<CameraDevice[]> {\n try {\n const devices = Camera.getAvailableCameraDevices();\n return devices;\n } catch (error) {\n console.error('Error getting camera devices:', error);\n return [];\n }\n }\n\n /**\n * Get the best available device for selfies (front camera)\n */\n async getFrontCameraDevice(): Promise<CameraDevice | null> {\n try {\n const devices = await this.getCameraDevices();\n const frontCamera = devices.find(device => device.position === 'front');\n return frontCamera || null;\n } catch (error) {\n console.error('Error getting front camera:', error);\n return null;\n }\n }\n\n /**\n * Get the best available device for document capture (back camera)\n */\n async getBackCameraDevice(): Promise<CameraDevice | null> {\n try {\n const devices = await this.getCameraDevices();\n const backCamera = devices.find(device => device.position === 'back');\n return backCamera || null;\n } catch (error) {\n console.error('Error getting back camera:', error);\n return null;\n }\n }\n\n /**\n * Request camera permissions\n */\n async requestCameraPermission(): Promise<boolean> {\n try {\n const permission = await Camera.requestCameraPermission();\n return permission === 'granted';\n } catch (error) {\n console.error('Error requesting camera permission:', error);\n return false;\n }\n }\n\n /**\n * Request microphone permissions\n */\n async requestMicrophonePermission(): Promise<boolean> {\n try {\n const permission = await Camera.requestMicrophonePermission();\n return permission === 'granted';\n } catch (error) {\n console.error('Error requesting microphone permission:', error);\n return false;\n }\n }\n\n /**\n * Get current permission status\n */\n async getPermissionStatus(): Promise<CameraPermissions> {\n try {\n const cameraStatus = await Camera.getCameraPermissionStatus();\n const microphoneStatus = await Camera.getMicrophonePermissionStatus();\n\n return {\n camera: cameraStatus,\n microphone: microphoneStatus,\n };\n } catch (error) {\n console.error('Error getting permission status:', error);\n return {\n camera: 'denied',\n microphone: 'denied',\n };\n }\n }\n\n /**\n * Check if all required permissions are granted\n */\n async hasAllPermissions(): Promise<boolean> {\n try {\n const status = await this.getPermissionStatus();\n return status.camera === 'granted' && status.microphone === 'granted';\n } catch (error) {\n console.error('Error checking permissions:', error);\n return false;\n }\n }\n\n /**\n * Request all required permissions\n */\n async requestAllPermissions(): Promise<boolean> {\n try {\n const [cameraGranted, microphoneGranted] = await Promise.all([\n this.requestCameraPermission(),\n this.requestMicrophonePermission(),\n ]);\n\n return cameraGranted && microphoneGranted;\n } catch (error) {\n console.error('Error requesting permissions:', error);\n return false;\n }\n }\n\n /**\n * Check if camera is available\n */\n async isCameraAvailable(): Promise<boolean> {\n try {\n if (Platform.OS === 'web') {\n return false; // Vision Camera doesn't support web\n }\n\n const devices = await this.getCameraDevices();\n return devices.length > 0;\n } catch (error) {\n console.error('Error checking camera availability:', error);\n return false;\n }\n }\n\n /**\n * Process photo capture result\n */\n async processPhotoResult(photo: PhotoFile): Promise<CameraCaptureResult> {\n\n const newPath = FileSystem.documentDirectory + `photo_${Date.now()}.jpg`;\n\n await FileSystem.copyAsync({\n from: `file://${photo.path}`,\n to: newPath,\n });\n\n try {\n return {\n success: true,\n path: newPath,\n };\n } catch (error) {\n console.error('Error processing photo result:', error);\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error processing photo',\n };\n }\n }\n\n /**\n * Legacy method for backward compatibility\n * @deprecated Use VisionCameraView component instead\n */\n async openCameraWithInstructions(instructions: string): Promise<CameraCaptureResult> {\n console.warn('openCameraWithInstructions is deprecated. Use VisionCameraView component instead.');\n\n try {\n const hasPermissions = await this.requestAllPermissions();\n if (!hasPermissions) {\n return {\n success: false,\n error: 'Camera permissions not granted',\n };\n }\n\n const isAvailable = await this.isCameraAvailable();\n if (!isAvailable) {\n return {\n success: false,\n error: 'Camera not available',\n };\n }\n\n // Return a placeholder result since this should be handled by the component\n return {\n success: true,\n path: `mock_photo_${Date.now()}.jpg`,\n };\n } catch (error) {\n console.error('Error in openCameraWithInstructions:', error);\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n\nexport default VisionCameraModule.getInstance();"]}
1
+ {"version":3,"file":"VisionCameraModule.js","sourceRoot":"","sources":["../../../src/modules/camera/VisionCameraModule.ts"],"names":[],"mappings":"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","sourcesContent":["import { Platform } from 'react-native';\nimport { Camera, CameraDevice, CameraPermissionStatus, PhotoFile } from 'react-native-vision-camera';\nimport * as FileSystem from \"expo-file-system\";\n\nexport interface CameraCaptureResult {\n success: boolean;\n path?: string;\n error?: string;\n}\n\nexport interface CameraPermissions {\n camera: CameraPermissionStatus;\n microphone: CameraPermissionStatus;\n}\n\nexport class VisionCameraModule {\n private static instance: VisionCameraModule;\n\n public static getInstance(): VisionCameraModule {\n if (!VisionCameraModule.instance) {\n VisionCameraModule.instance = new VisionCameraModule();\n }\n return VisionCameraModule.instance;\n }\n\n /**\n * Get available camera devices\n */\n async getCameraDevices(): Promise<CameraDevice[]> {\n try {\n const devices = Camera.getAvailableCameraDevices();\n return devices;\n } catch (error) {\n console.error('Error getting camera devices:', error);\n return [];\n }\n }\n\n /**\n * Get the best available device for selfies (front camera)\n */\n async getFrontCameraDevice(): Promise<CameraDevice | null> {\n try {\n const devices = await this.getCameraDevices();\n const frontCamera = devices.find(device => device.position === 'front');\n return frontCamera || null;\n } catch (error) {\n console.error('Error getting front camera:', error);\n return null;\n }\n }\n\n /**\n * Get the best available device for document capture (back camera)\n */\n async getBackCameraDevice(): Promise<CameraDevice | null> {\n try {\n const devices = await this.getCameraDevices();\n const backCamera = devices.find(device => device.position === 'back');\n return backCamera || null;\n } catch (error) {\n console.error('Error getting back camera:', error);\n return null;\n }\n }\n\n /**\n * Request camera permissions\n */\n async requestCameraPermission(): Promise<boolean> {\n try {\n const permission = await Camera.requestCameraPermission();\n return permission === 'granted';\n } catch (error) {\n console.error('Error requesting camera permission:', error);\n return false;\n }\n }\n\n /**\n * Request microphone permissions\n */\n async requestMicrophonePermission(): Promise<boolean> {\n try {\n const permission = await Camera.requestMicrophonePermission();\n return permission === 'granted';\n } catch (error) {\n console.error('Error requesting microphone permission:', error);\n return false;\n }\n }\n\n /**\n * Get current permission status\n */\n async getPermissionStatus(): Promise<CameraPermissions> {\n try {\n const cameraStatus = await Camera.getCameraPermissionStatus();\n const microphoneStatus = await Camera.getMicrophonePermissionStatus();\n\n return {\n camera: cameraStatus,\n microphone: microphoneStatus,\n };\n } catch (error) {\n console.error('Error getting permission status:', error);\n return {\n camera: 'denied',\n microphone: 'denied',\n };\n }\n }\n\n /**\n * Check if all required permissions are granted\n */\n async hasAllPermissions(): Promise<boolean> {\n try {\n const status = await this.getPermissionStatus();\n console.log('status', status);\n return status.camera === 'granted';\n } catch (error) {\n console.error('Error checking permissions:', error);\n return false;\n }\n }\n\n /**\n * Request all required permissions\n */\n async requestAllPermissions(): Promise<boolean> {\n try {\n const [cameraGranted, microphoneGranted] = await Promise.all([\n this.requestCameraPermission(),\n this.requestMicrophonePermission(),\n ]);\n\n return cameraGranted && microphoneGranted;\n } catch (error) {\n console.error('Error requesting permissions:', error);\n return false;\n }\n }\n\n /**\n * Check if camera is available\n */\n async isCameraAvailable(): Promise<boolean> {\n try {\n if (Platform.OS === 'web') {\n return false; // Vision Camera doesn't support web\n }\n\n const devices = await this.getCameraDevices();\n return devices.length > 0;\n } catch (error) {\n console.error('Error checking camera availability:', error);\n return false;\n }\n }\n\n /**\n * Process photo capture result\n */\n async processPhotoResult(photo: PhotoFile): Promise<CameraCaptureResult> {\n\n const newPath = FileSystem.documentDirectory + `photo_${Date.now()}.jpg`;\n\n await FileSystem.copyAsync({\n from: `file://${photo.path}`,\n to: newPath,\n });\n\n try {\n return {\n success: true,\n path: newPath,\n };\n } catch (error) {\n console.error('Error processing photo result:', error);\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error processing photo',\n };\n }\n }\n\n /**\n * Legacy method for backward compatibility\n * @deprecated Use VisionCameraView component instead\n */\n async openCameraWithInstructions(instructions: string): Promise<CameraCaptureResult> {\n console.warn('openCameraWithInstructions is deprecated. Use VisionCameraView component instead.');\n\n try {\n const hasPermissions = await this.requestAllPermissions();\n if (!hasPermissions) {\n return {\n success: false,\n error: 'Camera permissions not granted',\n };\n }\n\n const isAvailable = await this.isCameraAvailable();\n if (!isAvailable) {\n return {\n success: false,\n error: 'Camera not available',\n };\n }\n\n // Return a placeholder result since this should be handled by the component\n return {\n success: true,\n path: `mock_photo_${Date.now()}.jpg`,\n };\n } catch (error) {\n console.error('Error in openCameraWithInstructions:', error);\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }\n}\n\nexport default VisionCameraModule.getInstance();"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transfergratis/react-native-sdk",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "transfergratis react native sdk",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -4,6 +4,7 @@ import { Camera, useCameraDevice } from 'react-native-vision-camera';
4
4
  import VisionCameraModule from '../modules/camera/VisionCameraModule';
5
5
  import { useI18n } from '../hooks/useI18n';
6
6
  import { EnhancedCameraViewProps } from './OverLay/type';
7
+ import { Button } from './ui/Button';
7
8
 
8
9
 
9
10
 
@@ -38,23 +39,20 @@ export const EnhancedCameraView: React.FC<EnhancedCameraViewProps> = ({
38
39
  const [hasPermission, setHasPermission] = useState(false);
39
40
  const [isInitialized, setIsInitialized] = useState(false);
40
41
  const [flash, setFlash] = useState<'off' | 'on' | 'auto'>('off');
42
+ const [refreshCamera, setRefreshCamera] = useState(false);
41
43
 
42
44
  const device = useCameraDevice(cameraType);
43
45
  console.log({ setCameraType, setFlash });
44
46
 
45
- // Check permissions on component mount
46
- useEffect(() => {
47
- if (showCamera) {
48
- checkPermissions();
49
- }
50
- }, [showCamera]);
51
-
52
47
  const checkPermissions = async () => {
53
48
  try {
54
49
  const hasAllPermissions = await VisionCameraModule.hasAllPermissions();
50
+ console.log('hasAllPermissions', hasAllPermissions);
55
51
  if (!hasAllPermissions) {
56
52
  const granted = await VisionCameraModule.requestAllPermissions();
53
+ console.log('granted', granted);
57
54
  if (!granted) {
55
+ console.log('permissionRequired', t('camera.permissionRequired'));
58
56
  onError?.({ message: t('camera.permissionRequired') });
59
57
  return;
60
58
  }
@@ -66,6 +64,15 @@ export const EnhancedCameraView: React.FC<EnhancedCameraViewProps> = ({
66
64
  }
67
65
  };
68
66
 
67
+ // Check permissions on component mount
68
+ useEffect(() => {
69
+ if (showCamera) {
70
+ checkPermissions();
71
+ }
72
+ }, [showCamera, refreshCamera]);
73
+
74
+
75
+
69
76
  const onInitialized = useCallback(() => {
70
77
  console.log('Camera initialized!');
71
78
  setIsInitialized(true);
@@ -202,6 +209,7 @@ export const EnhancedCameraView: React.FC<EnhancedCameraViewProps> = ({
202
209
  <Text style={styles.permissionMessage}>
203
210
  {t('camera.permissionRequired')}
204
211
  </Text>
212
+ <Button title="Refresh Camera" onPress={() => setRefreshCamera(!refreshCamera)} />
205
213
  </View>
206
214
  );
207
215
  }
@@ -117,7 +117,8 @@ export class VisionCameraModule {
117
117
  async hasAllPermissions(): Promise<boolean> {
118
118
  try {
119
119
  const status = await this.getPermissionStatus();
120
- return status.camera === 'granted' && status.microphone === 'granted';
120
+ console.log('status', status);
121
+ return status.camera === 'granted';
121
122
  } catch (error) {
122
123
  console.error('Error checking permissions:', error);
123
124
  return false;