UNPKG

matterbridge-roborock-vacuum-plugin

Version:
38 lines 1.55 kB
import { RoomIndexMap } from '../core/application/models/RoomIndexMap.js'; export function mergeSupportedAreasByMap(existingAreas, incomingAreas, mapId, existingIndexMap, incomingIndexMap) { const keptAreas = existingAreas.filter((a) => a.mapId !== mapId); const newForMap = incomingAreas.filter((a) => a.mapId === mapId); const merged = [...keptAreas, ...newForMap]; const supportedAreas = merged.map((area, index) => ({ ...area, areaId: index })); const areaInfos = new Map(); const roomInfos = new Map(); for (let i = 0; i < keptAreas.length; i++) { const oldAreaId = keptAreas[i].areaId; const info = existingIndexMap?.areaInfo.get(oldAreaId); if (!info) continue; areaInfos.set(i, info); const keptMapId = info.mapId ?? 0; roomInfos.set(`${info.roomId}-${keptMapId}`, { areaId: i, mapId: keptMapId, roomName: info.roomName, }); } const offset = keptAreas.length; for (const [oldAreaId, info] of incomingIndexMap.areaInfo) { const newAreaId = offset + oldAreaId; areaInfos.set(newAreaId, info); const incomingMapId = info.mapId ?? mapId; roomInfos.set(`${info.roomId}-${incomingMapId}`, { areaId: newAreaId, mapId: incomingMapId, roomName: info.roomName, }); } return { supportedAreas, roomIndexMap: new RoomIndexMap(areaInfos, roomInfos), }; } //# sourceMappingURL=mergeSupportedAreasByMap.js.map