Visual_Novel_iOS/crush/Crush/Src/Modules/Discover/DiscoverRootPageController....

77 lines
2.3 KiB
Swift

//
// DiscoverRootPageController.swift
// Crush
//
// Created by Leon on 2025/7/22.
//
import UIKit
import Combine
class DiscoverRootPageController: CLTabRootController<DiscoverRootPageView> {
@Published var filterModel = RolesFilterModel()
private var cancellables = Set<AnyCancellable>()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupViews()
setupDatas()
setupEvents()
}
private func setupViews() {
navigationView.bgView.alpha = 0
navigationView.setupBgViewToStatusBarHeight()
navigationView.isUserInteractionEnabled = false
}
private func setupDatas() {
loadDiscoverInfo()
}
private func loadDiscoverInfo() {
DiscoverProvider.request(.discoverInfo, modelType: DiscoverHomeInfo.self) { [weak self] result in
switch result {
case let .success(model):
// dlog(model)
self?.container.headerView.leaderboardEntryView.config(model)
case .failure:
break
}
}
}
private func setupEvents() {
container.pinHeaderView.filterButton.addTarget(self, action: #selector(tapFilterButton(button:)), for: .touchUpInside)
container.headerView.banner.topButton.addTarget(self, action: #selector(tapBannerAd), for: .touchUpInside)
$filterModel.sink {[weak self] model in
self?.container.pinHeaderView.setupFilterCount(model.filterCount())
}.store(in: &cancellables)
}
// MARK: Action
@objc private func tapFilterButton(button: UIButton) {
let vc = RolesFilterController()
vc.filterType = .discover
vc.rolesFilterModel = filterModel
presentNaviRootVc(vc: vc)
vc.completion = {[weak self] model in
self?.filterModel = model
// dlog("fitler:\(model)")
self?.container.setupFilter(filter: model)
}
}
@objc private func tapBannerAd() {
guard UserCore.shared.checkUserLoginIfNotPushUserToLogin() else{
return
}
let vc = DailyFreeCoinCheckController()
navigationController?.pushViewController(vc, animated: true)
}
}