| | |
| | | import CoreTelephony |
| | | |
| | | let SetBGMSuccess_Noti = Notification.Name.init("SetBGMSuccess_Noti") |
| | | let ToShowTree_Noti = Notification.Name.init("ToShowTree_Noti") |
| | | let ReloadData_Noti = Notification.Name.init("ReloadData_Noti") |
| | | |
| | | struct TitleItem{ |
| | | var id = 0 |
| | |
| | | class HomeViewModel{ |
| | | var homeTopMenuItems = [HomeTopMenuItem]() |
| | | var homeBottomMenuItems = [HomeTopMenuItem]() |
| | | var todyModel:MeditationModel? |
| | | var todyModel:ToDayMeditationModel? |
| | | var privateTodyModels = [MeditationModel]() |
| | | var meditationList = [MeditationListModel]() |
| | | } |
| | |
| | | private var titleItems = [TitleItem]() |
| | | private var viewModel = HomeViewModel() |
| | | private var timer:Timer? |
| | | private var needPopToTree:Bool = false //是否需要跳转到树苗 |
| | | |
| | | private var cellularData:CTCellularData! |
| | | |
| | |
| | | |
| | | //获取用户信息 |
| | | if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){ |
| | | Services.getUserDetail().subscribe(onNext: {data in |
| | | Services.isFirst().subscribe(onNext: {[weak self]data in |
| | | if data.data == true{ |
| | | self?.navigationController?.tabBarController?.selectedIndex = 2 |
| | | var viewModel = UserDefaultSettingViewModel.getSetting() |
| | | viewModel?.userFirstOpenTreeTask = true |
| | | UserDefaultSettingViewModel.saveSetting(viewModel!) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | Services.getUserDetail(showProgress: false).subscribe(onNext: {data in |
| | | if let m = data.data{UserViewModel.saveAvatarInfo(m)} |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true |
| | | |
| | | if needPopToTree{ |
| | | navigationController?.tabBarController?.selectedIndex = 2 |
| | | } |
| | | |
| | | if AudioPlayer.getSharedInstance().scenePlayer?.timeControlStatus == .paused && UserDefaultSettingViewModel.getSetting()?.bgm != nil{ |
| | | AudioPlayer.getSharedInstance().playSceneAt(UserDefaultSettingViewModel.getSetting()!.bgm!.audioFile) |
| | | } |
| | | } |
| | | |
| | | override func viewDidLoad() { |
| | |
| | | if !state{ |
| | | exit(0) |
| | | }else{ |
| | | |
| | | if var m = UserDefaultSettingViewModel.getSetting(){ |
| | | m.userFirstLaunch = false |
| | | UserDefaultSettingViewModel.saveSetting(m) |
| | | } |
| | | |
| | | //跳转计划引导 |
| | | let nav = BaseNav(rootViewController: PlanGuideVC(isFromFist: true)) |
| | | nav.modalPresentationStyle = .fullScreen |
| | |
| | | |
| | | NotificationCenter.default.rx.notification(PlantGuideQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | weakSelf.getData() |
| | | |
| | | Services.isFirst().subscribe(onNext: {data in |
| | | if data.data == true{ |
| | | weakSelf.navigationController?.tabBarController?.selectedIndex = 2 |
| | | let viewModel = UserDefaultSettingViewModel.getSetting() |
| | | // viewModel?.userFirstOpenTreeTask = false |
| | | UserDefaultSettingViewModel.saveSetting(viewModel!) |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | weakSelf.needPopToTree = data.object as? Bool ?? false |
| | | weakSelf.getData() |
| | | |
| | | }).disposed(by: disposeBag) |
| | | |
| | |
| | | |
| | | NotificationCenter.default.rx.notification(LoginQuit_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in |
| | | self.getData() |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | NotificationCenter.default.rx.notification(ReloadData_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in |
| | | self.tableView.reloadData() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | |
| | | }).disposed(by: disposeBag) |
| | | |
| | | Services.getTopdayMedita().subscribe(onNext: { data in |
| | | self.viewModel.todyModel = data.data?.clientMeditationVO |
| | | self.viewModel.todyModel = data.data |
| | | self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none) |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | let m = MeditationModel() |
| | | m.id = 0 |
| | | self.viewModel.privateTodyModels = [m] |
| | | if !(UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true){ |
| | | Services.getPersonalityPlan().subscribe(onNext: { data in |
| | | if let m = data.data{ |
| | | if m.count > 0{ |
| | | self.viewModel.privateTodyModels = m |
| | | }else{ |
| | | let m = MeditationModel() |
| | | m.id = 0 |
| | | self.viewModel.privateTodyModels = [m] |
| | | } |
| | | self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | }else{ |
| | | self.tableView.reloadData() |
| | | } |
| | | |
| | | Services.getMeditationAndCateList().subscribe(onNext: { data in |
| | |
| | | @objc func autoUpdate(){ |
| | | print("--->") |
| | | Services.getTopdayMedita().subscribe(onNext: { data in |
| | | self.viewModel.todyModel = data.data?.clientMeditationVO |
| | | self.viewModel.todyModel = data.data |
| | | self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
| | | |
| | | if indexPath.section == 0{ |
| | | if let m = viewModel.todyModel{ |
| | | Services.getMeditationDetail(id: m.id).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | if let m = data.data{ |
| | | |
| | | if AudioPlayer.getSharedInstance().meditationModel?.id == m.id && AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing{ |
| | | return |
| | | } |
| | | |
| | | AudioPlayer.getSharedInstance().playBGMAt(firstPlayIndex: 0, model: m, delegate: self) |
| | | PayMusicVC.show(model: m,isHidden: false) |
| | | self?.tableView.reloadData() |
| | | if let m = viewModel.todyModel,let detailId = m.clientMeditationVO?.id{ |
| | | if AudioPlayer.getSharedInstance().meditationModel?.id == m.meditationId{ |
| | | if AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .paused{ |
| | | AudioPlayer.getSharedInstance().bgmPlayer?.play() |
| | | AudioPlayer.getSharedInstance().masterPlayer?.play() |
| | | PayMusicVC.updateStatus(.playing) |
| | | self.viewModel.todyModel?.playAtMe = true |
| | | }else{ |
| | | AudioPlayer.getSharedInstance().bgmPlayer?.pause() |
| | | AudioPlayer.getSharedInstance().masterPlayer?.pause() |
| | | PayMusicVC.updateStatus(.pause) |
| | | self.viewModel.todyModel?.playAtMe = false |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | DispatchQueue.main.asyncAfter(delay: 0.4) { |
| | | self.tableView.reloadData() |
| | | } |
| | | }else{ |
| | | //游客模式都能播放 |
| | | Services.getMeditationDetail(id: detailId).subscribe(onNext: {[weak self]data in |
| | | if let m = data.data{ |
| | | |
| | | if AudioPlayer.getSharedInstance().meditationModel?.id == m.id && AudioPlayer.getSharedInstance().bgmPlayer?.timeControlStatus == .playing{ |
| | | return |
| | | } |
| | | AudioPlayer.getSharedInstance().playBGMAt(firstPlayIndex: 0, model: m, delegate: self) |
| | | PayMusicVC.show(model: m,isHidden: false) |
| | | self?.viewModel.todyModel?.playAtMe = true |
| | | DispatchQueue.main.asyncAfter(delay: 1.0) { |
| | | self?.tableView.reloadData() |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | }else{ |
| | | alert(msg: "平台暂未设置今日疗愈") |
| | | } |
| | |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | if indexPath.section == 0{ |
| | | if indexPath.section == 0 && indexPath.row == 0{ |
| | | //每日疗愈 |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell |
| | | if viewModel.todyModel?.id != 0{ |
| | | cell.model = viewModel.todyModel |
| | | cell.view_data.isHidden = false |
| | | cell.img_play.isHidden = AudioPlayer.getSharedInstance().meditationModel?.id == viewModel.todyModel?.id |
| | | |
| | | }else{ |
| | | cell.img_cover.image = UIImage(named: "bg_today") |
| | | cell.view_data.isHidden = true |
| | | } |
| | | |
| | | print("--->\(cell)") |
| | | |
| | | cell.setplaying() |
| | | return cell |
| | | }else if indexPath.section == 1{ |
| | | }else if indexPath.section == 1 && indexPath.row == 0{ |
| | | //私人定制 |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell |
| | | cell.style = .style1 |
| | | cell.setModels(viewModel.privateTodyModels,showType: .horizontal) |
| | | return cell |
| | | }else if indexPath.section == 2{ |
| | | }else if indexPath.section == 2 && indexPath.row == 0{ |
| | | // 新手冥想指南 |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_2_TCell") as! Home_Style_2_TCell |
| | | cell.imgView.image = UIImage(named: "bg_guide_home") |