71 lines
1.9 KiB
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)
|
|
}
|
|
}
|
|
}
|