jsdw_ios/QuickLocation/Section/Mine/MineViewModel.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
}