// // CreateBubbleVC.swift // QuickLocation // import UIKit import RxSwift import RxCocoa import SwiftyUserDefaults class CreateBubbleVC: BaseViewController { fileprivate var rootView: CreateBubbleView! override func loadView() { rootView = CreateBubbleView(frame: UIScreen.main.bounds) view = rootView } override func viewDidLoad() { super.viewDidLoad() bind() restoreActiveBubbleIfNeeded() } private func bind() { rootView.navView.onBackTapped = { [weak self] in self?.navigationController?.popViewController(animated: true) } rootView.moreBtn.rx.tap .subscribe(onNext: { [weak self] in self?.navigationController?.pushViewController(BubbleKnowledgeVC(), animated: true) }) .disposed(by: disposeBag) rootView.setupView.confirmBtn.rx.tap .subscribe(onNext: { [weak self] in guard let self else { return } let hours = self.rootView.setupView.selectedHour.value let message = self.rootView.setupView.buildMessage(for: hours) self.rootView.setupView.showNotifySheet(message: message) }) .disposed(by: disposeBag) rootView.setupView.onSheetVisibilityChanged = { [weak self] visible in self?.rootView.updateNavTitleForSheet(visible) } rootView.setupView.sheetConfirmBtn.rx.tap .subscribe(onNext: { [weak self] in self?.submitCreate() }) .disposed(by: disposeBag) rootView.doneView.popupBtn.rx.tap .subscribe(onNext: { [weak self] in self?.showConfirmPop( title: "温馨提醒", message: "您确定要弹出这个气泡吗?", confirmText: "爆裂", confirmBlock: { [weak self] in self?.requestSetBubble(enable: false, keep_time: -1) }, cancelText: "取消" ) }) .disposed(by: disposeBag) } private func submitCreate() { guard let systemConfig = AppContextManager.shared.systemConfig, systemConfig.isIntercept == false else { let hours = rootView.setupView.selectedHour.value requestSetBubble(enable: true, keep_time: hours) return } if AppContextManager.shared.vip > 1 { let hours = rootView.setupView.selectedHour.value requestSetBubble(enable: true, keep_time: hours) } else { CreateBubblePopView.show() } } private func restoreActiveBubbleIfNeeded() { guard AppContextManager.shared.status == 2, let endDate = Defaults[\.bubbleKeepTimes] else { return } rootView.showDone(animated: false) rootView.doneView.startCountdown(endDate: endDate) } private func requestSetBubble(enable: Bool, keep_time: Int) { DLToast.showLoading() UserService.setBubble(enable: enable, keep_time: keep_time).subscribe(onNext: { [weak self] _ in DLToast.dismiss() guard let self else { return } guard enable else { DLToast.show(text: "气泡已弹出") { Defaults[\.bubbleKeepTimes] = nil AppContextManager.shared.updateAccountStatus(0) AppRouter.shared.popOrDismiss() } return } AppContextManager.shared.updateAccountStatus(2) self.rootView.setupView.dismissNotifySheet() let endDate = Calendar.current.date(byAdding: .hour, value: keep_time, to: Date()) ?? Date() Defaults[\.bubbleKeepTimes] = endDate self.rootView.doneView.startCountdown(endDate: endDate) self.rootView.showDone(animated: true) }, onError: { _ in }).disposed(by: disposeBag) } }