UNPKG

@open-tender/store

Version:

A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API

56 lines (55 loc) 1.99 kB
import { __awaiter, __generator } from "tslib"; import { useCallback, useRef, useState } from 'react'; function useBarcodeCameraScanner(listener, close) { var _this = this; var scannedCode = useRef(''); var _a = useState(null), error = _a[0], setError = _a[1]; var _b = useState(false), showScanner = _b[0], setShowScanner = _b[1]; var onCodeScanned = function (event) { scannedCode.current = event.nativeEvent.codeStringValue; setShowScanner(false); close && close(); }; var requestPermissionHandler = function (result) { setShowScanner(result === 'granted'); setError(result !== 'granted' ? 'Authorization Error: Cannot Access Device Camera' : null); }; var read = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { listener.read(requestPermissionHandler); return [2 /*return*/]; }); }); }; var cancel = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { listener.cancel(function () { return setShowScanner(false); }); return [2 /*return*/]; }); }); }; var camera = useCallback(function () { if (!showScanner) { return null; } return listener.scannerComponent(onCodeScanned); }, [listener, showScanner]); var reset = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { scannedCode.current = ''; setShowScanner(false); setError(null); return [2 /*return*/]; }); }); }; return { read: read, camera: camera, error: error, cancel: cancel, reset: reset, showScanner: showScanner, code: scannedCode.current }; } export default useBarcodeCameraScanner;