jsdw_ios/QuickLocation/Section/Mine/MoodStatus/MoodStatusVC.swift

71 lines
1.9 KiB
Swift

//
// MoodStatusVC.swift
// QuickLocation
//
import UIKit
import RxSwift
import RxCocoa
final class MoodStatusVC: BaseViewController {
private var rootView: MoodStatusView!
private let viewModel = MoodStatusViewModel()
override func loadView() {
rootView = MoodStatusView(frame: UIScreen.main.bounds)
view = rootView
}
override func viewDidLoad() {
super.viewDidLoad()
bind()
rootView.configure(
items: viewModel.items,
selectedMoodIndex: viewModel.selectedMoodIndex.value
)
}
private func bind() {
rootView.onBack = { [weak self] in
guard self?.viewModel.isSaving == false else { return }
self?.navigationController?.popViewController(animated: true)
}
rootView.onSelectMood = { [weak self] moodIndex in
self?.viewModel.select(moodIndex: moodIndex)
}
rootView.onSave = { [weak self] in
self?.save()
}
viewModel.selectedMoodIndex
.asDriver()
.drive(onNext: { [weak self] moodIndex in
self?.rootView.updateSelection(moodIndex: moodIndex)
})
.disposed(by: disposeBag)
}
private func save() {
guard !viewModel.isSaving else { return }
switch viewModel.validateSave() {
case .missing:
DLToast.show(text: "请选择心情")
case let .ready(moodIndex):
viewModel.beginSaving()
rootView.setSaving(true)
DLToast.showLoading()
UserService.setMood(moodIndex: moodIndex)
.subscribe(onNext: { _ in
DLToast.show(text: "保存成功") {
AppRouter.shared.popOrDismiss()
NotificationCenter.default.post(name: .RefreshGroupInfoNotification, object: nil)
}
}).disposed(by: disposeBag)
}
}
}