Skip to content

Commit

Permalink
refactor: Feedbacks and remove unused code
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthieu-dgl committed Nov 22, 2024
1 parent 2a9e36a commit a1b7a5d
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 26 deletions.
5 changes: 0 additions & 5 deletions kDrive/UI/View/Files/Preview/VideoCollectionViewCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,6 @@ class VideoCollectionViewCell: PreviewCollectionViewCell {
}
Task { @MainActor in
videoPlayer = VideoPlayer(frozenFile: file, driveFileManager: driveFileManager)
guard let videoPlayer else { return }
videoPlayer.setNowPlayingMetadata()
videoPlayer.onPlaybackEnded = { [weak self] in
self?.videoPlayer?.setNowPlayingMetadata()
}
}
}

Expand Down
8 changes: 3 additions & 5 deletions kDriveCore/AudioPlayer/MediaMetadata.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,14 @@ public struct MediaMetadata {
}

public extension MediaMetadata {
static func extractTrackMetadata(from url: URL) async -> MediaMetadata {
static func extractTrackMetadata(from url: URL, playableFileName: String?) async -> MediaMetadata {
let asset = AVAsset(url: url)

var title = KDriveResourcesStrings.Localizable.unknownTitle
var title = playableFileName ?? KDriveResourcesStrings.Localizable.unknownTitle
var artist = KDriveResourcesStrings.Localizable.unknownArtist
var artwork: UIImage?

let metadata = asset.commonMetadata

for item in metadata {
for item in asset.commonMetadata {
guard let commonKey = item.commonKey else { continue }

switch commonKey {
Expand Down
13 changes: 7 additions & 6 deletions kDriveCore/AudioPlayer/SingleTrackPlayer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,7 @@ public final class SingleTrackPlayer {
if !playableFile.isLocalVersionOlderThanRemote {
player = AVPlayer(url: playableFile.localUrl)
Task { @MainActor in
currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: playableFile.localUrl)
await onCurrentTrackMetadata.send(MediaMetadata.extractTrackMetadata(from: playableFile.localUrl))
await setMetaData(url: playableFile.localUrl, playableFileName: playableFile.name)
}
setUpObservers()
} else if let token = driveFileManager.apiFetcher.currentToken {
Expand All @@ -108,10 +107,7 @@ public final class SingleTrackPlayer {
let headers = ["Authorization": "Bearer \(token.accessToken)"]
let asset = AVURLAsset(url: url, options: ["AVURLAssetHTTPHeaderFieldsKey": headers])
Task { @MainActor in
self.currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: asset.url)
await self.onCurrentTrackMetadata.send(MediaMetadata.extractTrackMetadata(
from: asset.url
))
await self.setMetaData(url: asset.url, playableFileName: playableFile.name)
self.player = AVPlayer(playerItem: AVPlayerItem(asset: asset))
self.setUpObservers()
}
Expand All @@ -131,6 +127,11 @@ public final class SingleTrackPlayer {
playerState = .stopped
}

private func setMetaData(url: URL, playableFileName: String?) async {
currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: url, playableFileName: playableFileName)
await onCurrentTrackMetadata.send(MediaMetadata.extractTrackMetadata(from: url, playableFileName: playableFileName))
}

// MARK: - MediaPlayer

private func setNowPlayingMetadata() {
Expand Down
24 changes: 14 additions & 10 deletions kDriveCore/VideoPlayer/VideoPlayer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,16 @@ public final class VideoPlayer {
setupPlayer(with: frozenFile, driveFileManager: driveFileManager)
}

public func setNowPlayingMetadata() {
public func setNowPlayingMetadata(metadata: MediaMetadata) {
var nowPlayingInfo = [String: Any]()
nowPlayingInfo[MPNowPlayingInfoPropertyMediaType] = MPNowPlayingInfoMediaType.video.rawValue
nowPlayingInfo[MPNowPlayingInfoPropertyIsLiveStream] = false

if let currentTrackMetadata {
nowPlayingInfo[MPMediaItemPropertyTitle] = currentTrackMetadata.title
nowPlayingInfo[MPMediaItemPropertyArtist] = currentTrackMetadata.artist
if let artwork = currentTrackMetadata.artwork {
let artworkItem = MPMediaItemArtwork(boundsSize: artwork.size) { _ in artwork }
nowPlayingInfo[MPMediaItemPropertyArtwork] = artworkItem
}
nowPlayingInfo[MPMediaItemPropertyTitle] = metadata.title
nowPlayingInfo[MPMediaItemPropertyArtist] = metadata.artist
if let artwork = metadata.artwork {
let artworkItem = MPMediaItemArtwork(boundsSize: artwork.size) { _ in artwork }
nowPlayingInfo[MPMediaItemPropertyArtwork] = artworkItem
}

if let duration = player?.currentItem?.duration {
Expand All @@ -73,7 +71,10 @@ public final class VideoPlayer {
if !file.isLocalVersionOlderThanRemote {
player = AVPlayer(url: file.localUrl)
Task { @MainActor in
currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: file.localUrl)
currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: file.localUrl, playableFileName: file.name)
if let currentMetadata = self.currentTrackMetadata {
setNowPlayingMetadata(metadata: currentMetadata)
}
}
} else if let token = driveFileManager.apiFetcher.currentToken {
driveFileManager.apiFetcher.performAuthenticatedRequest(token: token) { token, _ in
Expand All @@ -82,7 +83,10 @@ public final class VideoPlayer {
let headers = ["Authorization": "Bearer \(token.accessToken)"]
let asset = AVURLAsset(url: url, options: ["AVURLAssetHTTPHeaderFieldsKey": headers])
Task { @MainActor in
self.currentTrackMetadata = await MediaMetadata.extractTrackMetadata(from: asset.url)
self.currentTrackMetadata = await MediaMetadata.extractTrackMetadata(
from: asset.url,
playableFileName: file.name
)
self.player = AVPlayer(playerItem: AVPlayerItem(asset: asset))
}
}
Expand Down

0 comments on commit a1b7a5d

Please sign in to comment.