完成注册流程
This commit is contained in:
parent
b99f8031e4
commit
803737b574
@ -14,8 +14,17 @@ class RegisterModel {
|
|||||||
|
|
||||||
enum Stage {
|
enum Stage {
|
||||||
case requestVerifyCode(username: String?)
|
case requestVerifyCode(username: String?)
|
||||||
case submitVerifyCode(username: String)
|
case submitVerifyCode(username: String, sessionId: Int)
|
||||||
case setPassword(username: String)
|
case setPassword(sessionId: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注册会话信息
|
||||||
|
struct RegisterSession: Codable {
|
||||||
|
let sessionId: Int
|
||||||
|
|
||||||
|
enum CodingKeys: String, CodingKey {
|
||||||
|
case sessionId = "session_id"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var stage: Stage = .requestVerifyCode(username: nil)
|
var stage: Stage = .requestVerifyCode(username: nil)
|
||||||
@ -26,35 +35,33 @@ class RegisterModel {
|
|||||||
"mac": SystemConfig.macAddressString(mac: SystemConfig.getMacAddress())
|
"mac": SystemConfig.macAddressString(mac: SystemConfig.getMacAddress())
|
||||||
]
|
]
|
||||||
|
|
||||||
func requestVerifyCode(username: String) async throws -> String {
|
func requestVerifyCode(username: String) async throws -> RegisterSession {
|
||||||
var params: [String: Any] = [
|
var params: [String: Any] = [
|
||||||
"username": username
|
"username": username
|
||||||
]
|
]
|
||||||
params.merge(baseParams) {$1}
|
params.merge(baseParams) {$1}
|
||||||
|
|
||||||
return try await SDLAPIClient.doPost(path: "/auth/sendVerifyCode", params: params, as: String.self)
|
return try await SDLAPIClient.doPost(path: "/register/sendVerfiyCode", params: params, as: RegisterSession.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
func submitVerifyCode(username: String, verifyCode: String) async throws -> String {
|
func submitVerifyCode(sessionId: Int, verifyCode: String) async throws -> String {
|
||||||
var params: [String: Any] = [
|
var params: [String: Any] = [
|
||||||
"username": username,
|
"session_id": sessionId,
|
||||||
"verify_code": verifyCode,
|
"code": verifyCode,
|
||||||
]
|
]
|
||||||
params.merge(baseParams) {$1}
|
params.merge(baseParams) {$1}
|
||||||
|
|
||||||
return try await SDLAPIClient.doPost(path: "/auth/submitVerifyCode", params: params, as: String.self)
|
return try await SDLAPIClient.doPost(path: "/register/verfiyCode", params: params, as: String.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
func register(username: String, password: String) async throws -> String {
|
func register(sessionId: Int, password: String) async throws -> String {
|
||||||
var params: [String: Any] = [
|
var params: [String: Any] = [
|
||||||
"username": username,
|
"session_id": sessionId,
|
||||||
"password": password,
|
"password": password
|
||||||
"version": SystemConfig.version_name,
|
|
||||||
"system": SystemConfig.systemInfo
|
|
||||||
]
|
]
|
||||||
params.merge(baseParams) {$1}
|
params.merge(baseParams) {$1}
|
||||||
|
|
||||||
return try await SDLAPIClient.doPost(path: "/auth/register", params: params, as: String.self)
|
return try await SDLAPIClient.doPost(path: "/register/submit", params: params, as: String.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,10 +21,10 @@ struct RegisterRootView: View {
|
|||||||
switch registerModel.stage {
|
switch registerModel.stage {
|
||||||
case .requestVerifyCode(let username):
|
case .requestVerifyCode(let username):
|
||||||
RegisterRequestVerifyCodeView(username: username ?? "")
|
RegisterRequestVerifyCodeView(username: username ?? "")
|
||||||
case .submitVerifyCode(let username):
|
case .submitVerifyCode(let username, let sessionId):
|
||||||
RegisterSubmitVerifyCodeView(username: username)
|
RegisterSubmitVerifyCodeView(username: username, sessionId: sessionId)
|
||||||
case .setPassword(let username):
|
case .setPassword(let sessionId):
|
||||||
RegisterSetPasswordView(username: username)
|
RegisterSetPasswordView(sessionId: sessionId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.transition(.asymmetric(
|
.transition(.asymmetric(
|
||||||
@ -81,10 +81,10 @@ struct RegisterRequestVerifyCodeView: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 24) {
|
VStack(spacing: 24) {
|
||||||
headerSection(title: "创建个人网络", subtitle: "输入手机号或邮箱开始注册")
|
headerSection(title: "创建个人网络", subtitle: "输入邮箱开始注册")
|
||||||
|
|
||||||
VStack(spacing: 16) {
|
VStack(spacing: 16) {
|
||||||
PunchTextField(icon: "person.crop.circle", placeholder: "手机号 / 邮箱", text: $username)
|
PunchTextField(icon: "person.crop.circle", placeholder: "邮箱", text: $username)
|
||||||
}
|
}
|
||||||
.frame(width: 280)
|
.frame(width: 280)
|
||||||
|
|
||||||
@ -113,26 +113,26 @@ struct RegisterRequestVerifyCodeView: View {
|
|||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
if username.isEmpty {
|
if username.isEmpty {
|
||||||
self.showAlert = true
|
self.showAlert = true
|
||||||
self.errorMessage = "手机号/邮箱为空"
|
self.errorMessage = "邮箱为空"
|
||||||
self.isProcessing = false
|
self.isProcessing = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch SDLUtil.identifyContact(username) {
|
switch SDLUtil.identifyContact(username) {
|
||||||
case .email, .phone:
|
case .email:
|
||||||
do {
|
do {
|
||||||
//_ = try await self.registerModel.requestVerifyCode(username: username)
|
let registerSession = try await self.registerModel.requestVerifyCode(username: username)
|
||||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||||
self.registerModel.stage = .submitVerifyCode(username: username)
|
self.registerModel.stage = .submitVerifyCode(username: username, sessionId: registerSession.sessionId)
|
||||||
self.registerModel.transitionEdge = .trailing
|
self.registerModel.transitionEdge = .trailing
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
self.showAlert = true
|
self.showAlert = true
|
||||||
self.errorMessage = error.localizedDescription
|
self.errorMessage = error.localizedDescription
|
||||||
}
|
}
|
||||||
case .invalid:
|
default:
|
||||||
self.showAlert = true
|
self.showAlert = true
|
||||||
self.errorMessage = "手机号/邮箱格式错误"
|
self.errorMessage = "邮箱格式错误"
|
||||||
}
|
}
|
||||||
self.isProcessing = false
|
self.isProcessing = false
|
||||||
}
|
}
|
||||||
@ -143,7 +143,10 @@ struct RegisterRequestVerifyCodeView: View {
|
|||||||
// MARK: - 第二步:验证
|
// MARK: - 第二步:验证
|
||||||
struct RegisterSubmitVerifyCodeView: View {
|
struct RegisterSubmitVerifyCodeView: View {
|
||||||
@Environment(RegisterModel.self) var registerModel
|
@Environment(RegisterModel.self) var registerModel
|
||||||
|
|
||||||
let username: String
|
let username: String
|
||||||
|
let sessionId: Int
|
||||||
|
|
||||||
@State private var code: String = ""
|
@State private var code: String = ""
|
||||||
@State private var isProcessing = false
|
@State private var isProcessing = false
|
||||||
|
|
||||||
@ -247,9 +250,9 @@ struct RegisterSubmitVerifyCodeView: View {
|
|||||||
self.isProcessing = true
|
self.isProcessing = true
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
do {
|
do {
|
||||||
//_ = try await self.registerModel.submitVerifyCode(username: username, verifyCode: self.code)
|
let result = try await self.registerModel.submitVerifyCode(sessionId: sessionId, verifyCode: self.code)
|
||||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||||
self.registerModel.stage = .setPassword(username: username)
|
self.registerModel.stage = .setPassword(sessionId: sessionId)
|
||||||
self.registerModel.transitionEdge = .trailing
|
self.registerModel.transitionEdge = .trailing
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
@ -264,7 +267,7 @@ struct RegisterSubmitVerifyCodeView: View {
|
|||||||
// MARK: - 第三步:设置密码
|
// MARK: - 第三步:设置密码
|
||||||
struct RegisterSetPasswordView: View {
|
struct RegisterSetPasswordView: View {
|
||||||
@Environment(RegisterModel.self) var registerModel
|
@Environment(RegisterModel.self) var registerModel
|
||||||
let username: String
|
let sessionId: Int
|
||||||
@State private var password = ""
|
@State private var password = ""
|
||||||
@State private var confirm = ""
|
@State private var confirm = ""
|
||||||
@State private var isProcessing = false
|
@State private var isProcessing = false
|
||||||
@ -329,7 +332,7 @@ struct RegisterSetPasswordView: View {
|
|||||||
self.isProcessing = true
|
self.isProcessing = true
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
do {
|
do {
|
||||||
// _ = try await self.registerModel.register(username: username, password: self.password)
|
let result = try await self.registerModel.register(sessionId: sessionId, password: self.password)
|
||||||
} catch {
|
} catch {
|
||||||
self.errorMessage = error.localizedDescription
|
self.errorMessage = error.localizedDescription
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user