/*
    Предрейсовые осмотры - мобильное приложение
    Конфигурация сканера штрихкодов и QR-кодов
*/

//---------
//Константы
//---------

//Типы кодов для распознавания: QR и распространённые штрихкоды
const DEFAULT_CODE_TYPES = ['qr', 'code-128', 'code-39', 'ean-13', 'ean-8', 'upc-a', 'upc-e', 'pdf-417', 'aztec', 'data-matrix'];

//Встроенный сканер устройства: имя события от нативного модуля (Android)
const HARDWARE_SCANNER_EVENT_NAME = 'HardwareScannerData';
//Событие нажатия кнопки встроенного сканера (142/141) — для временного скрытия камеры и перехода в режим «ввод от сканера»
const HARDWARE_SCANNER_TRIGGER_EVENT_NAME = 'HardwareScannerTriggerPressed';

//Диапазоны символов, допустимых в данных штрихкодов/QR: ASCII printable + Latin-1
const HARDWARE_SCANNER_CHAR_ASCII_MIN = 32;
const HARDWARE_SCANNER_CHAR_ASCII_MAX = 126;
const HARDWARE_SCANNER_CHAR_LATIN1_MIN = 160;
const HARDWARE_SCANNER_CHAR_LATIN1_MAX = 255;

//Длительность (мс) скрытия камеры после нажатия кнопки встроенного сканера, чтобы прошивка успела включить лазер
const HARDWARE_SCANNER_CAMERA_HIDE_MS = 3500;

//Определение, должен ли отображаться сканер на главном экране
function shouldShowScanner({ alwaysShowScanner, hasScanResult, isStartupCheckInProgress, isOfflineMessageVisible, isAboutMessageVisible }) {
    if (isOfflineMessageVisible) return false;
    if (isAboutMessageVisible) return false;
    return Boolean(alwaysShowScanner && !hasScanResult && !isStartupCheckInProgress);
}

//----------------
//Интерфейс модуля
//----------------

module.exports = {
    DEFAULT_CODE_TYPES,
    HARDWARE_SCANNER_EVENT_NAME,
    HARDWARE_SCANNER_TRIGGER_EVENT_NAME,
    HARDWARE_SCANNER_CAMERA_HIDE_MS,
    HARDWARE_SCANNER_CHAR_ASCII_MIN,
    HARDWARE_SCANNER_CHAR_ASCII_MAX,
    HARDWARE_SCANNER_CHAR_LATIN1_MIN,
    HARDWARE_SCANNER_CHAR_LATIN1_MAX,
    shouldShowScanner
};
