添加登录流程、会话路由和对齐参考 UI 的主 Tab 框架
This commit is contained in:
44
suixinkan/DataStore/AppStore.swift
Normal file
44
suixinkan/DataStore/AppStore.swift
Normal file
@ -0,0 +1,44 @@
|
||||
//
|
||||
// AppStore.swift
|
||||
// suixinkan
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// 本地会话存储,与 Android `AppStoreDataSource` 对齐。
|
||||
/// 当前以 Token 是否非空判断登录态。
|
||||
final class AppStore {
|
||||
|
||||
static let shared = AppStore()
|
||||
|
||||
private enum Key {
|
||||
static let token = "key_in_token"
|
||||
}
|
||||
|
||||
private let defaults: UserDefaults
|
||||
|
||||
init(defaults: UserDefaults = .standard) {
|
||||
self.defaults = defaults
|
||||
}
|
||||
|
||||
/// 登录 Token。
|
||||
var token: String {
|
||||
get { defaults.string(forKey: Key.token) ?? "" }
|
||||
set { defaults.set(newValue, forKey: Key.token) }
|
||||
}
|
||||
|
||||
/// Token 非空视为已登录。
|
||||
var isLoggedIn: Bool {
|
||||
!token.isEmpty
|
||||
}
|
||||
|
||||
/// 保存登录 Token。
|
||||
func saveToken(_ token: String) {
|
||||
self.token = token
|
||||
}
|
||||
|
||||
/// 清除登录态。
|
||||
func logout() {
|
||||
token = ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user