hailin
|
eda39b982d
|
fix(mobile-app): 修复切换窗口期 NotificationBadge 混账号请求问题
问题(通过日志发现):
账号切换时存在一个 storage 空窗期(旧数据已清除、新数据尚未恢复完成)。
在此期间,NotificationBadgeNotifier 的 30s 定时器恰好触发,导致:
- _loadUnreadCount() 从 authProvider 内存读到旧账号 userSerialNum
- HTTP interceptor 从 storage 读到已恢复的新账号 accessToken
- 发出混账号请求:?userSerialNum=旧账号 + Authorization: Bearer 新账号token
日志证据:
_restoreAccountData() 执行期间出现
GET /notifications/unread-count?userSerialNum=D26022600000
Authorization: Bearer [D26022600001的token]
修复:
1. notification_badge_provider.dart
新增 stopAutoRefresh() 公开方法,取消 30s 定时器而不 dispose,
Provider invalidate 重建后会自动重启定时器。
2. account_switch_page.dart - _switchToAccount
在 onBeforeRestore 中补加:
ref.read(notificationBadgeProvider.notifier).stopAutoRefresh()
确保切换空窗期内 notificationBadge 定时器不触发。
同时移除 UI 层冗余的 saveCurrentAccountData() 调用——
switchToAccount() 内部已有此步骤,无需重复。
日志步骤从 [1/6]...[6/6] 更新为 [1/5]...[5/5],
并在 onBeforeRestore 注释中说明停止各定时器的原因。
切换空窗期现在所有定时器均已停止:
✓ walletStatusProvider (60s)
✓ pendingActionPollingService (4s)
✓ notificationBadgeProvider (30s) ← 本次新增
✓ TelemetryUploader (30s)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-25 09:09:37 -08:00 |
hailin
|
8a839b5e14
|
chore(mobile-app): 减少频繁日志输出
移除以下频繁执行操作的日志,只保留错误和关键状态日志:
- MaintenanceProvider: 移除正常状态日志,只保留检测到维护的日志
- ContractCheckService: 移除常规检查日志,只保留检测到异常的日志
- ContractSigningService: 移除KYC检查、获取任务列表等常规日志
- HomeShellPage: 移除合同检查定时器日志和路由栈打印
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 06:31:45 -08:00 |
hailin
|
c328d8b59b
|
feat(mobile-app,admin): 添加系统维护功能和通知徽章功能
系统维护功能:
- 后端: 添加系统维护配置实体、仓库和控制器
- 后端: 添加维护模式拦截器,返回503状态码
- admin-web: 添加系统维护管理页面,支持创建/编辑/开关维护配置
- mobile-app: 添加维护状态检查服务和阻断弹窗
- mobile-app: 在启动页、向导页集成维护检查
- mobile-app: 支持App从后台恢复时自动检查维护状态
通知徽章功能:
- 添加通知徽章Provider,监听登录状态自动刷新
- 底部导航栏"我的"标签显示未读通知红点
- 进入通知页面自动刷新徽章状态
- 切换账号、退出登录自动清除徽章
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 23:26:01 -08:00 |