TSSetingVC.swift 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // TSSetingVC.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/1/16.
  6. //
  7. import Combine
  8. import SwiftUI
  9. class ListEventPublisher {
  10. /// 设置
  11. let settingPublisher = PassthroughSubject<SettingType, Never>()
  12. /// 进入订阅详情页
  13. let enterPurchasePublisher = PassthroughSubject<Bool, Never>()
  14. }
  15. class TSSetingVC: TSBaseVC {
  16. var viewModel: TSSetingViewModel = TSSetingViewModel()
  17. var publisher: ListEventPublisher = .init()
  18. lazy var hostVc: UIHostingController<TSSettingListView> = {
  19. let vc = UIHostingController(rootView: TSSettingListView(viewModel: viewModel, publisher: publisher))
  20. vc.view.backgroundColor = .clear
  21. return vc
  22. }()
  23. override func createView() {
  24. edgesForExtendedLayout = []
  25. setNavBarViewHidden(true)
  26. contentView.addSubview(hostVc.view)
  27. hostVc.view.snp.makeConstraints { make in
  28. make.top.equalTo(k_Height_StatusBar+16)
  29. make.leading.trailing.bottom.equalToSuperview()
  30. }
  31. }
  32. override func dealThings() {
  33. publisher.enterPurchasePublisher.receive(on: DispatchQueue.main).sink { [weak self] _ in
  34. guard let self = self else { return }
  35. viewModel.pushVipPurchase(parent: self)
  36. }.store(in: &cancellable)
  37. publisher.settingPublisher.receive(on: DispatchQueue.main).sink{ [weak self] type in
  38. guard let self = self else {
  39. return
  40. }
  41. switch type {
  42. case .howToUse:
  43. viewModel.pushTutorials(parent: self)
  44. case .shareus:
  45. viewModel.shareApp(parent: self)
  46. case .agreement:
  47. viewModel.showAgreement(parent: self)
  48. case .privacy:
  49. viewModel.showPrivacy(parent: self)
  50. case .update:
  51. viewModel.updateApp(parent: self)
  52. break
  53. case .removeCloudData:
  54. viewModel.removeCloudData(parent: self)
  55. break
  56. case .AboutData:
  57. viewModel.AboutData(parent: self)
  58. break
  59. case .about:
  60. break
  61. case .rateus:
  62. viewModel.rateAction()
  63. }
  64. }.store(in: &cancellable)
  65. vipInfoChanged()
  66. refreshView()
  67. NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
  68. NotificationCenter.default.addObserver(self, selector: #selector(refreshView), name: .kRefreshSettingView, object: nil)
  69. }
  70. @objc func vipInfoChanged() {
  71. kExecuteOnMainThread {
  72. self.viewModel.isViper = PurchaseManager.default.isVip
  73. }
  74. }
  75. @objc func refreshView() {
  76. if UIApplication.compareAppVersions(newVersion1: kAppNewVerison, oldVersion: appShortVersion()) == .newer {
  77. self.viewModel.isHaveNewVersion = true
  78. }
  79. }
  80. }