ThimraTV/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift
2025-05-12 14:20:00 +08:00

162 lines
4.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 = "movia_profile_Setting".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()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.dataArr = self.createDataArr()
}
}
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)
case .logout:
logout()
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 logout() {
let alert = UIAlertController(title: nil, message: "movia_confirm_logout".localized, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "movia_affirm".localized, style: .default, handler: { _ in
SPLoginManager.manager.logout { [weak self] isFinish in
guard let self = self else { return }
self.dataArr = self.createDataArr()
}
}))
alert.addAction(UIAlertAction(title: "movia_Cancel".localized, style: .cancel))
self.present(alert, animated: true)
}
private func createDataArr() -> [SPMineItem] {
let cache = SPAppCacheManager.manager.allCache
var arr = [
SPMineItem(type: .clearCache, title: "movia_Clear_cache".localized, subtitle: SPAppCacheManager.cacheToString(cache: cache)),
SPMineItem(type: .aboutUs, title: "movia_profile_About_Us".localized),
]
if SPLoginManager.manager.isLogin {
arr.append(SPMineItem(type: .deleteAccount, title: "DeleteAccount".localized))
arr.append(SPMineItem(type: .logout, title: "movia_signout".localized))
}
return arr
}
}