diff --git a/yana/Features/RecoverPasswordFeature.swift b/yana/Features/RecoverPasswordFeature.swift index e0fe672..550a9ce 100644 --- a/yana/Features/RecoverPasswordFeature.swift +++ b/yana/Features/RecoverPasswordFeature.swift @@ -10,6 +10,7 @@ struct RecoverPasswordFeature { var newPassword: String = "" var isCodeLoading: Bool = false var isResetLoading: Bool = false + var isResetSuccess: Bool = false var errorMessage: String? = nil var isCodeSent: Bool = false @@ -30,6 +31,7 @@ struct RecoverPasswordFeature { case getCodeResponse(Result) case resetPasswordTapped case resetPasswordResponse(Result) + case resetSuccess case resetState } @@ -145,9 +147,9 @@ struct RecoverPasswordFeature { state.isResetLoading = false if response.isSuccess { - // 密码重置成功,可以显示成功信息并导航回登录页面 + state.isResetSuccess = true state.errorMessage = nil - return .none + return .send(.resetSuccess) } else { state.errorMessage = response.errorMessage return .none @@ -162,12 +164,17 @@ struct RecoverPasswordFeature { } return .none + case .resetSuccess: + // 密码重置成功,准备返回上一页 + return .none + case .resetState: state.email = "" state.verificationCode = "" state.newPassword = "" state.isCodeLoading = false state.isResetLoading = false + state.isResetSuccess = false state.errorMessage = nil state.isCodeSent = false return .none @@ -196,11 +203,11 @@ struct ResetPasswordResponse: Codable, Equatable { } } -/// 密码重置请求 +/// 密码重置请求 - 新API端点 struct ResetPasswordRequest: APIRequestProtocol { typealias Response = ResetPasswordResponse - let endpoint = "/password/reset" // 假设的密码重置端点 + let endpoint = "/acc/pwd/resetByEmail" // 新的API端点 let method: HTTPMethod = .POST let includeBaseParameters = true let queryParameters: [String: String]? @@ -211,12 +218,12 @@ struct ResetPasswordRequest: APIRequestProtocol { /// - Parameters: /// - email: DES加密后的邮箱地址 /// - code: 验证码 - /// - newPassword: DES加密后的新密码 - init(email: String, code: String, newPassword: String) { + /// - newPwd: DES加密后的新密码 + init(email: String, code: String, newPwd: String) { self.queryParameters = [ "email": email, - "code": code, - "newPassword": newPassword + "newPwd": newPwd, // 参数名改为newPwd + "code": code ] } } @@ -266,9 +273,9 @@ struct RecoverPasswordHelper { print(" 加密新密码: \(encryptedPassword)") return ResetPasswordRequest( - email: encryptedEmail, + email: email, code: code, - newPassword: encryptedPassword + newPwd: encryptedPassword // 参数名改为newPwd ) } -} \ No newline at end of file +} diff --git a/yana/Views/RecoverPasswordView.swift b/yana/Views/RecoverPasswordView.swift index e2e4823..1cd1462 100644 --- a/yana/Views/RecoverPasswordView.swift +++ b/yana/Views/RecoverPasswordView.swift @@ -269,6 +269,12 @@ struct RecoverPasswordView: View { // 可以在这里添加焦点切换逻辑 } } + .onChange(of: store.isResetSuccess) { isResetSuccess in + // 密码重置成功后自动返回上一页 + if isResetSuccess { + onBack() + } + } } // MARK: - Private Methods