fix(mobile-app): 退出登录时停止遥测上传

- TelemetryService 添加 pauseForLogout() 方法
- 退出登录时先停止定期上传再清空队列
- 避免退出后继续上传导致等待

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-27 10:40:28 -08:00
parent 3d68d1f6f6
commit a8261e110a
2 changed files with 21 additions and 7 deletions

View File

@ -405,16 +405,13 @@ class MultiAccountService {
} }
debugPrint('$_tag logoutCurrentAccount() - 已清除 ${_accountLocalKeys.length} 个 LocalStorage 缓存'); debugPrint('$_tag logoutCurrentAccount() - 已清除 ${_accountLocalKeys.length} 个 LocalStorage 缓存');
// ===== 3. ===== // ===== 3. ID =====
await _telemetryStorage.clearUserData();
// ===== 4. ID =====
if (TelemetryService().isInitialized) { if (TelemetryService().isInitialized) {
TelemetryService().clearUserId(); await TelemetryService().pauseForLogout();
debugPrint('$_tag logoutCurrentAccount() - 清除 TelemetryService userId'); debugPrint('$_tag logoutCurrentAccount() - 已暂停 TelemetryService');
} }
// ===== 5. Sentry ===== // ===== 4. Sentry =====
if (SentryService().isInitialized) { if (SentryService().isInitialized) {
SentryService().clearUser(); SentryService().clearUser();
debugPrint('$_tag logoutCurrentAccount() - 清除 SentryService userId'); debugPrint('$_tag logoutCurrentAccount() - 清除 SentryService userId');

View File

@ -291,6 +291,23 @@ class TelemetryService {
debugPrint('📊 [Telemetry] User ID cleared'); debugPrint('📊 [Telemetry] User ID cleared');
} }
/// 退
///
Future<void> pauseForLogout() async {
_uploader.stopPeriodicUpload();
await _storage.clearEventQueue();
_userId = null;
debugPrint('📊 [Telemetry] Paused for logout');
}
///
void resumeAfterLogin() {
if (TelemetryConfig().globalEnabled) {
_uploader.startPeriodicUpload();
debugPrint('📊 [Telemetry] Resumed after login');
}
}
/// ///
Future<void> setUserOptIn(bool optIn) async { Future<void> setUserOptIn(bool optIn) async {
await TelemetryConfig().setUserOptIn(optIn); await TelemetryConfig().setUserOptIn(optIn);