🐛 Bug fixes in upload task tracking

This commit is contained in:
2025-11-11 00:00:09 +08:00
parent b8d24876c8
commit 0391893b32
5 changed files with 61 additions and 47 deletions

View File

@@ -92,20 +92,20 @@ class UploadTasksNotifier extends StateNotifier<List<DriveTask>> {
final uploadTask = DriveTask(
id: DateTime.now().millisecondsSinceEpoch.toString(),
taskId: taskId,
fileName: metadata['fileName'] as String,
contentType: metadata['contentType'] as String,
fileSize: metadata['fileSize'] as int,
fileName: metadata['file_name'] as String,
contentType: metadata['mime_type'] as String,
fileSize: metadata['file_size'] as int,
uploadedBytes: 0,
totalChunks: metadata['totalChunks'] as int,
totalChunks: metadata['total_chunks'] as int,
uploadedChunks: 0,
status: DriveTaskStatus.pending,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
type: 'FileUpload',
poolId: metadata['poolId'] as String?,
poolId: metadata['pool_id'] as String?,
bundleId: metadata['bundleId'] as String?,
encryptPassword: metadata['encryptPassword'] as String?,
expiredAt: metadata['expiredAt'] as String?,
encryptPassword: metadata['encrypt_password'] as String?,
expiredAt: metadata['expired_at'] as String?,
);
state = [...state, uploadTask];
@@ -117,19 +117,21 @@ class UploadTasksNotifier extends StateNotifier<List<DriveTask>> {
} else {
talker.info('[UploadTasks] No metadata found, creating minimal task');
// Create minimal task if no metadata is stored
final params = data['parameters'];
final uploadTask = DriveTask(
id: DateTime.now().millisecondsSinceEpoch.toString(),
taskId: taskId,
fileName: data['name'] as String? ?? 'Unknown file',
contentType: 'application/octet-stream',
fileSize: 0,
uploadedBytes: 0,
totalChunks: 0,
uploadedChunks: 0,
fileName: params['file_name'] as String? ?? 'Unknown file',
contentType: params['content_type'],
fileSize: params['file_size'],
uploadedBytes:
(params['chunk_size'] as int) * (params['chunks_uploaded'] as int),
totalChunks: params['chunks_count'],
uploadedChunks: params['chunks_uploaded'],
status: DriveTaskStatus.pending,
createdAt: DateTime.now(),
createdAt: DateTime.tryParse(data['created_at']) ?? DateTime.now(),
updatedAt: DateTime.now(),
type: 'FileUpload',
type: data['type'],
);
state = [...state, uploadTask];
@@ -147,6 +149,7 @@ class UploadTasksNotifier extends StateNotifier<List<DriveTask>> {
if (task.taskId == taskId) {
final uploadedBytes = (progress / 100.0 * task.fileSize).toInt();
return task.copyWith(
statusMessage: data['status'],
uploadedBytes: uploadedBytes,
status: DriveTaskStatus.inProgress,
updatedAt: DateTime.now(),
@@ -213,14 +216,14 @@ class UploadTasksNotifier extends StateNotifier<List<DriveTask>> {
String? expiredAt,
}) {
_pendingUploads[taskId] = {
'fileName': fileName,
'contentType': contentType,
'fileSize': fileSize,
'totalChunks': totalChunks,
'poolId': poolId,
'file_name': fileName,
'mime_type': contentType,
'file_size': fileSize,
'total_chunks': totalChunks,
'pool_id': poolId,
'bundleId': bundleId,
'encryptPassword': encryptPassword,
'expiredAt': expiredAt,
'encrypt_password': encryptPassword,
'expired_at': expiredAt,
};
}