diff --git a/wake/View/Components/Upload/MediaUpload.swift b/wake/View/Components/Upload/MediaUpload.swift index 99616f4..4927b6f 100644 --- a/wake/View/Components/Upload/MediaUpload.swift +++ b/wake/View/Components/Upload/MediaUpload.swift @@ -71,24 +71,20 @@ public class MediaUploadManager: ObservableObject { !self.selectedMedia.contains { $0.id == newItem.id } } - // 使用任务组处理多个媒体项的添加 - Task { [weak self] in - guard let self = self else { return } - var updatedMedia = self.selectedMedia - for item in newMedia { - updatedMedia.append(item) - self.uploadStatus[item.id] = .pending - } - self.selectedMedia = updatedMedia - - // 如果是第一次添加媒体,发送通知 - if !newMedia.isEmpty, let firstMedia = newMedia.first, self.selectedMedia.count == newMedia.count { - NotificationCenter.default.post( - name: .didAddFirstMedia, - object: nil, - userInfo: ["media": firstMedia] - ) - } + var updatedMedia = self.selectedMedia + for item in newMedia { + updatedMedia.append(item) + self.uploadStatus[item.id] = .pending + } + self.selectedMedia = updatedMedia + + // 如果是第一次添加媒体,发送通知 + if !newMedia.isEmpty, let firstMedia = newMedia.first, self.selectedMedia.count == newMedia.count { + NotificationCenter.default.post( + name: .didAddFirstMedia, + object: nil, + userInfo: ["media": firstMedia] + ) } } @@ -102,10 +98,8 @@ public class MediaUploadManager: ObservableObject { /// 清空所有媒体 public func clearAllMedia() { - Task { @MainActor in - self.selectedMedia.removeAll() - self.uploadStatus.removeAll() - } + selectedMedia.removeAll() + uploadStatus.removeAll() } /// 开始上传所有选中的媒体 diff --git a/wake/View/Upload/MediaUploadView.swift b/wake/View/Upload/MediaUploadView.swift index 0a23d0a..640a26e 100644 --- a/wake/View/Upload/MediaUploadView.swift +++ b/wake/View/Upload/MediaUploadView.swift @@ -165,27 +165,23 @@ struct MediaUploadView: View { } } - // 将新项添加到现有选择的开头 - let newMedia = newItems + uploadManager.selectedMedia - print("📊 更新媒体列表 - 总数: \(newMedia.count) (新增: \(newItems.count), 原有: \(uploadManager.selectedMedia.count))") - + // 1. 清空现有媒体 uploadManager.clearAllMedia() print("🧹 已清空现有媒体列表") - uploadManager.addMedia(newMedia) - print("✅ 已添加新媒体到上传管理器") + // 2. 添加新选择的媒体 + uploadManager.addMedia(newItems) + print("✅ 已添加 \(newItems.count) 个媒体项到上传管理器") - // 如果没有选中的媒体,则选中第一个新增的 - if selectedIndices.isEmpty { + // 3. 更新选中状态 + if selectedIndices.isEmpty, let firstItem = newItems.first { selectedIndices = [0] - selectedMedia = newItems.first - print("👆 自动选择第一个新增的媒体项: \(selectedMedia?.id ?? "nil")") - } else { - print("ℹ️ 保持当前选中的媒体项") + selectedMedia = firstItem + print("👆 自动选择第一个新增的媒体项: \(firstItem.id)") } - // 开始上传新添加的媒体 - print("🚀 开始上传新添加的媒体...") + // 4. 开始上传 + print("🚀 开始上传媒体...") uploadManager.startUpload() } else { print("ℹ️ 没有新的媒体项需要添加")