react-native-rectangle-doc-scanner 15.0.0 → 15.1.0

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.
@@ -54,7 +54,7 @@ class DocumentScannerModule(reactContext: ReactApplicationContext) :
54
54
  .setScannerMode(GmsDocumentScannerOptions.SCANNER_MODE_FULL)
55
55
  .setResultFormats(GmsDocumentScannerOptions.RESULT_FORMAT_JPEG)
56
56
  .setPageLimit(pageLimit.coerceAtMost(2))
57
- .setGalleryImportAllowed(false)
57
+ .setGalleryImportAllowed(true)
58
58
  .build()
59
59
 
60
60
  val scanner = GmsDocumentScanning.getClient(scannerOptions)
@@ -149,6 +149,7 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
149
149
  const [scannerSession, setScannerSession] = (0, react_1.useState)(0);
150
150
  const [cropEditorDocument, setCropEditorDocument] = (0, react_1.useState)(null);
151
151
  const [cropEditorRectangle, setCropEditorRectangle] = (0, react_1.useState)(null);
152
+ const [androidScanAutoRequested, setAndroidScanAutoRequested] = (0, react_1.useState)(false);
152
153
  const resolvedGridColor = gridColor ?? overlayColor;
153
154
  const docScannerRef = (0, react_1.useRef)(null);
154
155
  const captureModeRef = (0, react_1.useRef)(null);
@@ -165,6 +166,7 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
165
166
  setCroppedImageData(null);
166
167
  setCropEditorDocument(null);
167
168
  setCropEditorRectangle(null);
169
+ setAndroidScanAutoRequested(false);
168
170
  setRotationDegrees(0);
169
171
  setRectangleDetected(false);
170
172
  setRectangleHint(false);
@@ -519,6 +521,9 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
519
521
  console.error('[FullDocScanner] Manual capture failed:', errorMessage, error);
520
522
  captureModeRef.current = null;
521
523
  captureInProgressRef.current = false;
524
+ if (errorMessage.includes('SCAN_CANCELLED')) {
525
+ return;
526
+ }
522
527
  if (error instanceof Error && error.message !== 'capture_in_progress') {
523
528
  emitError(error, 'Failed to capture image. Please try again.');
524
529
  }
@@ -709,6 +714,23 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
709
714
  setCaptureReady(true);
710
715
  }
711
716
  }, [usesAndroidScannerActivity]);
717
+ (0, react_1.useEffect)(() => {
718
+ if (!usesAndroidScannerActivity) {
719
+ return;
720
+ }
721
+ if (androidScanAutoRequested || croppedImageData || cropEditorDocument || processing) {
722
+ return;
723
+ }
724
+ setAndroidScanAutoRequested(true);
725
+ triggerManualCapture();
726
+ }, [
727
+ androidScanAutoRequested,
728
+ cropEditorDocument,
729
+ croppedImageData,
730
+ processing,
731
+ triggerManualCapture,
732
+ usesAndroidScannerActivity,
733
+ ]);
712
734
  const activePreviewImage = croppedImageData ? getActivePreviewImage(croppedImageData) : null;
713
735
  return (react_1.default.createElement(react_native_1.View, { style: styles.container },
714
736
  react_native_1.Platform.OS === 'android' && (react_1.default.createElement(react_native_1.StatusBar, { translucent: true, backgroundColor: "transparent" })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "15.0.0",
3
+ "version": "15.1.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -220,6 +220,7 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
220
220
  const [scannerSession, setScannerSession] = useState(0);
221
221
  const [cropEditorDocument, setCropEditorDocument] = useState<CapturedDocument | null>(null);
222
222
  const [cropEditorRectangle, setCropEditorRectangle] = useState<Rectangle | null>(null);
223
+ const [androidScanAutoRequested, setAndroidScanAutoRequested] = useState(false);
223
224
  const resolvedGridColor = gridColor ?? overlayColor;
224
225
  const docScannerRef = useRef<DocScannerHandle | null>(null);
225
226
  const captureModeRef = useRef<'grid' | 'no-grid' | null>(null);
@@ -240,6 +241,7 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
240
241
  setCroppedImageData(null);
241
242
  setCropEditorDocument(null);
242
243
  setCropEditorRectangle(null);
244
+ setAndroidScanAutoRequested(false);
243
245
  setRotationDegrees(0);
244
246
  setRectangleDetected(false);
245
247
  setRectangleHint(false);
@@ -704,6 +706,10 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
704
706
  captureModeRef.current = null;
705
707
  captureInProgressRef.current = false;
706
708
 
709
+ if (errorMessage.includes('SCAN_CANCELLED')) {
710
+ return;
711
+ }
712
+
707
713
  if (error instanceof Error && error.message !== 'capture_in_progress') {
708
714
  emitError(
709
715
  error,
@@ -941,6 +947,26 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
941
947
  }
942
948
  }, [usesAndroidScannerActivity]);
943
949
 
950
+ useEffect(() => {
951
+ if (!usesAndroidScannerActivity) {
952
+ return;
953
+ }
954
+
955
+ if (androidScanAutoRequested || croppedImageData || cropEditorDocument || processing) {
956
+ return;
957
+ }
958
+
959
+ setAndroidScanAutoRequested(true);
960
+ triggerManualCapture();
961
+ }, [
962
+ androidScanAutoRequested,
963
+ cropEditorDocument,
964
+ croppedImageData,
965
+ processing,
966
+ triggerManualCapture,
967
+ usesAndroidScannerActivity,
968
+ ]);
969
+
944
970
  const activePreviewImage = croppedImageData ? getActivePreviewImage(croppedImageData) : null;
945
971
 
946
972
  return (