INSERT INTO `cp_filejs` (`id`,`app`,`path`,`modul`,`file_name`,`content`) VALUES ('243','4','u8/manager','scanner','js/qr.js--','import {\r\n onScanFailure,\r\n onScanSuccess\r\n} from \\\\\\\\\\\\\\\'./qr-scanner.js\\\\\\\\\\\\\\\'\r\nimport {\r\n handleLink,\r\n handleUnlink\r\n} from \\\\\\\\\\\\\\\'./api/scanner.js\\\\\\\\\\\\\\\'\r\nimport app from \\\\\\\"./app.js\\\\\\\"\r\nimport store from \\\\\\\"./store.js\\\\\\\"\r\n\r\nvar $ = Dom7;\r\n\r\nvar html5QrCode;\r\nlet defaultConfig = {\r\n qrbox: {\r\n width: 250,\r\n height: 250\r\n },\r\n fps: 60,\r\n showTorchButtonIfSupported: true,\r\n showZoomSliderIfSupported: true,\r\n // aspectRatio: 1.7777778\r\n}\r\n\r\nconst renderResult = (result) => {\r\n const user = store.getters.user.value\r\n\r\n if (!result || result.status === \\\\\\\\\\\\\\\'error\\\\\\\\\\\\\\\') {\r\n return `
${result?.message || \\\\\\\\\\\\\\\'Oops, looks like you scanned an invalid QR code\\\\\\\\\\\\\\\'}
`\r\n }\r\n\r\n if (result.available) {\r\n return (\r\n `Congrats! This QR code is up for grabs
\r\n `\r\n )\r\n }\r\n\r\n if (!result.available) {\r\n return (\r\n `\r\nSorry, this QR code is already linked
\r\n ${result.data && result.data.linked_to == user?.id ? (\r\n ``\r\n ) : \\\\\\\\\\\\\\\' \\\\\\\\\\\\\\\'}\r\n `\r\n )\r\n }\r\n}\r\n\r\n// Function to create and open the modal with default content\r\nexport function openModal() {\r\n const myModal = app.dialog.create({\r\n title: \\\\\\\\\\\\\\\'Scan QR Code\\\\\\\\\\\\\\\',\r\n content: `\r\n\r\n \r\n
\r\n `,\r\n buttons: [{\r\n text: \\\\\\\\\\\\\\\'Close\\\\\\\\\\\\\\\',\r\n onClick: function () {\r\n try {\r\n if (html5QrCode) {\r\n html5QrCode.stop()\r\n }\r\n\r\n store.dispatch(\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\', null)\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Error stopping qr code\\\\\\\\\\\\\\\', error)\r\n }\r\n }\r\n }]\r\n })\r\n\r\n // Open the modal\r\n myModal.open()\r\n}\r\n\r\n// on link profile\r\n$(document).on(\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'#link-profile\\\\\\\\\\\\\\\', async function () {\r\n const result = store.getters.scannedData.value\r\n\r\n if (result) {\r\n const response = await handleLink(result)\r\n if (response.status === \\\\\\\\\\\\\\\'error\\\\\\\\\\\\\\\') {\r\n store.dispatch(\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\', {\r\n status: \\\\\\\\\\\\\\\'error\\\\\\\\\\\\\\\',\r\n message: response.text,\r\n available: false\r\n })\r\n }\r\n\r\n app.dialog.close()\r\n app.dialog.alert(response.message)\r\n\r\n // reset the scanned data\r\n store.dispatch(\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\', null)\r\n }\r\n})\r\n\r\n// unlink profile\r\n$(document).on(\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'#unlink-profile\\\\\\\\\\\\\\\', async function () {\r\n const result = store.getters.scannedData.value\r\n // close the modal\r\n app.dialog.close()\r\n\r\n if (result) {\r\n const response = await handleUnlink(result)\r\n if (response.type === \\\\\\\\\\\\\\\'success\\\\\\\\\\\\\\\') {\r\n app.dialog.alert(response.text)\r\n }\r\n\r\n // reset the scanned data\r\n store.dispatch(\\\\\\\\\\\\\\\'setScannedData\\\\\\\\\\\\\\\', null)\r\n }\r\n})\r\n\r\nexport function openQRModal() {\r\n openModal()\r\n\r\n html5QrCode = new Html5Qrcode(\\\\\\\"reader\\\\\\\")\r\n\r\n html5QrCode?.start({\r\n facingMode: \\\\\\\"environment\\\\\\\"\r\n },\r\n defaultConfig,\r\n onScanSuccess,\r\n onScanFailure\r\n )\r\n}\r\n\r\n$(document).on(\\\\\\\\\\\\\\\'click\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'.open-qr-modal\\\\\\\\\\\\\\\', function () {\r\n openQRModal()\r\n})\r\n\r\nstore.getters.scannedData.onUpdated((data) => {\r\n if (html5QrCode) {\r\n html5QrCode.stop()\r\n }\r\n\r\n if (data) {\r\n document.getElementById(\\\\\\\\\\\\\\\'custom-modal-content\\\\\\\\\\\\\\\').innerHTML = renderResult(data)\r\n }\r\n})');