/** 扫描/配对列表仅展示以下蓝牙名称(大小写不敏感;支持完整匹配或关键字包含) */ export const ALLOWED_BLUETOOTH_PRINTER_NAMES = [ 'GP-D320FX-spp_A7FO', 'Virtual BT Printer', ] as const const ALLOWED_BLUETOOTH_PRINTER_NAME_SET = new Set( ALLOWED_BLUETOOTH_PRINTER_NAMES.map((name) => name.toLowerCase()), ) /** 名称包含以下片段也视为允许(兼容系统配对名略有差异) */ const ALLOWED_BLUETOOTH_PRINTER_NAME_FRAGMENTS = [ 'virtual bt', 'gp-d320fx', 'd320fx', ] as const export function normalizeBluetoothPrinterName (name: string | undefined | null): string { return String(name ?? '').trim() } /** 仅允许白名单内的蓝牙打印机名称出现在连接列表 */ export function isAllowedBluetoothPrinterName (name: string | undefined | null): boolean { const normalized = normalizeBluetoothPrinterName(name) if (!normalized) return false const lower = normalized.toLowerCase() if (ALLOWED_BLUETOOTH_PRINTER_NAME_SET.has(lower)) return true return ALLOWED_BLUETOOTH_PRINTER_NAME_FRAGMENTS.some((frag) => lower.includes(frag)) } /** 一体机虚拟蓝牙名(走整页光栅与预览一致,不走 native printTemplate) */ export function isVirtualBtPrinterDeviceName (name: string | undefined | null): boolean { return normalizeBluetoothPrinterName(name).toLowerCase() === 'virtual bt printer' }