fix: 修复蓝牙连接误报与 WiFi 列表获取问题,完善一键添加本人
- connectedDevice 忽略 connect 过程中的 UNAVAILABLE 抖动,避免误报蓝牙关闭 - getWifiList 加 settled 保护,onStartSearch 加防重入 - userManagement 一键添加本人(仅加后台、不下发设备) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
b4d3a034ba
commit
dbb2ab8423
@@ -324,25 +324,28 @@ class LeFuService {
|
||||
reject(new Error('设备未连接,无法获取 WiFi 列表'))
|
||||
return
|
||||
}
|
||||
let settled = false
|
||||
let timer: number | null = null
|
||||
let delayTimer: number | null = null
|
||||
// 15s 整体超时
|
||||
timer = setTimeout(() => {
|
||||
const settle = (err: Error | null, data: LeFuWifiItem[] = []) => {
|
||||
if (settled) return
|
||||
settled = true
|
||||
if (timer !== null) { clearTimeout(timer); timer = null }
|
||||
if (delayTimer !== null) { clearTimeout(delayTimer); delayTimer = null }
|
||||
reject(new Error('获取 WiFi 列表超时'))
|
||||
}, 15000)
|
||||
err ? reject(err) : resolve(data)
|
||||
}
|
||||
// 15s 整体超时
|
||||
timer = setTimeout(() => settle(new Error('获取 WiFi 列表超时')), 15000)
|
||||
// 延时 2s 后下发查询指令(等待设备进入配网模式)
|
||||
delayTimer = setTimeout(() => {
|
||||
this._activeProtocol.dataFindSurroundDevice((res: any[]) => {
|
||||
if (timer !== null) { clearTimeout(timer); timer = null }
|
||||
if (delayTimer !== null) { clearTimeout(delayTimer); delayTimer = null }
|
||||
console.log(TAG, 'getWifiList 结果:', res)
|
||||
if (!res?.length) {
|
||||
this._activeProtocol.dataExitWifiConfig(() => { })
|
||||
resolve([])
|
||||
settle(null, [])
|
||||
return
|
||||
}
|
||||
resolve(res.map((item: any) => ({ ssid: item.ssid || item.name || '', signal: item.signal })))
|
||||
settle(null, res.map((item: any) => ({ ssid: item.ssid || item.name || '', signal: item.signal })))
|
||||
})
|
||||
}, 2000)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user