rwadurian/frontend/mobile-app
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
..
.claude fix(mobile-app): update share link domain to rwaapi.szaiai.com 2025-12-06 21:15:55 -08:00
android refactor: 更换包名和签名证书以绕过华为风险软件检测 2025-12-17 00:24:22 -08:00
assets feat(app-assets): 应用图片管理 — 开屏图/引导图可从 admin-web 配置 2026-02-04 11:20:26 -08:00
docs refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
ios refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
lib fix(mobile-app): 修复切换窗口期 NotificationBadge 混账号请求问题 2026-02-25 09:09:37 -08:00
linux fix(sentry): 修复 Flutter 代码分析错误 2025-12-15 11:04:28 -08:00
macos feat(mobile-app): 添加合同签署 API 详细调试日志 2025-12-25 03:14:10 -08:00
scripts refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
test refactor(mobile-app): 重构账号创建流程,分离钱包获取逻辑 2025-12-06 19:34:45 -08:00
web refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
windows feat(mobile-app): 添加合同签署 API 详细调试日志 2025-12-25 03:14:10 -08:00
.gitignore feat(mobile-app): auto-increment version code on each build 2025-12-09 00:59:20 -08:00
.metadata refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
CLAUDE.md refactor: 多项UI优化和品牌更名 2025-12-15 01:43:47 -08:00
README.MD refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
analysis_options.yaml refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
flutter_android_update_guide.md refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
flutter_telemetry_solution.md refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
pubspec.lock feat(contract-signing): 使用 pdf-lib 实现专业 PDF 合同展示 2025-12-25 02:27:54 -08:00
pubspec.yaml fix(mobile-app): 移除pubspec.yaml中已删除的splash_frames目录 2026-01-09 10:36:01 -08:00
quickly.lottie fix(reward-service): 添加 BatchMonthlyEarningsRequest DTO 的 class-validator 装饰器 2025-12-23 05:22:34 -08:00
stickman.lottie fix(reward-service): 添加 BatchMonthlyEarningsRequest DTO 的 class-validator 装饰器 2025-12-23 05:22:34 -08:00

README.MD

Create Flutter Framework

C:\Users\ph\Desktop\app>flutter create --org com.rwadurian rwa_android_app
Creating project rwa_android_app...
Resolving dependencies in `rwa_android_app`... (3.7s)
Downloading packages...
Got dependencies in `rwa_android_app`.
Wrote 130 files.

All done!
You can find general documentation for Flutter at: https://docs.flutter.dev/
Detailed API documentation is available at: https://api.flutter.dev/
If you prefer video documentation, consider: https://www.youtube.com/c/flutterdev

In order to run your application, type:

  $ cd rwa_android_app
  $ flutter run

Your application code is in rwa_android_app\lib\main.dart.

rwa_android_app

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.