67 lines
1.6 KiB
Swift
67 lines
1.6 KiB
Swift
//
|
|
// MineViewModel.swift
|
|
// QuickLocation
|
|
//
|
|
|
|
import Foundation
|
|
import RxSwift
|
|
import RxDataSources
|
|
|
|
typealias MineListSectionModel = SectionModel<String, MineMenuItem>
|
|
|
|
class MineViewModel {
|
|
|
|
struct Output {
|
|
var sectionedItems: Observable<[MineListSectionModel]>
|
|
}
|
|
|
|
let output: Output
|
|
|
|
private var disposeBag = DisposeBag()
|
|
private let sectionedItems = PublishSubject<[MineListSectionModel]>()
|
|
|
|
let userAvatar = PublishSubject<String>()
|
|
let userName = PublishSubject<String>()
|
|
let userID = PublishSubject<String>()
|
|
|
|
let menuItems: [MineMenuItem] = [
|
|
MineMenuItem(icon: "Mine/account_security", title: "账户与安全"),
|
|
MineMenuItem(icon: "Mine/status_setting", title: "状态设置"),
|
|
MineMenuItem(icon: "Mine/emergency_contact", title: "紧急联系人"),
|
|
MineMenuItem(icon: "Mine/customer_service", title: "在线客服"),
|
|
MineMenuItem(icon: "Mine/privacy_agreement", title: "隐私与协议"),
|
|
MineMenuItem(icon: "Mine/permission_check", title: "权限检测")
|
|
]
|
|
|
|
lazy var cellAction: Action<MineMenuItem, Void> = { this in
|
|
return Action { model in
|
|
|
|
return .empty()
|
|
}
|
|
}(self)
|
|
|
|
func loadMenuData() {
|
|
sectionedItems.onNext(menuItems.mapSection())
|
|
}
|
|
|
|
func loadUserInfo() {
|
|
// TODO: Load user info from API
|
|
}
|
|
|
|
func performLogout() {
|
|
// TODO: Logout logic
|
|
}
|
|
|
|
// MARK: - Init
|
|
init() {
|
|
output = Output(
|
|
sectionedItems: sectionedItems.asObservable()
|
|
)
|
|
}
|
|
}
|
|
|
|
struct MineMenuItem {
|
|
let icon: String
|
|
let title: String
|
|
}
|