|
@@ -41,7 +41,6 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
|
|
|
lazy var topView: PlayDetailTopView = PlayDetailTopView()
|
|
|
lazy var controlView: PlayDetailControlView = PlayDetailControlView()
|
|
|
- var downloader: NewChunkDownloader?
|
|
|
private var timer: Timer?
|
|
|
private var cancellable: [AnyCancellable] = []
|
|
|
private var downloaderCancellable: [AnyCancellable] = []
|
|
@@ -72,7 +71,6 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
override func addNotifaction() {
|
|
|
super.addNotifaction()
|
|
|
addPlayNotifaction()
|
|
|
- addTaskNotifaction()
|
|
|
addSleepNotifacion()
|
|
|
}
|
|
|
|
|
@@ -92,14 +90,7 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
}
|
|
|
|
|
|
@objc func retryAudio(notify: Notification) {
|
|
|
- if let videoId = notify.object as? String,
|
|
|
- videoId == PlayerManager.shared.currentVideo?.videoId {
|
|
|
- TSNewDownloadManager.shared.retryDownload(videoId: videoId, isAudio: true) { [weak self] downloader in
|
|
|
- guard let self = self else { return }
|
|
|
- self.downloader = downloader
|
|
|
- self.updateDownloader(id: videoId)
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
func addPlayNotifaction() {
|
|
@@ -132,7 +123,7 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
|
|
|
/// 即将播放的和正在播放的视频是同一个
|
|
|
if newValue != nil &&
|
|
|
- oldValue?.videoId == newValue?.videoId {
|
|
|
+ oldValue?.videoId == newValue?.videoId{
|
|
|
PlayerManager.shared.showPlayerViewController()
|
|
|
return
|
|
|
}
|
|
@@ -140,7 +131,6 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
if let mVideo = newValue {
|
|
|
self.controlView.updateVideoInfo(video: mVideo)
|
|
|
PlayerManager.shared.miniBar.updateVideoInfo(video: mVideo, state: .pause)
|
|
|
- self.updateDownloader(id: mVideo.videoId ?? "")
|
|
|
} else {
|
|
|
self.controlView.resetVideoInfo()
|
|
|
self.controlView.resetProgress()
|
|
@@ -234,42 +224,7 @@ class PlayDetailViewController: LWBGViewController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- func addTaskNotifaction() {
|
|
|
- // 单个完成回调
|
|
|
- NotificationCenter.default.addObserver(self, selector: #selector(updateDownoloadStatus(notify:)), name: kGroupDownloadFinishNotifactionName, object: nil)
|
|
|
- }
|
|
|
-
|
|
|
- func updateDownloader(id: String) {
|
|
|
- if let downloader = TSNewDownloadManager.shared.fetchDownloader(identifier: id) {
|
|
|
- downloaderCancellable.removeAll()
|
|
|
- self.downloader = downloader
|
|
|
- downloader.$progress.receive(on: DispatchQueue.main).sink { [weak self] progress in
|
|
|
- self?.controlView.downloadButton.progressView.set(progress: Double(progress))
|
|
|
- }.store(in: &downloaderCancellable)
|
|
|
-
|
|
|
- downloader.$downloadState.receive(on: DispatchQueue.main).sink { state in
|
|
|
- self.controlView.setDownloadButtonStates(status: state)
|
|
|
- }.store(in: &downloaderCancellable)
|
|
|
- } else {
|
|
|
- downloaderCancellable.removeAll()
|
|
|
- downloader = nil
|
|
|
- if let video = TSVideoOperator.shared.dataManager.fetchVideo(videoId: id) {
|
|
|
- controlView.setDownloadButtonStates(status: video.videoStatus.asChunkDownloadStatus)
|
|
|
- } else {
|
|
|
- controlView.setDownloadButtonStates(status: .idle)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- @objc func updateDownoloadStatus(notify: Notification) {
|
|
|
- if let videoId = notify.object as? String,
|
|
|
- let video = TSVideoOperator.shared.dataManager.fetchVideo(videoId: videoId),
|
|
|
- let currentVideo = TSVideoOperator.shared.playerViewModel.currentVideo {
|
|
|
- if videoId == currentVideo.videoId {
|
|
|
- controlView.setDownloadButtonStates(status: video.videoStatus.asChunkDownloadStatus)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
@objc func showMoreOperation() {
|
|
|
let vc = CWOperateViewController(types: [.like, .addPlaylist, .share, .deleteVideo])
|
|
@@ -457,37 +412,7 @@ extension PlayDetailViewController {
|
|
|
}
|
|
|
|
|
|
@objc func downloadButtonAction(sender: DownloadButton) {
|
|
|
- if let video = TSVideoOperator.shared.playerViewModel.currentVideo,
|
|
|
- let videoId = video.videoId {
|
|
|
- switch sender.downloadState {
|
|
|
- case .idle(isAnimate: false), .idle(isAnimate: true):
|
|
|
- TSNewDownloadManager.shared.downloadVideo(videoId: videoId, isAudio: false) { [weak self] downloader in
|
|
|
- self?.downloader = downloader
|
|
|
- self?.updateDownloader(id: videoId)
|
|
|
- }
|
|
|
- break
|
|
|
- case .pause:
|
|
|
- TSNewDownloadManager.shared.resumeTask(id: videoId) { [weak self] downloader in
|
|
|
- self?.downloader = downloader
|
|
|
- self?.updateDownloader(id: videoId)
|
|
|
- }
|
|
|
-
|
|
|
- case .downloading:
|
|
|
- TSNewDownloadManager.shared.pauseTask(id: videoId) { [weak self] downloader in
|
|
|
- self?.downloader = downloader
|
|
|
- self?.updateDownloader(id: videoId)
|
|
|
- }
|
|
|
-
|
|
|
- case .retry:
|
|
|
- TSNewDownloadManager.shared.retryDownload(videoId: videoId, isAudio: false) { [weak self] downloader in
|
|
|
- self?.downloader = downloader
|
|
|
- self?.updateDownloader(id: videoId)
|
|
|
- }
|
|
|
- break
|
|
|
- default:
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// 调用这个方法来显示加载圈
|