46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
/** 设备列表接口可能不返回或延迟返回 roomName,修改房间后写入本地覆盖,列表拉取后合并展示 */
|
||
const STORAGE_KEY = 'deviceRoomOverlay'
|
||
|
||
export function patchDeviceRoomInStorage(deviceId, roomId, roomName) {
|
||
if (deviceId === undefined || deviceId === null || deviceId === '') return
|
||
try {
|
||
let map = {}
|
||
const raw = uni.getStorageSync(STORAGE_KEY)
|
||
if (raw) {
|
||
map = typeof raw === 'string' ? JSON.parse(raw) : raw
|
||
}
|
||
if (!map || typeof map !== 'object') map = {}
|
||
map[String(deviceId)] = {
|
||
roomId,
|
||
roomName: roomName != null ? String(roomName) : '',
|
||
ts: Date.now()
|
||
}
|
||
uni.setStorageSync(STORAGE_KEY, JSON.stringify(map))
|
||
} catch (e) {}
|
||
}
|
||
|
||
export function readDeviceRoomOverlayMap() {
|
||
try {
|
||
const raw = uni.getStorageSync(STORAGE_KEY)
|
||
if (!raw) return {}
|
||
return typeof raw === 'string' ? JSON.parse(raw) : raw
|
||
} catch (e) {
|
||
return {}
|
||
}
|
||
}
|
||
|
||
/** 就地合并到行数据,保证首页能显示刚改过的房间名 */
|
||
export function mergeDeviceRoomOverlayIntoRows(rows) {
|
||
if (!rows || !rows.length) return rows
|
||
const map = readDeviceRoomOverlayMap()
|
||
rows.forEach(d => {
|
||
if (!d) return
|
||
const sid = d.id != null ? String(d.id) : ''
|
||
if (!sid || !map[sid]) return
|
||
const o = map[sid]
|
||
if (o.roomName) d.roomName = o.roomName
|
||
if (o.roomId !== undefined && o.roomId !== null) d.roomId = o.roomId
|
||
})
|
||
return rows
|
||
}
|