mirror of
https://github.com/yattee/yattee.git
synced 2025-10-17 04:48:17 +00:00
Use Swift 5.7 if-let style
This commit is contained in:
@@ -211,7 +211,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
model: PlayerModel
|
||||
) {
|
||||
asset.loadValuesAsynchronously(forKeys: Self.assetKeysToLoad) { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
model.logger.info("loading \(type.rawValue) track")
|
||||
@@ -285,7 +285,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
guard let item = self.model.playerItem, self.isAutoplaying(item) else { return }
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -361,7 +361,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
}
|
||||
|
||||
private func playerItem(_: Stream) -> AVPlayerItem? {
|
||||
if let asset = asset {
|
||||
if let asset {
|
||||
return AVPlayerItem(asset: asset)
|
||||
} else {
|
||||
return AVPlayerItem(asset: composition)
|
||||
@@ -380,7 +380,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
|
||||
if let thumbnailURL = video.thumbnailURL(quality: .medium) {
|
||||
let task = URLSession.shared.dataTask(with: thumbnailURL) { [weak self] thumbnailData, _, _ in
|
||||
guard let thumbnailData = thumbnailData else { return }
|
||||
guard let thumbnailData else { return }
|
||||
|
||||
let image = UIImage(data: thumbnailData)
|
||||
if let pngData = image?.pngData() {
|
||||
@@ -425,7 +425,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
private func observePlayerItemStatus(_ item: AVPlayerItem) {
|
||||
statusObservation?.invalidate()
|
||||
statusObservation = item.observe(\.status, options: [.old, .new]) { [weak self] playerItem, _ in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -507,7 +507,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
forInterval: interval,
|
||||
queue: .main
|
||||
) { [weak self] _ in
|
||||
guard let self = self, self.model.activeBackend == .appleAVPlayer else {
|
||||
guard let self, self.model.activeBackend == .appleAVPlayer else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -551,7 +551,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
forInterval: interval,
|
||||
queue: .main
|
||||
) { [weak self] _ in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -567,7 +567,7 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
|
||||
private func addPlayerTimeControlStatusObserver() {
|
||||
playerTimeControlStatusObserver = avPlayer.observe(\.timeControlStatus) { [weak self] player, _ in
|
||||
guard let self = self,
|
||||
guard let self,
|
||||
self.avPlayer == player,
|
||||
self.model.activeBackend == .appleAVPlayer
|
||||
else {
|
||||
|
@@ -22,7 +22,7 @@ final class MPVBackend: PlayerBackend {
|
||||
var stream: Stream?
|
||||
var video: Video?
|
||||
var captions: Captions? { didSet {
|
||||
guard let captions = captions else {
|
||||
guard let captions else {
|
||||
client.removeSubs()
|
||||
return
|
||||
}
|
||||
@@ -33,7 +33,7 @@ final class MPVBackend: PlayerBackend {
|
||||
var loadedVideo = false
|
||||
var isLoadingVideo = true { didSet {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ final class MPVBackend: PlayerBackend {
|
||||
var isSeeking = false {
|
||||
didSet {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
self.model.isSeeking = self.isSeeking
|
||||
}
|
||||
}
|
||||
@@ -187,7 +187,7 @@ final class MPVBackend: PlayerBackend {
|
||||
#endif
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -213,14 +213,14 @@ final class MPVBackend: PlayerBackend {
|
||||
}
|
||||
|
||||
let replaceItem: (CMTime?) -> Void = { [weak self] time in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
self.stop()
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -345,7 +345,7 @@ final class MPVBackend: PlayerBackend {
|
||||
model.updateNowPlayingInfo()
|
||||
|
||||
handleSegmentsThrottle.execute {
|
||||
if let currentTime = currentTime {
|
||||
if let currentTime {
|
||||
model.handleSegments(at: currentTime)
|
||||
}
|
||||
}
|
||||
@@ -453,7 +453,7 @@ final class MPVBackend: PlayerBackend {
|
||||
}
|
||||
|
||||
func updateNetworkState() {
|
||||
guard let client = client, let networkState = networkState else {
|
||||
guard let client, let networkState else {
|
||||
return
|
||||
}
|
||||
|
||||
|
@@ -29,7 +29,7 @@ final class MPVClient: ObservableObject {
|
||||
|
||||
func create(frame: CGRect? = nil) {
|
||||
#if !os(macOS)
|
||||
if let frame = frame {
|
||||
if let frame {
|
||||
glView = MPVOGLView(frame: frame)
|
||||
}
|
||||
#endif
|
||||
@@ -134,7 +134,7 @@ final class MPVClient: ObservableObject {
|
||||
var args = [url.absoluteString]
|
||||
var options = [String]()
|
||||
|
||||
if let time = time {
|
||||
if let time {
|
||||
args.append("replace")
|
||||
options.append("start=\(Int(time.seconds))")
|
||||
}
|
||||
@@ -268,7 +268,7 @@ final class MPVClient: ObservableObject {
|
||||
}
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self, let model = self.backend.model else { return }
|
||||
guard let self, let model = self.backend.model else { return }
|
||||
UIView.animate(withDuration: 0.2, animations: {
|
||||
let aspectRatio = self.aspectRatio > 0 && self.aspectRatio < VideoPlayerView.defaultAspectRatio ? self.aspectRatio : VideoPlayerView.defaultAspectRatio
|
||||
let height = [model.playerSize.height, model.playerSize.width / aspectRatio].min()!
|
||||
|
@@ -79,7 +79,7 @@ extension PlayerBackend {
|
||||
}
|
||||
|
||||
func seek(relative time: CMTime, seekType: SeekType, completionHandler: ((Bool) -> Void)? = nil) {
|
||||
if let currentTime = currentTime, let duration = playerItemDuration {
|
||||
if let currentTime, let duration = playerItemDuration {
|
||||
let seekTime = min(max(0, currentTime.seconds + time.seconds), duration.seconds)
|
||||
model.seek.registerSeek(at: .secondsInDefaultTimescale(seekTime), type: seekType, restore: currentTime)
|
||||
seek(to: seekTime, seekType: seekType, completionHandler: completionHandler)
|
||||
|
@@ -15,7 +15,7 @@ final class ControlOverlaysModel: ObservableObject {
|
||||
}
|
||||
|
||||
private func handlePresentationChange() {
|
||||
guard let player = player else { return }
|
||||
guard let player else { return }
|
||||
player.backend.setNeedsNetworkStateUpdates(presenting && Defaults[.showMPVPlaybackStats])
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@ final class PiPDelegate: NSObject, AVPictureInPictureControllerDelegate {
|
||||
func pictureInPictureControllerWillStartPictureInPicture(_: AVPictureInPictureController) {}
|
||||
|
||||
func pictureInPictureControllerDidStartPictureInPicture(_: AVPictureInPictureController) {
|
||||
guard let player = player else { return }
|
||||
guard let player else { return }
|
||||
|
||||
player.playingInPictureInPicture = true
|
||||
player.avPlayerBackend.startPictureInPictureOnPlay = false
|
||||
@@ -27,7 +27,7 @@ final class PiPDelegate: NSObject, AVPictureInPictureControllerDelegate {
|
||||
}
|
||||
|
||||
func pictureInPictureControllerDidStopPictureInPicture(_: AVPictureInPictureController) {
|
||||
guard let player = player else { return }
|
||||
guard let player else { return }
|
||||
|
||||
player.playingInPictureInPicture = false
|
||||
player.controls.objectWillChange.send()
|
||||
|
@@ -35,7 +35,7 @@ final class PlayerControlsModel: ObservableObject {
|
||||
}
|
||||
|
||||
func handlePresentationChange() {
|
||||
guard let player = player else { return }
|
||||
guard let player else { return }
|
||||
if presentingControls {
|
||||
DispatchQueue.main.async(qos: .userInteractive) { [weak self] in
|
||||
player.backend.startControlsUpdates()
|
||||
@@ -82,7 +82,7 @@ final class PlayerControlsModel: ObservableObject {
|
||||
}
|
||||
|
||||
func hide() {
|
||||
guard let player = player,
|
||||
guard let player,
|
||||
!player.musicMode
|
||||
else {
|
||||
return
|
||||
@@ -109,7 +109,7 @@ final class PlayerControlsModel: ObservableObject {
|
||||
func resetTimer() {
|
||||
removeTimer()
|
||||
|
||||
guard let player = player, !player.musicMode else {
|
||||
guard let player, !player.musicMode else {
|
||||
return
|
||||
}
|
||||
|
||||
|
@@ -304,7 +304,7 @@ final class PlayerModel: ObservableObject {
|
||||
|
||||
var playingLive: Bool {
|
||||
guard live,
|
||||
let videoDuration = videoDuration,
|
||||
let videoDuration,
|
||||
let time = backend.currentTime?.seconds else { return false }
|
||||
|
||||
return videoDuration - time < 30
|
||||
@@ -337,7 +337,7 @@ final class PlayerModel: ObservableObject {
|
||||
backend == .appleAVPlayer || !avPlayerBackend.startPictureInPictureOnPlay
|
||||
{
|
||||
changeBackendHandler = { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
self.changeActiveBackend(from: self.activeBackend, to: backend)
|
||||
}
|
||||
}
|
||||
@@ -499,7 +499,7 @@ final class PlayerModel: ObservableObject {
|
||||
fromBackend.pause()
|
||||
}
|
||||
|
||||
guard var stream = stream, changingStream else {
|
||||
guard var stream, changingStream else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -529,7 +529,7 @@ final class PlayerModel: ObservableObject {
|
||||
}
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
self.upgradeToStream(stream, force: true)
|
||||
@@ -610,7 +610,7 @@ final class PlayerModel: ObservableObject {
|
||||
var pipPossible: Bool {
|
||||
guard activeBackend == .appleAVPlayer else { return !transitioningToPiP }
|
||||
|
||||
guard let pipController = pipController else { return false }
|
||||
guard let pipController else { return false }
|
||||
guard !pipController.isPictureInPictureActive else { return true }
|
||||
|
||||
return pipController.isPictureInPicturePossible && !transitioningToPiP
|
||||
@@ -644,7 +644,7 @@ final class PlayerModel: ObservableObject {
|
||||
#endif
|
||||
|
||||
DispatchQueue.main.async(qos: .background) { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
if self.saveLastPlayed {
|
||||
self.lastPlayed = self.currentItem
|
||||
}
|
||||
@@ -680,8 +680,8 @@ final class PlayerModel: ObservableObject {
|
||||
let results = try? context.fetch(watchFetchRequest)
|
||||
|
||||
context.perform { [weak self] in
|
||||
guard let self = self,
|
||||
let results = results else { return }
|
||||
guard let self,
|
||||
let results else { return }
|
||||
let resultsIds = results.map(\.videoID)
|
||||
|
||||
guard let autoplayVideo = related.filter({ !resultsIds.contains($0.videoID) }).randomElement() else {
|
||||
@@ -693,7 +693,7 @@ final class PlayerModel: ObservableObject {
|
||||
self.autoplayItemSource = video
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
self.playerAPI.loadDetails(item, completionHandler: { newItem in
|
||||
guard newItem.videoID == self.autoplayItem?.videoID else { return }
|
||||
self.autoplayItem = newItem
|
||||
@@ -875,7 +875,7 @@ final class PlayerModel: ObservableObject {
|
||||
}
|
||||
|
||||
let task = URLSession.shared.dataTask(with: thumbnailURL) { [weak self] thumbnailData, _, _ in
|
||||
guard let thumbnailData = thumbnailData else {
|
||||
guard let thumbnailData else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -947,7 +947,7 @@ final class PlayerModel: ObservableObject {
|
||||
guard aspectRatio != backend.aspectRatio else { return }
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
self.aspectRatio = self.backend.aspectRatio
|
||||
}
|
||||
#endif
|
||||
|
@@ -58,7 +58,7 @@ extension PlayerModel {
|
||||
preservedTime = currentItem.playbackTime
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
guard let video = self.currentVideo else {
|
||||
return
|
||||
}
|
||||
@@ -122,7 +122,7 @@ extension PlayerModel {
|
||||
|
||||
resetAutoplay()
|
||||
|
||||
if let nextItem = nextItem {
|
||||
if let nextItem {
|
||||
advanceToItem(nextItem)
|
||||
} else {
|
||||
advancing = false
|
||||
@@ -164,7 +164,7 @@ extension PlayerModel {
|
||||
|
||||
func resetQueue() {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ extension PlayerModel {
|
||||
|
||||
if loadDetails {
|
||||
playerAPI.loadDetails(item, failureHandler: videoLoadFailureHandler) { [weak self] newItem in
|
||||
guard let self = self else { return }
|
||||
guard let self else { return }
|
||||
videoDetailsLoadHandler(newItem.video, newItem)
|
||||
|
||||
if play {
|
||||
@@ -239,7 +239,7 @@ extension PlayerModel {
|
||||
func restoreQueue() {
|
||||
var restoredQueue = [PlayerQueueItem?]()
|
||||
|
||||
if let lastPlayed = lastPlayed,
|
||||
if let lastPlayed,
|
||||
!Defaults[.queue].contains(where: { $0.videoID == lastPlayed.videoID })
|
||||
{
|
||||
restoredQueue.append(lastPlayed)
|
||||
|
@@ -7,7 +7,7 @@ struct PlayerQueueItemBridge: Defaults.Bridge {
|
||||
typealias Serializable = [String: String]
|
||||
|
||||
func serialize(_ value: Value?) -> Serializable? {
|
||||
guard let value = value else {
|
||||
guard let value else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ struct PlayerQueueItemBridge: Defaults.Bridge {
|
||||
|
||||
func deserialize(_ object: Serializable?) -> Value? {
|
||||
guard
|
||||
let object = object,
|
||||
let object,
|
||||
let videoID = object["videoID"]
|
||||
else {
|
||||
return nil
|
||||
|
@@ -37,7 +37,7 @@ extension PlayerModel {
|
||||
logger.error("segment end time is: \(segment.end) when player item duration is: \(duration.seconds)")
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,7 @@ extension PlayerModel {
|
||||
func loadAvailableStreams(_ video: Video) {
|
||||
availableStreams = []
|
||||
|
||||
guard let playerInstance = playerInstance else { return }
|
||||
guard let playerInstance else { return }
|
||||
|
||||
logger.info("loading streams from \(playerInstance.description)")
|
||||
fetchStreams(playerAPI.video(video.videoID), instance: playerInstance, video: video)
|
||||
|
Reference in New Issue
Block a user