feat: 添加和去重处理

This commit is contained in:
jinyaqiu 2025-08-28 14:47:48 +08:00
parent b3d0d026bf
commit 2cc7e5fb01

View File

@ -139,57 +139,43 @@ struct MediaUploadView: View {
print("🔄 开始处理用户选择的媒体文件") print("🔄 开始处理用户选择的媒体文件")
print("📌 新选择的媒体数量: \(newSelections.count)") print("📌 新选择的媒体数量: \(newSelections.count)")
// ID // 1.
let existingMediaIDs = uploadManager.selectedMedia.map { $0.id } var uniqueNewMedia: [MediaType] = []
print("📋 当前已选择的媒体ID: \(existingMediaIDs)")
// for newItem in newSelections {
let newItems = newSelections.filter { newItem in let isDuplicate = uploadManager.selectedMedia.contains { existingItem in
let isNew = !uploadManager.selectedMedia.contains { $0.id == newItem.id } switch (existingItem, newItem) {
print("🔍 检查媒体项 \(newItem.id) - \(isNew ? "新添加" : "已存在")") case (.image(let existingImage), .image(let newImage)):
return isNew return existingImage.pngData() == newImage.pngData()
} case (.video(let existingURL, _), .video(let newURL, _)):
return existingURL == newURL
print("✅ 过滤后的新添加媒体数量: \(newItems.count)") default:
return false
if !newItems.isEmpty {
print("🔄 开始处理 \(newItems.count) 个新添加的媒体项...")
//
newItems.forEach { item in
switch item {
case .image(let uiImage):
print("🖼️ 添加图片 - 尺寸: \(uiImage.size.width)x\(uiImage.size.height)")
case .video(let url, _):
print("🎥 添加视频 - URL: \(url.lastPathComponent)")
} }
} }
// 1. if !isDuplicate {
uploadManager.clearAllMedia() uniqueNewMedia.append(newItem)
print("🧹 已清空现有媒体列表") } else {
print("⚠️ 检测到重复文件,已跳过: \(newItem)")
// 2.
uploadManager.addMedia(newItems)
print("✅ 已添加 \(newItems.count) 个媒体项到上传管理器")
// 3.
if selectedIndices.isEmpty, let firstItem = newItems.first {
selectedIndices = [0]
selectedMedia = firstItem
print("👆 自动选择第一个新增的媒体项: \(firstItem.id)")
} }
// 4.
print("🚀 开始上传媒体...")
uploadManager.startUpload()
} else {
print(" 没有新的媒体项需要添加")
} }
// // 2.
mediaPickerSelection = [] if !uniqueNewMedia.isEmpty {
print("🔄 已重置媒体选择器状态") print("✅ 添加 \(uniqueNewMedia.count) 个新文件")
uploadManager.addMedia(uniqueNewMedia)
//
if selectedMedia == nil, let firstNewItem = uniqueNewMedia.first {
selectedMedia = firstNewItem
}
//
uploadManager.startUpload()
} else {
print(" 没有新文件需要添加,所有选择的文件都已存在")
}
} }
), ),
imageSelectionLimit: max(0, 20 - uploadManager.selectedMedia.filter { imageSelectionLimit: max(0, 20 - uploadManager.selectedMedia.filter {