From d0d39c93f6e16e6e4f67aa45abae966e808a8bcb Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Tue, 30 Jun 2026 22:30:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(client):=20=E8=AE=BE=E5=A4=87=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=A6=BB=E7=BA=BF=E6=97=B6=E9=97=B4=E6=94=B9=E7=94=A8?= =?UTF-8?q?=20last=5Fseen=E3=80=8C=E6=9C=80=E5=90=8E=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E3=80=8D(=E5=8E=9F=20last=5Flogin=20=E4=B8=8D=E5=87=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设备列表对离线设备显示「最后登录 X 前」,取的是 last_login(会话创建那一刻)。一直在线 的设备断开后会错显成登录时间(如 13 小时前),与实际「最后活跃」不符。改用 last_seen (连接/用量上报/~15s 会话轮询都会刷新),标签相应改为「最后在线」/「Last online」。 Co-Authored-By: Claude Opus 4.8 --- client/lib/l10n/app_text.dart | 2 +- client/lib/l10n/strings_en.dart | 2 +- client/lib/l10n/strings_zh.dart | 2 +- client/lib/widgets/account_screens.dart | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/client/lib/l10n/app_text.dart b/client/lib/l10n/app_text.dart index 53dc9cb..4983839 100644 --- a/client/lib/l10n/app_text.dart +++ b/client/lib/l10n/app_text.dart @@ -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; diff --git a/client/lib/l10n/strings_en.dart b/client/lib/l10n/strings_en.dart index 109a3b9..3f25271 100644 --- a/client/lib/l10n/strings_en.dart +++ b/client/lib/l10n/strings_en.dart @@ -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 diff --git a/client/lib/l10n/strings_zh.dart b/client/lib/l10n/strings_zh.dart index 2defd44..2c5cf1e 100644 --- a/client/lib/l10n/strings_zh.dart +++ b/client/lib/l10n/strings_zh.dart @@ -141,7 +141,7 @@ class StringsZh extends AppText { @override String get devOffline => '离线'; @override - String get devLastLogin => '最后登录'; + String get devLastOnline => '最后在线'; @override String get devNeverLogin => '从未登录'; @override diff --git a/client/lib/widgets/account_screens.dart b/client/lib/widgets/account_screens.dart index 69de294..e137e59 100644 --- a/client/lib/widgets/account_screens.dart +++ b/client/lib/widgets/account_screens.dart @@ -185,7 +185,9 @@ class DevicesScreen extends ConsumerWidget { final name = d.name.isNotEmpty ? d.name : d.platformKind.label; final subParts = [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),