diff --git a/wake/ContentView.swift b/wake/ContentView.swift index b6f24cb..25add79 100644 --- a/wake/ContentView.swift +++ b/wake/ContentView.swift @@ -75,19 +75,36 @@ struct BlindBoxView: View { } // 盲盒列表 struct BlindList: Codable, Identifiable { - let id: Int64 + // API 返回为字符串,这里按字符串处理 + let id: String let boxCode: String - let userId: Int64 + let userId: String let name: String let boxType: String let features: String? - let resultFileId: Int64? + let resultFile: FileInfo? let status: String let workflowInstanceId: String? let videoGenerateTime: String? let createTime: String - let coverFileId: Int64? - let description: String + let coverFile: FileInfo? + let description: String? + + struct FileInfo: Codable { + let id: String + let fileName: String? + let url: String? + // 为了兼容任意元数据结构,这里使用字典的最宽松版本 + // 如果后续需要更强类型,可以引入自定义的 AnyCodable/JSONValue + let metadata: [String: String]? + + enum CodingKeys: String, CodingKey { + case id + case fileName = "file_name" + case url + case metadata + } + } enum CodingKeys: String, CodingKey { case id @@ -96,12 +113,12 @@ struct BlindBoxView: View { case name case boxType = "box_type" case features - case resultFileId = "result_file_id" + case resultFile = "result_file" case status case workflowInstanceId = "workflow_instance_id" case videoGenerateTime = "video_generate_time" case createTime = "create_time" - case coverFileId = "cover_file_id" + case coverFile = "cover_file" case description } } @@ -163,13 +180,13 @@ struct BlindBoxView: View { init(from listItem: BlindList) { self.init( - id: listItem.id, + id: Int64(listItem.id) ?? 0, boxCode: listItem.boxCode, - userId: listItem.userId, + userId: Int64(listItem.userId) ?? 0, name: listItem.name, boxType: listItem.boxType, features: listItem.features, - url: nil, + url: listItem.resultFile?.url, status: listItem.status, workflowInstanceId: listItem.workflowInstanceId, videoGenerateTime: listItem.videoGenerateTime, diff --git a/wake/Utils/Router.swift b/wake/Utils/Router.swift index 6337967..0bd118f 100644 --- a/wake/Utils/Router.swift +++ b/wake/Utils/Router.swift @@ -23,7 +23,8 @@ enum AppRoute: Hashable { case .login: LoginView() case .avatarBox: - AvatarBoxView() + // AvatarBoxView has been removed; route to BlindBoxView as replacement + BlindBoxView(mediaType: .all) case .feedbackView: FeedbackView() case .feedbackDetail(let type):