From 3dc171aefe02e76768f51dcc52d00d8506cf2ae7 Mon Sep 17 00:00:00 2001 From: Junhui Chen Date: Fri, 12 Sep 2025 15:20:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A7=E5=88=B6=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=9B=B2=E7=9B=92=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wake/Core/Navigation/Router.swift | 6 +-- wake/View/Components/UserProfileModal.swift | 2 +- wake/View/Login/Login.swift | 2 +- wake/View/OnBoarding/UserInfo.swift | 55 ++++++++++++--------- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/wake/Core/Navigation/Router.swift b/wake/Core/Navigation/Router.swift index 0bcf82c..afc83df 100644 --- a/wake/Core/Navigation/Router.swift +++ b/wake/Core/Navigation/Router.swift @@ -11,7 +11,7 @@ enum AppRoute: Hashable { case blindOutcome(media: MediaType, title: String? = nil, description: String? = nil, isMember: Bool, goToFeedback: Bool = false) case memories case subscribe - case userInfo + case userInfo(createFirstBlindBox: Bool = false) case account case about case permissionManagement @@ -51,8 +51,8 @@ enum AppRoute: Hashable { MemoriesView() case .subscribe: SubscribeView() - case .userInfo: - UserInfo() + case .userInfo(let createFirstBlindBox): + UserInfo(createFirstBlindBox: createFirstBlindBox) case .account: AccountView() case .about: diff --git a/wake/View/Components/UserProfileModal.swift b/wake/View/Components/UserProfileModal.swift index 45dfabb..a99718b 100644 --- a/wake/View/Components/UserProfileModal.swift +++ b/wake/View/Components/UserProfileModal.swift @@ -98,7 +98,7 @@ struct UserProfileModal: View { } } .onTapGesture { - Router.shared.navigate(to: .userInfo) + Router.shared.navigate(to: .userInfo(createFirstBlindBox: false)) } } else { Image(systemName: "person.circle.fill") diff --git a/wake/View/Login/Login.swift b/wake/View/Login/Login.swift index fca68b1..248b4ca 100644 --- a/wake/View/Login/Login.swift +++ b/wake/View/Login/Login.swift @@ -264,7 +264,7 @@ struct LoginView: View { self.showError = true } // 跳转到userinfo - Router.shared.navigate(to: .userInfo) + Router.shared.navigate(to: .userInfo(createFirstBlindBox: true)) case .failure(let error): print("❌ [15] 后端认证失败") diff --git a/wake/View/OnBoarding/UserInfo.swift b/wake/View/OnBoarding/UserInfo.swift index 97d1860..0971336 100644 --- a/wake/View/OnBoarding/UserInfo.swift +++ b/wake/View/OnBoarding/UserInfo.swift @@ -1,6 +1,8 @@ import SwiftUI struct UserInfo: View { + let createFirstBlindBox: Bool + @Environment(\.dismiss) private var dismiss @StateObject private var router = Router.shared @@ -44,9 +46,10 @@ struct UserInfo: View { .map { _ in false }) .receive(on: RunLoop.main) - init() { + init(createFirstBlindBox: Bool) { // 在初始化时预加载键盘 _ = UserInfo.keyboardPreloader + self.createFirstBlindBox = createFirstBlindBox } var body: some View { @@ -182,31 +185,35 @@ struct UserInfo: View { self.userName = userData.username } - // 上传头像为素材 - MaterialUpload.shared.addMaterial( - fileId: uploadedFileId ?? "", - previewFileId: uploadedFileId ?? "" - ) { result in - switch result { - case .success(let data): - print("素材添加成功,返回ID: \(data ?? [])") - // 触发盲盒生成 - BlindBoxApi.shared.generateBlindBox( - boxType: "First", - materialIds: data ?? [] - ) { result in - switch result { - case .success(let blindBoxData): - print("✅ 盲盒生成成功: \(blindBoxData?.id ?? "0")") - // 导航到首页盲盒等待用户开启第一个盲盒 - Router.shared.navigate(to: .blindBox(mediaType: .image, blindBoxId: blindBoxData?.id ?? "0")) - case .failure(let error): - print("❌ 盲盒生成失败: \(error.localizedDescription)") + if createFirstBlindBox { + // 上传头像为素材 + MaterialUpload.shared.addMaterial( + fileId: uploadedFileId ?? "", + previewFileId: uploadedFileId ?? "" + ) { result in + switch result { + case .success(let data): + print("素材添加成功,返回ID: \(data ?? [])") + // 触发盲盒生成 + BlindBoxApi.shared.generateBlindBox( + boxType: "First", + materialIds: data ?? [] + ) { result in + switch result { + case .success(let blindBoxData): + print("✅ 盲盒生成成功: \(blindBoxData?.id ?? "0")") + // 导航到首页盲盒等待用户开启第一个盲盒 + Router.shared.navigate(to: .blindBox(mediaType: .image, blindBoxId: blindBoxData?.id ?? "0")) + case .failure(let error): + print("❌ 盲盒生成失败: \(error.localizedDescription)") + } } + case .failure(let error): + print("素材添加失败: \(error.localizedDescription)") } - case .failure(let error): - print("素材添加失败: \(error.localizedDescription)") } + } else { + Router.shared.navigate(to: .blindBox(mediaType: .all)) } case .failure(let error): print("❌ 用户信息更新失败: \(error.localizedDescription)") @@ -327,6 +334,6 @@ struct SettingsRow: View { // MARK: - Preview struct UserInfo_Previews: PreviewProvider { static var previews: some View { - UserInfo() + UserInfo(createFirstBlindBox: false) } }