react-native-rectangle-doc-scanner 3.121.0 → 3.122.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.
@@ -191,7 +191,6 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
191
191
  });
192
192
  }
193
193
  catch (error) {
194
- console.error('[FullDocScanner] openCropper error:', error);
195
194
  setProcessing(false);
196
195
  // Reset capture state when cropper fails or is cancelled
197
196
  captureInProgressRef.current = false;
@@ -202,21 +201,21 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
202
201
  docScannerRef.current.reset();
203
202
  }
204
203
  const errorCode = error?.code;
205
- const errorMessage = error?.message || String(error);
204
+ const errorMessageRaw = error?.message ?? String(error);
205
+ const errorMessage = typeof errorMessageRaw === 'string' ? errorMessageRaw : String(errorMessageRaw);
206
+ const normalizedMessage = errorMessage.toLowerCase();
207
+ const isUserCancelled = errorCode === 'E_PICKER_CANCELLED' ||
208
+ normalizedMessage === 'user cancelled image selection' ||
209
+ normalizedMessage.includes('cancel');
210
+ if (isUserCancelled) {
211
+ console.log('[FullDocScanner] User cancelled cropper');
212
+ return;
213
+ }
214
+ console.error('[FullDocScanner] openCropper error:', error);
206
215
  if (errorCode === CROPPER_TIMEOUT_CODE || errorMessage === CROPPER_TIMEOUT_CODE) {
207
216
  console.error('[FullDocScanner] Cropper timed out waiting for presentation');
208
217
  emitError(error instanceof Error ? error : new Error('Cropper timed out'), 'Failed to open crop editor. Please try again.');
209
218
  }
210
- else if (errorCode === 'E_PICKER_CANCELLED' ||
211
- errorMessage === 'User cancelled image selection' ||
212
- errorMessage.includes('cancelled') ||
213
- errorMessage.includes('cancel')) {
214
- console.log('[FullDocScanner] User cancelled cropper');
215
- // DocScanner 상태를 리셋하여 카메라가 다시 작동하도록 함
216
- if (docScannerRef.current?.reset) {
217
- docScannerRef.current.reset();
218
- }
219
- }
220
219
  else {
221
220
  emitError(error instanceof Error ? error : new Error(errorMessage), 'Failed to crop image. Please try again.');
222
221
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "3.121.0",
3
+ "version": "3.122.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -268,7 +268,6 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
268
268
  base64: croppedImage.data ?? undefined,
269
269
  });
270
270
  } catch (error) {
271
- console.error('[FullDocScanner] openCropper error:', error);
272
271
  setProcessing(false);
273
272
 
274
273
  // Reset capture state when cropper fails or is cancelled
@@ -281,7 +280,20 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
281
280
  }
282
281
 
283
282
  const errorCode = (error as any)?.code;
284
- const errorMessage = (error as any)?.message || String(error);
283
+ const errorMessageRaw = (error as any)?.message ?? String(error);
284
+ const errorMessage = typeof errorMessageRaw === 'string' ? errorMessageRaw : String(errorMessageRaw);
285
+ const normalizedMessage = errorMessage.toLowerCase();
286
+ const isUserCancelled =
287
+ errorCode === 'E_PICKER_CANCELLED' ||
288
+ normalizedMessage === 'user cancelled image selection' ||
289
+ normalizedMessage.includes('cancel');
290
+
291
+ if (isUserCancelled) {
292
+ console.log('[FullDocScanner] User cancelled cropper');
293
+ return;
294
+ }
295
+
296
+ console.error('[FullDocScanner] openCropper error:', error);
285
297
 
286
298
  if (errorCode === CROPPER_TIMEOUT_CODE || errorMessage === CROPPER_TIMEOUT_CODE) {
287
299
  console.error('[FullDocScanner] Cropper timed out waiting for presentation');
@@ -289,17 +301,6 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
289
301
  error instanceof Error ? error : new Error('Cropper timed out'),
290
302
  'Failed to open crop editor. Please try again.',
291
303
  );
292
- } else if (
293
- errorCode === 'E_PICKER_CANCELLED' ||
294
- errorMessage === 'User cancelled image selection' ||
295
- errorMessage.includes('cancelled') ||
296
- errorMessage.includes('cancel')
297
- ) {
298
- console.log('[FullDocScanner] User cancelled cropper');
299
- // DocScanner 상태를 리셋하여 카메라가 다시 작동하도록 함
300
- if (docScannerRef.current?.reset) {
301
- docScannerRef.current.reset();
302
- }
303
304
  } else {
304
305
  emitError(
305
306
  error instanceof Error ? error : new Error(errorMessage),