MoviaBox/Thimra/Class/Mine/Controller/SPMineViewController.swift
2025-04-25 17:00:24 +08:00

159 lines
4.9 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// SPMineViewController.swift
// Thimra
//
// Created by on 2025/4/10.
//
import UIKit
class SPMineViewController: SPViewController {
private lazy var dataArr: [SPMineItem] = {
let arr = [
// SPMineItem(type: .language, iconImage: UIImage(named: "language_icon_01"), title: "Language".localized),
SPMineItem(type: .feedBack, iconImage: UIImage(named: "feed_back_icon_01"), title: "FeedBack".localized),
SPMineItem(type: .privacyPolicy, iconImage: UIImage(named: "privacy_policy_icon_01"), title: "Privacy Policy".localized),
SPMineItem(type: .userAgreement, iconImage: UIImage(named: "user_agreement_icon_01"), title: "User Agreement".localized),
SPMineItem(type: .aboutUs, iconImage: UIImage(named: "about_us_icon_01"), title: "About Us".localized),
]
return arr
}()
///
private var isHaveEntered = false
//MARK: UI 
private lazy var headerView: SPMineHeaderView = {
let view = SPMineHeaderView()
view.frame = CGRect(x: 0, y: 0, width: kSPScreenWidth, height: view.contentHeight)
return view
}()
private lazy var tableView: SPTableView = {
let tableView = SPTableView(frame: .zero, style: .plain)
tableView.delegate = self
tableView.dataSource = self
tableView.rowHeight = 50
SPMineCell.registerCell(tableView: tableView)
return tableView
}()
override func viewDidLoad() {
super.viewDidLoad()
setBackgroundView(isShowGradient: false)
requestData()
_setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if isHaveEntered {
requestData()
}
isHaveEntered = true
}
private func updateHeaderView() {
tableView.tableHeaderView = nil
self.headerView.height = self.headerView.contentHeight
tableView.tableHeaderView = headerView
}
}
extension SPMineViewController {
private func _setupUI() {
tableView.tableHeaderView = self.headerView
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}
//MARK: -------------- UITableViewDelegate & UITableViewDataSource --------------
extension SPMineViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = SPMineCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath)
cell.item = dataArr[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArr.count
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = dataArr[indexPath.row]
switch item.type {
case .privacyPolicy:
let vc = SPWebViewController()
vc.urlStr = SPPrivacyPolicyWebUrl
self.navigationController?.pushViewController(vc, animated: true)
case .userAgreement:
let vc = SPWebViewController()
vc.urlStr = SPUserAgreementWebUrl
self.navigationController?.pushViewController(vc, animated: true)
case .aboutUs:
let vc = SPAboutUsViewController()
self.navigationController?.pushViewController(vc, animated: true)
case .feedBack:
let vc = SPFeedbackViewController()
self.navigationController?.pushViewController(vc, animated: true)
default:
break
}
}
}
extension SPMineViewController {
private func requestData() {
requestUserInfo()
requestPlayHistoryList()
}
///
private func requestUserInfo() {
SPUserAPI.requestUserInfo { [weak self] userInfo in
guard let self = self else { return }
if let userInfo = userInfo {
self.headerView.userInfo = userInfo
}
}
}
///
private func requestPlayHistoryList() {
SPVideoAPI.requestPlayHistoryList(page: 1, pageSize: 3) { [weak self] listModel in
guard let self = self else { return }
if let list = listModel?.list {
self.headerView.playHistoryArr = list
self.updateHeaderView()
}
}
}
}