From b3d0d026bf911643696165f70a894b0cd4e558ba Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Thu, 28 Aug 2025 14:36:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E6=AC=A1=E4=B8=8D=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wake/View/Components/Upload/MediaUpload.swift | 38 ++++++++----------- wake/View/Upload/MediaUploadView.swift | 24 +++++------- 2 files changed, 26 insertions(+), 36 deletions(-) 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("ℹ️ 没有新的媒体项需要添加")