Music_Player3/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Search(搜索页)/MPPositive_GrideMoodViewController.swift
2024-09-06 18:21:15 +08:00

190 lines
8.6 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MPPositive_GrideMoodViewController.swift
// relax.offline.mp3.music
//
// Created by Mr.Zhou on 2024/7/12.
//
import UIKit
///
class MPPositive_GrideMoodViewController: MPPositive_BaseViewController {
//tableView
private lazy var tableView:UITableView = {
let tableView = UITableView(frame: .init(x: 0, y: 0, width: screen_Width, height: screen_Height), style: .plain)
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.estimatedRowHeight = 200
tableView.rowHeight = UITableView.automaticDimension
tableView.dataSource = self
tableView.delegate = self
tableView.register(MPPositive_HomeSinglesTableViewCell.self, forCellReuseIdentifier: MPPositive_HomeSinglesTableViewCellID)
tableView.register(MPPositive_HomeShowTableViewCell.self, forCellReuseIdentifier: MPPositive_HomeShowTableViewCellID)
tableView.contentInset = .init(top: 0, left: 0, bottom: 70*width, right: 0)
return tableView
}()
private let MPPositive_HomeSinglesTableViewCellID = "MPPositive_HomeSinglesTableViewCell"
private let MPPositive_HomeShowTableViewCellID = "MPPositive_HomeShowTableViewCell"
private var browseModuleLists:[MPPositive_BrowseModuleListViewModel]! = []{
didSet{
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
if browseModuleLists != nil{
configure()
reload()
removeErrorView()
MP_HUD.hideNow()
}
}
}
}
private var browseId:String!
private var params:String!
private var titleText:String!
init(_ browseId:String, params:String, title:String) {
self.browseId = browseId
self.params = params
self.titleText = title
super.init(nibName: nil, bundle: nil)
//
MP_HUD.loading()
MP_NetWorkManager.shared.requestMoodDetails(browseId, params: params) { [weak self] result in
guard let self = self else {return}
browseModuleLists = result
}
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func viewDidLoad() {
super.viewDidLoad()
//
setTitle(titleText)
setPopBtn()
errorBlock = {
[weak self] in
guard let self = self else {
return
}
//navView
view.subviews.forEach { item in
if item != self.topSafeAndNavView {
//
if item.superview != nil {
item.removeFromSuperview()
}
}
}
//View
setErrorView()
MP_HUD.hideNow()
}
retryBlock = {
[weak self] in
guard let self = self else {return}
MP_HUD.loading()
MP_NetWorkManager.shared.requestMoodDetails(browseId, params: params) { [weak self] result in
guard let self = self else {return}
browseModuleLists = result
}
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
reload()
}
//
private func reload() {
tableView.reloadData()
}
private func configure() {
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.left.bottom.right.equalToSuperview()
make.top.equalTo(navView.snp.bottom).offset(20*width)
}
}
}
//MARK: - tableView
extension MPPositive_GrideMoodViewController: UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return browseModuleLists.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let first = browseModuleLists[indexPath.section].items.first, first.browseItem.itemType == .single, first.browseItem.pageType == "MUSIC_VIDEO_TYPE_ATV" {
//
let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_HomeSinglesTableViewCellID, for: indexPath) as! MPPositive_HomeSinglesTableViewCell
cell.browseViewModel = browseModuleLists[indexPath.section]
return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_HomeShowTableViewCellID, for: indexPath) as! MPPositive_HomeShowTableViewCell
cell.browseViewModel = browseModuleLists[indexPath.section]
if let first = browseModuleLists[indexPath.section].items.first, first.browseItem.itemType == .single, first.browseItem.pageType == "MUSIC_VIDEO_TYPE_OMV" {
cell.showType = .Fifth
}else {
//
if browseModuleLists[indexPath.section].items.first?.browseItem.pageType == "MUSIC_PAGE_TYPE_ARTIST" {
cell.showType = .Fourth
}else {
cell.showType = .Third
}
}
cell.requestNextBlock = {
[weak self] (item) in
guard let self = self else {return}
switch item.browseItem.itemType {
case .single:
///
MPPositive_Debouncer.shared.call {
[weak self] in
guard let self = self else {return}
guard MP_NetWorkManager.shared.netWorkStatu == .reachable else {
MP_HUD.text("Bad connection~".localizableString(), delay: 2.0, completion: nil)
return
}
MP_AnalyticsManager.shared.song_clickAction("Mood")
//
MP_PlayerManager.shared.loadPlayer = nil
//
NotificationCenter.notificationKey.post(notificationName: .pup_player_vc)
MP_AnalyticsManager.shared.player_b_impAction()
//next
MP_NetWorkManager.shared.requestNextList(item.browseItem.playListId ?? "", videoId: item.browseItem.videoId ?? "", clickTrackingParams: item.browseItem.clickTrackingParams){ [weak self] listSongs in
guard let self = self else {return}
//playerloadViewModel
let lodaViewModel = MPPositive_PlayerLoadViewModel(listSongs, currentVideoId: item.browseItem.videoId ?? "")
lodaViewModel.improveData(item.browseItem.videoId ?? "")
//
MP_PlayerManager.shared.setPlayType(.normal)
MP_PlayerManager.shared.loadPlayer = lodaViewModel
MP_AnalyticsManager.shared.player_b_listAction()
}
}
case .list:
//
let listVC = MPPositive_ListShowViewController(item.browseItem.browseId ?? "", params: "", title: item.title ?? "", subtitle: item.subtitle ?? "", clickTrackingParams: item.browseItem.clickTrackingParams ?? "")
navigationController?.pushViewController(listVC, animated: true)
case .artist:
//
let artistVC = MPPositive_ArtistShowViewController(item.browseItem.artistId ?? "", clickTrackingParams: item.browseItem.clickTrackingParams ?? "")
navigationController?.pushViewController(artistVC, animated: true)
default:
break
}
}
cell.findMoreBlock = {
[weak self] in
guard let self = self else {return}
let moreVC = MPPositive_MoreContentViewController(browseModuleLists[indexPath.section])
navigationController?.pushViewController(moreVC, animated: true)
}
return cell
}
}
}