production-taskbar-client / src / main / utils / barcodeHandler.js
barcodeHandler.js
Raw
function createBarcodeHandler(callback, delay = 60, lenght = 3) {
  let barcode = "";
  let lastInputTime;
  let procTimer;

  return (char) => {
    if (char) {
      const timeSinceInput = new Date() - lastInputTime;
      lastInputTime = new Date();

      clearTimeout(procTimer);

      if (timeSinceInput < delay) {
        barcode += char;
      } else {
        barcode = char;
      }

      if (barcode.length >= lenght)
        procTimer = setTimeout(() => callback(barcode), delay);
    }
  };
}

function parseUserId(barcode) {
  const pattern = /^([a-z]{1})(\d{5})$/; // UserID num patter: S12345 or S00001 ([a-zA-Z]{1})\d{5}
  const re = new RegExp(pattern, "i");
  const match = barcode.match(re);
  if (match) return match[2];
  return null;
}

export { createBarcodeHandler, parseUserId };