fix: 修复蓝牙连接误报与 WiFi 列表获取问题,完善一键添加本人

- connectedDevice 忽略 connect 过程中的 UNAVAILABLE 抖动,避免误报蓝牙关闭
- getWifiList 加 settled 保护,onStartSearch 加防重入
- userManagement 一键添加本人(仅加后台、不下发设备)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
17792275749
2026-08-27 14:02:21 +08:00
co-authored by Claude Opus 4.7
parent b4d3a034ba
commit dbb2ab8423
5 changed files with 56 additions and 16 deletions
+11 -8
View File
@@ -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)
})