fix(client): 设备页每 15s 静默刷新列表,其他设备状态变化 ~15s 内可见

原设备列表打开时加载一次就不动(感觉十几分钟才同步)。加透传式轮询包装器
_DevicesAutoRefresh:在设备页期间每 15s 调 DevicesNotifier.refresh()(静默、不闪 loading、
失败保留旧列表)。配合服务端会话轮询刷 last_seen + 90s 窗口,其他设备上/下线 ~15s 内反映。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-30 08:05:32 +08:00
parent 3167ca8a74
commit d192d96d95
2 changed files with 45 additions and 1 deletions
+12
View File
@@ -89,6 +89,18 @@ class DevicesNotifier extends AsyncNotifier<List<Device>> {
await future;
}
/// 静默刷新(不闪 loading):重新拉列表、成功才替换。供设备页 ~15s 轮询,让其他设备的
/// 在线/状态变化 ~15s 内可见(配合服务端会话轮询刷 last_seen)。
Future<void> refresh() async {
if (!ref.read(authProvider).isLoggedIn) return;
try {
final list = await ref.read(accountApiProvider).devices();
state = AsyncData(list);
} catch (_) {
// 失败保留旧列表,不闪错。
}
}
/// 强制退出(吊销该设备会话,设备保留)后刷新列表。
Future<void> forceLogout(String uuid) async {
await ref.read(accountApiProvider).forceLogout(uuid);