// src/services/avDeviceService.js import { logger } from '../utils/logger.js'; import { getAVDevicesForModal } from './avModalService.js'; export async function getAVDevicesForStore(storeNumber) { const storeNum = String(storeNumber).trim(); logger('av:service', `Fetching AV devices + full modal data for store ${storeNum}`); try { const modalResult = await getAVDevicesForModal(storeNum); if (!modalResult.success) { return { success: false, message: modalResult.message }; } const enrichedDevices = modalResult.clients || []; // these are already enriched // Card list (simple) const clients = enrichedDevices.map(dev => ({ identifier: dev.identifier, deviceType: dev.deviceType || 'wired-client', name: dev.name || 'AV Device', connectionType: dev.connectionType || 'Wired', ip: dev.ip || '—', mac: dev.mac || '—', vlan: dev.vlan || '—', })); // Full lookup map for modals const fullDevicesMap = {}; enrichedDevices.forEach(dev => { const key = (dev.identifier || '').toUpperCase().trim(); if (key) { fullDevicesMap[key] = { deviceType: dev.deviceType || 'wired-client', data: dev, // ← full enriched object identifier: dev.identifier }; } }); logger('av:service', `Pre-loaded ${enrichedDevices.length} full devices for modals`); return { success: true, storeNumber: storeNum, clients, fullDevices: fullDevicesMap }; } catch (err) { logger('av:service', `Error: ${err.message}`, 'error'); return { success: false, message: err.message }; } } /** * DEPRECATED / fallback only — now we use pre-loaded data * Keep this for a short time in case you have other callers */ export async function getShapedDeviceData(storeNumber, identifier) { // For now, just call the full one and filter (won't be used after frontend update) const result = await getAVDevicesForStore(storeNumber); if (!result.success) return result; const key = identifier.toUpperCase().trim(); const device = result.fullDevices[key]; if (!device) { return { success: false, message: `Device "${identifier}" not found` }; } return { success: true, deviceType: device.deviceType, data: device.data, identifier: device.identifier }; }