对齐旅拍相册详情页 Android UI,并修复网格预览与布局问题。
重构相册详情为信息卡片、Tab 筛选、排序、批量删除与底部上传栏;修复网格重叠、禁用按钮蒙层,并支持点击预览大图。同步扩展素材列表 API 与 ViewModel 分页逻辑,并优化有线传图缩略图与传输性能。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -24,6 +24,8 @@ struct CameraTransferTask: Identifiable, Equatable, Codable {
|
||||
let filename: String
|
||||
var localPath: String?
|
||||
var remoteURL: String?
|
||||
/// 相机文件拍摄时间,格式 `yyyy-MM-dd HH:mm:ss`。
|
||||
var capturedAt: String?
|
||||
var status: CameraTransferStatus
|
||||
var progress: Int
|
||||
var errorMessage: String?
|
||||
@ -34,6 +36,7 @@ struct CameraTransferTask: Identifiable, Equatable, Codable {
|
||||
filename: String,
|
||||
localPath: String? = nil,
|
||||
remoteURL: String? = nil,
|
||||
capturedAt: String? = nil,
|
||||
status: CameraTransferStatus = .pending,
|
||||
progress: Int = 0,
|
||||
errorMessage: String? = nil
|
||||
@ -43,11 +46,36 @@ struct CameraTransferTask: Identifiable, Equatable, Codable {
|
||||
self.filename = filename
|
||||
self.localPath = localPath
|
||||
self.remoteURL = remoteURL
|
||||
self.capturedAt = capturedAt
|
||||
self.status = status
|
||||
self.progress = progress
|
||||
self.errorMessage = errorMessage
|
||||
}
|
||||
|
||||
/// 将日期格式化为列表使用的拍摄时间字符串。
|
||||
static func capturedAtString(from date: Date?) -> String {
|
||||
Self.capturedAtFormatter.string(from: date ?? Date())
|
||||
}
|
||||
|
||||
/// 从本地文件推断拍摄时间。
|
||||
static func capturedAtString(forLocalPath path: String) -> String? {
|
||||
guard let url = CameraDownloadStorage.resolveLocalURL(from: path),
|
||||
FileManager.default.fileExists(atPath: url.path),
|
||||
let attributes = try? FileManager.default.attributesOfItem(atPath: url.path)
|
||||
else { return nil }
|
||||
|
||||
let date = (attributes[.creationDate] as? Date)
|
||||
?? (attributes[.modificationDate] as? Date)
|
||||
return date.map { capturedAtString(from: $0) }
|
||||
}
|
||||
|
||||
private static let capturedAtFormatter: DateFormatter = {
|
||||
let formatter = DateFormatter()
|
||||
formatter.locale = Locale(identifier: "zh_CN")
|
||||
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
||||
return formatter
|
||||
}()
|
||||
|
||||
/// 本地文件 URL,支持相对路径与旧版绝对路径。
|
||||
var localURL: URL? {
|
||||
guard let localPath, !localPath.isEmpty else { return nil }
|
||||
|
||||
Reference in New Issue
Block a user