fix: barcode scanner WASM loading and Android camera permission
All checks were successful
CI / update (push) Successful in 1m5s
All checks were successful
CI / update (push) Successful in 1m5s
- Exclude barcode-detector from Vite optimizeDeps to prevent WASM mangling - Self-host ZXing WASM via Vite ?url import with prepareZXingModule - Use barcode-detector/ponyfill instead of deprecated /pure export - Separate barcode-detector/zxing-wasm into own chunk - Add CAMERA permission to Android manifest for Tauri app
This commit is contained in:
@@ -209,12 +209,24 @@
|
||||
await videoEl.play();
|
||||
scanDebug += ` | video: ${videoEl.videoWidth}x${videoEl.videoHeight}`;
|
||||
|
||||
// Import barcode-detector/pure — ZXing WASM-based ponyfill
|
||||
// Import barcode-detector ponyfill with self-hosted WASM
|
||||
scanDebug += ' | importing detector…';
|
||||
let BarcodeDetector;
|
||||
try {
|
||||
const mod = await import('barcode-detector/pure');
|
||||
const mod = await import('barcode-detector/ponyfill');
|
||||
BarcodeDetector = mod.BarcodeDetector;
|
||||
|
||||
// Point ZXing WASM to our self-hosted copy via Vite ?url import
|
||||
const { prepareZXingModule } = await import('barcode-detector/ponyfill');
|
||||
const wasmModule = await import('zxing-wasm/reader/zxing_reader.wasm?url');
|
||||
prepareZXingModule({
|
||||
overrides: {
|
||||
locateFile: (path, prefix) => {
|
||||
if (path.endsWith('.wasm')) return wasmModule.default;
|
||||
return prefix + path;
|
||||
},
|
||||
},
|
||||
});
|
||||
scanDebug += ' OK';
|
||||
} catch (importErr) {
|
||||
scanDebug = `IMPORT ERROR: ${importErr?.message ?? importErr}`;
|
||||
|
||||
Reference in New Issue
Block a user