Files
photo-live/apps/mobile/lib/features/uploads/providers.dart
T
2026-09-19 02:50:40 +08:00

44 lines
1.5 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// 上传域 Provider 装配(P3 计划 Task 6)。
///
/// 生产装配:TaskStore.app()(documents/upload_tasks.sqlite)+ ApiClient
/// (Bearer 自动注入)+ DeviceId(shared_preferences)。引擎生命周期
/// (start(accountId)/stop,随登录态切换)由 App 壳/队列 UI 驱动——
/// Task 9 队列 UI 落地时接线;本文件保证依赖图就绪。
library;
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../core/api_client.dart';
import '../../core/device_id.dart';
import 'preparer.dart';
import 'task_store.dart';
import 'upload_engine.dart';
/// 任务库(生产:app documents dir 持久库;测试 override 为 memory)。
final taskStoreProvider = Provider<TaskStore>((ref) {
final store = TaskStore.app();
ref.onDispose(store.close);
return store;
});
/// 传输引擎(裸 Dio 直传 presign;并行/保留期配置见 upload_engine.dart
/// 的 dart-define 常量)。
final uploadEngineProvider = Provider<UploadEngine>((ref) {
final engine = UploadEngine(
ref.watch(taskStoreProvider),
ref.watch(apiClientProvider),
ref.watch(deviceIdProvider),
);
ref.onDispose(engine.dispose);
return engine;
});
/// 准备器(入队回调唤醒引擎立即出队)。
final uploadPreparerProvider = Provider<UploadPreparer>((ref) {
final engine = ref.watch(uploadEngineProvider);
return UploadPreparer(
ref.watch(taskStoreProvider),
onEnqueued: engine.notifyWorkAvailable,
);
});