matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
44 lines • 1.58 kB
JavaScript
import { MapInfo } from '../../../core/application/models/index.js';
export const HomeModelMapper = {
toRoomMapping(dto, rooms) {
const room = rooms.find((r) => r.id === dto.id || String(r.id) === dto.iot_name_id);
return {
id: dto.id,
iot_name_id: dto.iot_name_id,
tag: dto.tag,
iot_map_id: dto.iot_map_id ?? 0,
iot_name: room?.name ?? dto.iot_name ?? `Room ${dto.id}`,
};
},
rawArrayToMapRoomDto(raw, activeMap) {
return {
id: raw[0],
iot_name_id: raw[1],
tag: raw[2] ?? 0,
iot_map_id: activeMap,
};
},
rawRoomDataToRoomMappings(rawData, mapId, mapInfo, rooms) {
return rawData
.map((entry) => this.rawArrayToMapRoomDto(entry, mapId))
.map((dto) => this.enrichMapRoomDtoFromMapInfo(dto, mapInfo))
.map((dto) => this.toRoomMapping(dto, rooms));
},
enrichMapRoomDtoFromMapInfo(dto, mapInfo) {
if (dto.iot_name) {
return dto;
}
const { allRooms } = mapInfo;
const cached = allRooms.find((room) => room.id === dto.id && room.iot_name_id === dto.iot_name_id) ??
allRooms.find((room) => room.id === dto.id) ??
allRooms.find((room) => room.iot_name_id === dto.iot_name_id);
if (cached?.iot_name) {
return { ...dto, iot_name: cached.iot_name };
}
return dto;
},
toMapInfo(dto) {
return new MapInfo(dto);
},
};
//# sourceMappingURL=mappers.js.map