UNPKG

matterbridge-roborock-vacuum-plugin

Version:
54 lines 2.18 kB
import { Protocol } from '../roborockCommunication/models/index.js'; function unwrapRpcResult(msg) { const dps = (msg.get(Protocol.rpc_response) ?? msg.get(Protocol.general_response)); if (!dps?.result) return undefined; return Array.isArray(dps.result) ? dps.result[0] : dps.result; } /** map_status >> 2; returns undefined when missing or sentinel 63 (unknown). */ export function resolveActiveMapId(status) { if (!status || typeof status !== 'object' || !('map_status' in status)) return undefined; const mapStatus = status.map_status; if (typeof mapStatus !== 'number') return undefined; const mapFlag = mapStatus >> 2; return mapFlag !== 63 ? mapFlag : undefined; } /** Push parser: RPC result object containing map_info[]. */ export function parseMapInfoPush(msg) { const raw = unwrapRpcResult(msg); if (raw && typeof raw === 'object' && 'map_info' in raw) return raw; return undefined; } /** Push parser: RPC result object containing map_status. */ export function parseDeviceStatusPush(msg) { const raw = unwrapRpcResult(msg); if (raw && typeof raw === 'object' && 'map_status' in raw) return raw; return undefined; } /** Build LegacyNamedRoom[] from get_multi_maps_list push, scoped to active map. */ export function extractNamedRooms(mapResult, activeMapId) { if (activeMapId === undefined) return []; if (!mapResult || typeof mapResult !== 'object' || !('map_info' in mapResult)) return []; const rawMapInfo = mapResult.map_info; if (!Array.isArray(rawMapInfo)) return []; const activeMap = rawMapInfo.find((m) => !!m && typeof m === 'object' && 'mapFlag' in m && m.mapFlag === activeMapId); if (!activeMap?.rooms) return []; return activeMap.rooms.map((room) => ({ id: room.id, name: room.iot_name?.trim() ?? '', })); } /** Lookup display name; returns '' when not found (caller prints '(unnamed)'). */ export function roomDisplayName(segmentId, namedRooms) { const room = namedRooms.find((r) => r.id === segmentId); return room?.name ?? ''; } //# sourceMappingURL=mapListHelpers.js.map