fix(client): 设备列表离线时间改用 last_seen「最后在线」(原 last_login 不准)

设备列表对离线设备显示「最后登录 X 前」,取的是 last_login(会话创建那一刻)。一直在线
的设备断开后会错显成登录时间(如 13 小时前),与实际「最后活跃」不符。改用 last_seen
(连接/用量上报/~15s 会话轮询都会刷新),标签相应改为「最后在线」/「Last online」。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-30 22:30:43 +08:00
parent 1666b1d462
commit d0d39c93f6
4 changed files with 6 additions and 4 deletions
+1 -1
View File
@@ -98,7 +98,7 @@ abstract class AppText {
// 设备管理(P6):在线状态 / 操作 / 危险确认
String get devOnline;
String get devOffline;
String get devLastLogin; // 「最后登录」前缀
String get devLastOnline; // 「最后在线」前缀(离线设备,取 last_seen)
String get devNeverLogin;
String get devForceLogout;
String get devClearLogin;
+1 -1
View File
@@ -142,7 +142,7 @@ class StringsEn extends AppText {
@override
String get devOffline => 'Offline';
@override
String get devLastLogin => 'Last login';
String get devLastOnline => 'Last online';
@override
String get devNeverLogin => 'Never logged in';
@override
+1 -1
View File
@@ -141,7 +141,7 @@ class StringsZh extends AppText {
@override
String get devOffline => '离线';
@override
String get devLastLogin => '最后登录';
String get devLastOnline => '最后在线';
@override
String get devNeverLogin => '从未登录';
@override
+3 -1
View File
@@ -185,7 +185,9 @@ class DevicesScreen extends ConsumerWidget {
final name = d.name.isNotEmpty ? d.name : d.platformKind.label;
final subParts = <String>[d.platformKind.label];
if (d.clientVersion.isNotEmpty) subParts.add(d.clientVersion);
if (!d.online) subParts.add('${t.devLastLogin} ${_rel(d.lastLogin)}');
// 离线设备显示「最后在线」——用 last_seen(连接/用量/~15s 会话轮询都会刷新),
// 而非 last_login(仅登录那一刻);否则一直在线的设备会错显成登录时间(如 13 小时前)。
if (!d.online) subParts.add('${t.devLastOnline} ${_rel(d.lastSeen)}');
return Container(
decoration: BoxDecoration(border: divider ? Border(bottom: BorderSide(color: c.border)) : null),