Skip to content

Instantly share code, notes, and snippets.

@CezaryDanielNowak
Created January 10, 2023 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CezaryDanielNowak/a94633003f07c613b55ce8fd214ec771 to your computer and use it in GitHub Desktop.
Save CezaryDanielNowak/a94633003f07c613b55ce8fd214ec771 to your computer and use it in GitHub Desktop.
/** * BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason. * * @param {string} barcodeType only qr_code and pdf417 are supported * @return {boolean} (async) If BarcodeDetector works or not */
/**
* BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason.
*
* @param {string} barcodeType only qr_code and pdf417 are supported
* @return {boolean} (async) If BarcodeDetector works or not
*/
const isBarcodeDetectorWorking = (barcodeType) => {
return new Promise((resolve, reject) => {
if (typeof BarcodeDetector === 'undefined') return reject('UNSUPPORTED');
const barcodeDetector = new BarcodeDetector({
formats: [barcodeType || 'pdf417'],
});
const image = new Image();
image.onload = function () {
const canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
const ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0);
barcodeDetector
.detect(ctx.getImageData(0, 0, canvas.width, canvas.height))
.then((result) => {
if (result[0].rawValue !== 'a') {
throw new Error();
}
})
.then(resolve)
.catch(() => {
reject('DETECTION_ERROR');
});
};
/* eslint-disable max-len */
if (barcodeType === 'qr_code') {
image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAABzAQMAAACRja+lAAAABlBMVEUAAAD///+l2Z/dAAAA0klEQVQ4y62VMRKDMAwE5aFwmSf4J/Axz8AMHyM/4QmUrlBOIolJm5ML8FKcLd1hi/6MXVhugqHPY9jxHgJ4gqpuMu+QXwN4hGpL0G/yiGLsdw7lE9Mg9vqt9Hs/CDZ/2mjS3S+CPTbWz3ueCEbViy1RBU0IYDyXkm2qJ0LEs3cR1ig6u/KM0mvRzfV9/zTrItkWuUxi+eNPLdl/apav/ExHlbxJBFu+7WOR5Plh2c+HUUy/nxcka89PCMOkb35Y9vqt9Lc+y+5P8vx0v/7n4PvtBfTSFutld9P4AAAAAElFTkSuQmCC';
} else {
image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAawAAAB6BAMAAAAR9noZAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAYUExURQAAAP///7+/v0BAQDAwMJWVlc/Pz2hoaAEDc7cAAALdSURBVHja7dxLjqMwFIVht8QC2hMWADuADWTiHURizCgrgPU3+D4wj1LXhFR39CNFRQob+yt5cnytCvEjrwALFixYsGD9b6zfYX91sS0+69VePLHfxC9axEOb8tv+/tz+b6OU7eLhHb9gwYIFCxYsWLBgwYIFC9a/x3r16/U4DFj1UzP08/ItNc1yJ21SM+YW1XIf8pNnbrv2rpf79W1zMUrKv5ORrM/4HlbdNHl6e1ZaKNMyhXU6/XInbSqddFJOr1MVkODGYhQBy0jWZ34PK/rrStZ+OW19t8V2HuV6iR0XYgcLFixYsGDBggULFixYH8yS7CufRiPillvXeDgvsXDy9LvejTkophwtZYqSd6vcdtanTW4pWVg+8vQtMTI5SuJ8rxOImn3XqdX52UNbr9Ba87GxZKIptx31aZ9bCiLpH6t26M2h/7x1Ui6Pq82abUOmXHLlwrvemDm/K8KCBQsWLFiwYMGCBQvWh7Ks8Ckhz6JiyZKoV3vEnHJAnLzMarXgKcdIK9OOWoXuvUWnkdSSdbgzRlqZWiK5BfuSJTn55RsCQ47zgxfFbcJDnqoV1WflNd6i0w0ES9bhztB/PlBwPp7QnRZjucFy3HJpd8vr+6PAggULFixYsGDBggUL1mexrMD68EH2Z6tbD5ddzsgWI5+ebls/dGxZ2OrLjZdUy7AqvV5eab4p9EvV+Oms/dnq1pOwkSX0Pzzdtn5E3LKw1Zd7L4CXWwvSq/ZK801bNOfjBOXWTHtYcOHiuEI4bc10h82fcDFOe+/OEyxYsGDBggULFixYsGD9OKtMrskz7eC5tdMku03l5fVli5G9p+GoZ6qtCPt0SpnDk1aeJ+1zA6tMrpVn2slza6dJdmPVXl+20N94Go56ptpK5g9nlTm8UvSgfW4+3n98bSyO9R9/ht3mzfXB/7BbtMdDEt3pfbBgwYIFCxYsWLBgwYIF6wdZ/IdxWLBgfe/6A176izqW7zTOAAAAAElFTkSuQmCC';
}
/* eslint-enable max-len */
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment