添加登录流程、会话路由和对齐参考 UI 的主 Tab 框架

This commit is contained in:
2026-07-06 15:12:34 +08:00
parent 3611547abe
commit 31ffec0f2b
70 changed files with 1588 additions and 48 deletions

View File

@ -0,0 +1,61 @@
//
// LoginViewModel.swift
// suixinkan
//
import Foundation
/// ViewModelUI Android `LoginViewModel`
final class LoginViewModel {
private(set) var account = ""
private(set) var password = ""
private(set) var isPrivacyChecked = false
private(set) var enableRegister = false
var isLoginEnabled: Bool {
!account.isEmpty && !password.isEmpty
}
var onStateChange: (() -> Void)?
func updateAccount(_ value: String) {
account = value
notifyStateChange()
}
func updatePassword(_ value: String) {
password = value
notifyStateChange()
}
func togglePrivacyChecked() {
isPrivacyChecked.toggle()
notifyStateChange()
}
func updateEnableRegister(_ enabled: Bool) {
enableRegister = enabled
notifyStateChange()
}
func login() {
guard isPrivacyChecked else {
onShowMessage?("请先阅读并同意用户协议与隐私政策")
return
}
guard isLoginEnabled else { return }
onLogin?()
}
var onShowMessage: ((String) -> Void)?
var onLogin: (() -> Void)?
var onLoginByCode: (() -> Void)?
var onRegister: (() -> Void)?
var onUserAgreement: (() -> Void)?
var onPrivacyPolicy: (() -> Void)?
private func notifyStateChange() {
onStateChange?()
}
}