feat(core): 请求头统一上报设备系统与机型

- 新增 DeviceProfileReader,首次读取后缓存,插件不可用时安全降级
- 拦截器为所有请求补 X-Client-Platform / Os / Model,匿名请求同样携带
This commit is contained in:
Vicky authored and trae-solo-agent committed 2026-10-27 13:54:28 +08:00
1 parent 929b7f72f8
commit d6df5fbe5f
6 files changed
+148 -21

No files matched your search

+5
View File
@@ -14,6 +14,7 @@ import 'core/data/remote/catalog_api.dart';
import 'core/data/remote/category_api.dart';
import 'core/data/remote/comment_api.dart';
import 'core/data/remote/commerce_api.dart';
import 'core/data/remote/device_profile.dart';
import 'core/data/remote/download_api.dart';
import 'core/data/remote/interaction_api.dart';
import 'core/data/remote/library_api.dart';
@@ -116,6 +117,9 @@ class LumaDramaApp extends StatefulWidget {
class _LumaDramaAppState extends State<LumaDramaApp> {
late final AuthSessionStore _sessionStore = AuthSessionStore();
/// 设备画像只读一次:供拦截器在每次请求头里带上系统与机型。
late final DeviceProfileReader _deviceProfile = DeviceProfileReader();
/// 全 App 共用一个 ApiClient:这样目录、账号、后续的互动/进度请求
/// 都自动带 `Authorization` 与 `X-Device-Id`,401 的刷新重试也只有一处实现。
late final ApiClient _apiClient = ApiClient(
@@ -123,6 +127,7 @@ class _LumaDramaAppState extends State<LumaDramaApp> {
tokenRefresher: () => _auth.refresh(),
onUnauthorized: () => _auth.clear(),
deviceIdReader: _sessionStore.deviceId,
deviceProfileReader: _deviceProfile.read,
);
late final AuthController _auth = AuthController(