feat(client): 被强制下线时弹对话框告知原因再登出

会话轮询检测到 active=false → 先弹「此设备已被强制下线/需重新登录」对话框(沿用现有
AlertDialog 样式:surface 底/xl 圆角/accent 按钮),用户确认后再 logout 跳登录页,
不再默默跳走。_forcedLogoutHandling 防重复弹。新增 l10n sessionRevoked{Title,Body,Ok}。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-30 07:33:43 +08:00
parent af24612e04
commit 6bab18a1bf
4 changed files with 49 additions and 5 deletions
+4
View File
@@ -108,6 +108,10 @@ abstract class AppText {
String get devForceLogoutConfirm; // 弹窗正文(含设备名占位 %s)
String get devClearLoginConfirm;
String get devCancel;
// 本设备被其他设备强制下线时的提示框。
String get sessionRevokedTitle;
String get sessionRevokedBody;
String get sessionRevokedOk;
String get redeemEntry;
String get contactEntry;
String get signOut;
+6
View File
@@ -162,6 +162,12 @@ class StringsEn extends AppText {
@override
String get devCancel => 'Cancel';
@override
String get sessionRevokedTitle => 'This device was signed out';
@override
String get sessionRevokedBody => 'Your account signed this device out from another device. Please sign in again.';
@override
String get sessionRevokedOk => 'Sign in again';
@override
String get redeemEntry => 'Redeem & buy';
@override
String get contactEntry => 'Contact us';
+6
View File
@@ -161,6 +161,12 @@ class StringsZh extends AppText {
@override
String get devCancel => '取消';
@override
String get sessionRevokedTitle => '此设备已被强制下线';
@override
String get sessionRevokedBody => '你的账号在其他设备上将此设备强制退出,需要重新登录。';
@override
String get sessionRevokedOk => '重新登录';
@override
String get redeemEntry => '兑换 & 购买';
@override
String get contactEntry => '联系我们';