// // 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) } } }