@@ -6,6 +6,7 @@ import 'package:config_app/features/upload/domain/upload_task.dart';
66import 'package:config_app/src/web_client/web_client.dart' ;
77import 'package:file_picker/file_picker.dart' ;
88import 'package:freezed_annotation/freezed_annotation.dart' ;
9+ import 'package:logging/logging.dart' ;
910import 'package:uuid/uuid.dart' ;
1011import 'package:path/path.dart' as p;
1112// Замените на ваш реальный WebClient
@@ -23,6 +24,8 @@ sealed class UploadQueueState with _$UploadQueueState {
2324
2425// --- BLOC ---
2526class UploadQueueBloc extends Bloc <UploadQueueEvent , UploadQueueState > {
27+ static final _log = Logger ('UploadQueueBloc' );
28+
2629 final RealtimeService client;
2730
2831 static const int _maxConcurrentUploads = 2 ; // Константа параллелизма
@@ -41,6 +44,7 @@ class UploadQueueBloc extends Bloc<UploadQueueEvent, UploadQueueState> {
4144
4245 Future <void > _onAddPlatformFiles (
4346 _AddPlatformFiles event, Emitter <UploadQueueState > emit) async {
47+ _log.info ("_onAddPlatformFiles: files = ${event .files .length }" );
4448 final newTasks = event.files.map ((file) {
4549 String serverPath = p.relative (file.name, from: '' );
4650 return UploadTask (
@@ -197,27 +201,33 @@ class UploadQueueBloc extends Bloc<UploadQueueEvent, UploadQueueState> {
197201 // Поэтому, визуально слот "занимается" только когда прилетит первый прогресс или мы сделаем событие Started.
198202 // Добавим специальный метод в bloc для старта, чтобы обновить UI.
199203 // Но для простоты примера, будем считать Uploading по первому байту.
200-
201- void onProgress (sent, total) {
202- final now = DateTime .now ().millisecondsSinceEpoch;
203- // Обновляем, только если прошло время ИЛИ если загрузка завершена (100%)
204- if (now - lastUpdateTimestamp > throttleDuration || sent == total) {
205- lastUpdateTimestamp = now;
206- add (UploadQueueEvent .updateProgress (task.id, sent, total));
207- }
208- };
204+
205+ void onProgress (sent, total) {
206+ final now = DateTime .now ().millisecondsSinceEpoch;
207+ // Обновляем, только если прошло время ИЛИ если загрузка завершена (100%)
208+ if (now - lastUpdateTimestamp > throttleDuration || sent == total) {
209+ lastUpdateTimestamp = now;
210+ add (UploadQueueEvent .updateProgress (task.id, sent, total));
211+ }
212+ }
213+
214+ ;
209215 final wclient = WebClient (
210216 code: client.authCode,
211217 host: client.connectUri.host,
212218 port: client.connectUri.port);
213219
214220 if (task.bytes != null ) {
221+ _log.info ("_uploadFileRoutine ${task .id } is bytes" );
222+
215223 await wclient.uploadMediaBytes (
216224 task.bytes! ,
217225 task.serverPath,
218226 onProgress,
219227 );
220228 } else {
229+ _log.info ("_uploadFileRoutine ${task .id } is file" );
230+
221231 // Читаем файл
222232 final file = File (task.localPath);
223233 if (! await file.exists ()) {
0 commit comments