fix
This commit is contained in:
parent
4af8993c8f
commit
9cde9f1f38
@ -53,9 +53,9 @@ struct AuthService {
|
||||
return try await SDLAPIClient.doPost(path: "/auth/token", params: params, as: NetworkSession.self)
|
||||
}
|
||||
|
||||
static func requestRegisterVerifyCode(username: String) async throws -> RegisterSession {
|
||||
static func requestRegisterVerifyCode(phoneNumber: String) async throws -> RegisterSession {
|
||||
var params: [String: Any] = [
|
||||
"username": username
|
||||
"username": phoneNumber
|
||||
]
|
||||
params.merge(baseParams) {$1}
|
||||
|
||||
@ -82,9 +82,9 @@ struct AuthService {
|
||||
return try await SDLAPIClient.doPost(path: "/register/submit", params: params, as: String.self)
|
||||
}
|
||||
|
||||
static func requestResetPasswordVerifyCode(username: String) async throws -> ResetPasswordSession {
|
||||
static func requestResetPasswordVerifyCode(phoneNumber: String) async throws -> ResetPasswordSession {
|
||||
var params: [String: Any] = [
|
||||
"username": username
|
||||
"username": phoneNumber
|
||||
]
|
||||
params.merge(baseParams) {$1}
|
||||
|
||||
|
||||
@ -20,14 +20,14 @@ class RegisterModel {
|
||||
}
|
||||
|
||||
// 保存临时变量
|
||||
var username: String = ""
|
||||
var phoneNumber: String = ""
|
||||
var sessionId: Int = 0
|
||||
|
||||
var stage: Stage = .requestVerifyCode
|
||||
var transitionEdge: Edge = .trailing // 默认从右进入
|
||||
|
||||
func requestVerifyCode(username: String) async throws -> AuthService.RegisterSession {
|
||||
return try await AuthService.requestRegisterVerifyCode(username: username)
|
||||
func requestVerifyCode(phoneNumber: String) async throws -> AuthService.RegisterSession {
|
||||
return try await AuthService.requestRegisterVerifyCode(phoneNumber: phoneNumber)
|
||||
}
|
||||
|
||||
func submitVerifyCode(sessionId: Int, verifyCode: String) async throws -> String {
|
||||
|
||||
@ -23,11 +23,11 @@ class ResetPasswordModel {
|
||||
var transitionEdge: Edge = .trailing // 默认从右进入
|
||||
|
||||
// 保存内部状态
|
||||
var username: String = ""
|
||||
var phoneNumber: String = ""
|
||||
var sessionId: Int = 0
|
||||
|
||||
func requestVerifyCode(username: String) async throws -> AuthService.ResetPasswordSession {
|
||||
return try await AuthService.requestResetPasswordVerifyCode(username: username)
|
||||
func requestVerifyCode(phoneNumber: String) async throws -> AuthService.ResetPasswordSession {
|
||||
return try await AuthService.requestResetPasswordVerifyCode(phoneNumber: phoneNumber)
|
||||
}
|
||||
|
||||
func submitVerifyCode(sessionId: Int, verifyCode: String) async throws -> String {
|
||||
|
||||
@ -111,16 +111,16 @@ struct RegisterRequestVerifyCodeView: View {
|
||||
@Bindable var model = registerModel
|
||||
|
||||
VStack(spacing: 24) {
|
||||
headerSection(title: "创建个人网络", subtitle: "输入邮箱开始注册")
|
||||
headerSection(title: "创建个人网络", subtitle: "输入手机号开始注册")
|
||||
|
||||
VStack(spacing: 16) {
|
||||
PunchTextField(icon: "person.crop.circle", placeholder: "邮箱", text: $model.username)
|
||||
PunchTextField(icon: "phone.fill", placeholder: "手机号", text: $model.phoneNumber)
|
||||
}
|
||||
.frame(width: 280)
|
||||
|
||||
Button(action: {
|
||||
Task { @MainActor in
|
||||
await self.requestVerifyCode(username: model.username)
|
||||
await self.requestVerifyCode(phoneNumber: model.phoneNumber)
|
||||
}
|
||||
}) {
|
||||
Text("获取验证码")
|
||||
@ -130,7 +130,7 @@ struct RegisterRequestVerifyCodeView: View {
|
||||
.buttonStyle(.borderedProminent)
|
||||
.controlSize(.large)
|
||||
.frame(width: 280)
|
||||
.disabled(!SDLUtil.isValidIdentifyContact(model.username) || isProcessing)
|
||||
.disabled(SDLUtil.identifyContact(model.phoneNumber) != .phone || isProcessing)
|
||||
}
|
||||
.padding(40)
|
||||
.alert(isPresented: $showAlert) {
|
||||
@ -138,25 +138,25 @@ struct RegisterRequestVerifyCodeView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func requestVerifyCode(username: String) async {
|
||||
private func requestVerifyCode(phoneNumber: String) async {
|
||||
self.isProcessing = true
|
||||
defer {
|
||||
self.isProcessing = false
|
||||
}
|
||||
|
||||
if username.isEmpty {
|
||||
if phoneNumber.isEmpty {
|
||||
self.showAlert = true
|
||||
self.errorMessage = "邮箱为空"
|
||||
self.errorMessage = "手机号为空"
|
||||
return
|
||||
}
|
||||
|
||||
switch SDLUtil.identifyContact(username) {
|
||||
case .email:
|
||||
switch SDLUtil.identifyContact(phoneNumber) {
|
||||
case .phone:
|
||||
do {
|
||||
let registerSession = try await self.registerModel.requestVerifyCode(username: username)
|
||||
let registerSession = try await self.registerModel.requestVerifyCode(phoneNumber: phoneNumber)
|
||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||
self.registerModel.stage = .submitVerifyCode
|
||||
self.registerModel.username = username
|
||||
self.registerModel.phoneNumber = phoneNumber
|
||||
self.registerModel.sessionId = registerSession.sessionId
|
||||
|
||||
self.registerModel.transitionEdge = .trailing
|
||||
@ -170,7 +170,7 @@ struct RegisterRequestVerifyCodeView: View {
|
||||
}
|
||||
default:
|
||||
self.showAlert = true
|
||||
self.errorMessage = "邮箱格式错误"
|
||||
self.errorMessage = "手机号格式错误"
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,14 +199,14 @@ struct RegisterSubmitVerifyCodeView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 24) {
|
||||
headerSection(title: "身份验证", subtitle: "验证码已发送至 \(registerModel.username)")
|
||||
headerSection(title: "身份验证", subtitle: "验证码已发送至 \(registerModel.phoneNumber)")
|
||||
|
||||
VStack(alignment: .trailing, spacing: 16) {
|
||||
PunchTextField(icon: "envelope.badge", placeholder: "输入 6 位验证码", text: $code)
|
||||
|
||||
Button {
|
||||
Task { @MainActor in
|
||||
await self.resendVerifyCodeAction(username: registerModel.username)
|
||||
await self.resendVerifyCodeAction(phoneNumber: registerModel.phoneNumber)
|
||||
}
|
||||
} label: {
|
||||
if isEnabled {
|
||||
@ -257,9 +257,9 @@ struct RegisterSubmitVerifyCodeView: View {
|
||||
}
|
||||
|
||||
// 重新发送验证码
|
||||
private func resendVerifyCodeAction(username: String) async {
|
||||
private func resendVerifyCodeAction(phoneNumber: String) async {
|
||||
do {
|
||||
let result = try await self.registerModel.requestVerifyCode(username: username)
|
||||
let result = try await self.registerModel.requestVerifyCode(phoneNumber: phoneNumber)
|
||||
print("send verify code result: \(result)")
|
||||
} catch let err {
|
||||
print("resend verify get error: \(err)")
|
||||
@ -439,7 +439,7 @@ struct RegisterSuccessView: View {
|
||||
Button(action: {
|
||||
// 关闭当前注册窗口
|
||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||
self.appContext.appScene = .login(username: registerModel.username)
|
||||
self.appContext.appScene = .login(username: registerModel.phoneNumber)
|
||||
}
|
||||
}) {
|
||||
Text("立即开始使用")
|
||||
|
||||
@ -72,14 +72,14 @@ struct GetVerifyCodeView: View {
|
||||
@Bindable var model = resetPasswordModel
|
||||
|
||||
VStack(spacing: 24) {
|
||||
headerSection(title: "重置密码", subtitle: "请输入关联的邮箱来验证身份")
|
||||
headerSection(title: "重置密码", subtitle: "请输入关联的手机号来验证身份")
|
||||
|
||||
PunchTextField(icon: "person.crop.circle", placeholder: "邮箱", text: $model.username)
|
||||
PunchTextField(icon: "phone.fill", placeholder: "手机号", text: $model.phoneNumber)
|
||||
.frame(width: 280)
|
||||
|
||||
Button {
|
||||
Task { @MainActor in
|
||||
await self.sendVerifyCode(username: model.username)
|
||||
await self.sendVerifyCode(phoneNumber: model.phoneNumber)
|
||||
}
|
||||
} label: {
|
||||
Text("获取验证码")
|
||||
@ -89,7 +89,7 @@ struct GetVerifyCodeView: View {
|
||||
.buttonStyle(.borderedProminent)
|
||||
.controlSize(.large)
|
||||
.frame(width: 280)
|
||||
.disabled(!SDLUtil.isValidIdentifyContact(model.username) || isProcessing)
|
||||
.disabled(SDLUtil.identifyContact(model.phoneNumber) != .phone || isProcessing)
|
||||
}
|
||||
.padding(40)
|
||||
.alert(isPresented: $showAlert) {
|
||||
@ -98,16 +98,17 @@ struct GetVerifyCodeView: View {
|
||||
}
|
||||
|
||||
// 发送验证码
|
||||
private func sendVerifyCode(username: String) async {
|
||||
private func sendVerifyCode(phoneNumber: String) async {
|
||||
self.isProcessing = true
|
||||
defer {
|
||||
self.isProcessing = false
|
||||
}
|
||||
|
||||
do {
|
||||
let resetSession = try await resetPasswordModel.requestVerifyCode(username: username)
|
||||
let resetSession = try await resetPasswordModel.requestVerifyCode(phoneNumber: phoneNumber)
|
||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||
self.resetPasswordModel.stage = .submitVerifyCode
|
||||
self.resetPasswordModel.phoneNumber = phoneNumber
|
||||
self.resetPasswordModel.sessionId = resetSession.sessionId
|
||||
|
||||
self.resetPasswordModel.transitionEdge = .trailing
|
||||
@ -141,14 +142,14 @@ struct SubmitVerifyCodeView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 24) {
|
||||
headerSection(title: "身份验证", subtitle: "验证码已发送至 \(self.resetPasswordModel.username)")
|
||||
headerSection(title: "身份验证", subtitle: "验证码已发送至 \(self.resetPasswordModel.phoneNumber)")
|
||||
|
||||
VStack(alignment: .trailing, spacing: 16) {
|
||||
PunchTextField(icon: "envelope.badge", placeholder: "输入 6 位验证码", text: $code)
|
||||
|
||||
Button(isResendEnabled ? "重新获取" : "重新获取 (\(remainingSeconds)s)") {
|
||||
Task { @MainActor in
|
||||
await self.resendAction(username: self.resetPasswordModel.username)
|
||||
await self.resendAction(phoneNumber: self.resetPasswordModel.phoneNumber)
|
||||
}
|
||||
}
|
||||
.buttonStyle(.link)
|
||||
@ -191,8 +192,8 @@ struct SubmitVerifyCodeView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func resendAction(username: String) async {
|
||||
_ = try? await resetPasswordModel.requestVerifyCode(username: username)
|
||||
private func resendAction(phoneNumber: String) async {
|
||||
_ = try? await resetPasswordModel.requestVerifyCode(phoneNumber: phoneNumber)
|
||||
await startCountdown()
|
||||
}
|
||||
|
||||
@ -266,7 +267,7 @@ struct ResetPasswordView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 24) {
|
||||
headerSection(title: "设置新密码", subtitle: "请为账号 \(self.resetPasswordModel.username) 设置一个强密码")
|
||||
headerSection(title: "设置新密码", subtitle: "请为手机号 \(self.resetPasswordModel.phoneNumber) 设置一个强密码")
|
||||
|
||||
VStack(spacing: 12) {
|
||||
PunchTextField(icon: "lock.shield", placeholder: "新密码 (至少8位)", text: $password, isSecure: true)
|
||||
@ -362,7 +363,7 @@ struct ResetPasswordSuccessView: View {
|
||||
|
||||
Button(action: {
|
||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||
self.appContext.appScene = .login(username: self.resetPasswordModel.username)
|
||||
self.appContext.appScene = .login(username: self.resetPasswordModel.phoneNumber)
|
||||
}
|
||||
}) {
|
||||
Text("返回登录")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user