ThimraTV/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift
2025-04-29 15:47:30 +08:00

136 lines
3.8 KiB
Swift

//
// SPSettingsViewController.swift
// MoviaBox
//
// Created by on 2025/4/28.
//
import UIKit
class SPSettingsViewController: SPViewController {
private lazy var dataArr: [SPMineItem] = createDataArr() {
didSet {
self.tableView.reloadData()
}
}
//MARK: UI
private lazy var tableView: SPTableView = {
let tableView = SPTableView(frame: .zero, style: .insetGrouped)
tableView.delegate = self
tableView.dataSource = self
tableView.separatorStyle = .none
tableView.rowHeight = 48
tableView.sectionFooterHeight = 0
SPSettingsCell.registerCell(tableView: tableView)
return tableView
}()
override func viewDidLoad() {
super.viewDidLoad()
self.setBackgroundView(isShowGradient: false, bgImage: nil)
self.title = "Settings".localized
SPAppCacheManager.manager.getAllCache { [weak self] value in
guard let self = self else { return }
self.dataArr = self.createDataArr()
}
_setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.setNavigationNormalStyle()
}
}
extension SPSettingsViewController {
private func _setupUI() {
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}
//MARK: -------------- UITableViewDelegate & UITableViewDataSource --------------
extension SPSettingsViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = SPSettingsCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath)
cell.item = dataArr[indexPath.section]
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return self.dataArr.count
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 12
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = dataArr[indexPath.section]
switch item.type {
case .aboutUs:
let vc = SPAboutUsViewController()
self.navigationController?.pushViewController(vc, animated: true)
case .clearCache:
clearCache()
case .deleteAccount:
let vc = SPDeleteAccountViewController()
self.navigationController?.pushViewController(vc, animated: true)
default:
break
}
}
}
extension SPSettingsViewController {
private func clearCache() {
SPAppCacheManager.manager.cleanAllCache { [weak self] in
guard let self = self else { return }
self.dataArr = self.createDataArr()
}
}
private func createDataArr() -> [SPMineItem] {
let cache = SPAppCacheManager.manager.allCache
let arr = [
SPMineItem(type: .clearCache, title: "Clear Cache".localized, subtitle: SPAppCacheManager.cacheToString(cache: cache)),
SPMineItem(type: .aboutUs, title: "About Us".localized),
SPMineItem(type: .deleteAccount, title: "Delete Account".localized),
]
return arr
}
}