Fix all SwiftLint violations across codebase

Resolves 130+ violations including deployment target checks, code style issues, and formatting inconsistencies. Adds SwiftLint disable comments for compiler-required availability checks while maintaining deployment target compliance.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Arkadiusz Fal
2025-11-09 17:56:15 +01:00
parent 4840c9a05f
commit be4e1adb9b
58 changed files with 257 additions and 303 deletions

View File

@@ -185,7 +185,7 @@ final class MPVBackend: PlayerBackend {
var audioSampleRate: String {
client?.audioSampleRate ?? "unknown"
}
var availableAudioTracks: [Stream.AudioTrack] {
stream?.audioTracks ?? []
}
@@ -331,7 +331,7 @@ final class MPVBackend: PlayerBackend {
if stream.selectedAudioTrackIndex >= stream.audioTracks.count {
stream.selectedAudioTrackIndex = 0
}
stream.audioAsset = AVURLAsset(url: stream.audioTracks[stream.selectedAudioTrackIndex].url)
let fileToLoad = self.model.musicMode ? stream.audioAsset.url : stream.videoAsset.url
let audioTrack = self.model.musicMode ? nil : stream.audioAsset.url
@@ -343,7 +343,7 @@ final class MPVBackend: PlayerBackend {
} else {
// Fallback for streams without separate audio tracks (e.g., single asset streams)
let fileToLoad = stream.videoAsset.url
client.loadFile(fileToLoad, bitrate: stream.bitrate, kind: stream.kind, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in
self?.isLoadingVideo = true
self?.pause()
@@ -754,7 +754,7 @@ final class MPVBackend: PlayerBackend {
func switchAudioTrack(to index: Int) {
guard let stream, let video else { return }
// Validate the index is within bounds
guard index >= 0 && index < stream.audioTracks.count else {
logger.error("Invalid audio track index: \(index), available tracks: \(stream.audioTracks.count)")

View File

@@ -354,7 +354,7 @@ final class MPVClient: ObservableObject {
func areSubtitlesAdded() async -> Bool {
guard !mpv.isNil else { return false }
let trackCount = await Task(operation: { getInt("track-list/count") }).value
let trackCount = await Task { getInt("track-list/count") }.value
guard trackCount > 0 else { return false }
for index in 0 ..< trackCount {

View File

@@ -257,6 +257,7 @@ final class PlayerModel: ObservableObject {
pipController = .init(playerLayer: avPlayerBackend.playerLayer)
pipController?.delegate = pipDelegate
#if os(iOS)
// swiftlint:disable:next deployment_target
if #available(iOS 14.2, *) {
pipController?.canStartPictureInPictureAutomaticallyFromInline = true
}
@@ -1037,7 +1038,7 @@ final class PlayerModel: ObservableObject {
#else
func handleEnterForeground() {
DispatchQueue.global(qos: .userInteractive).async { [weak self] in
guard let self = self else { return }
guard let self else { return }
if !self.musicMode, self.activeBackend == .mpv {
self.mpvBackend.addVideoTrackFromStream()
@@ -1329,6 +1330,7 @@ final class PlayerModel: ObservableObject {
// Check availability for iOS 14.5 or newer to handle interruption reason
// Currently only for debugging purpose
#if os(iOS)
// swiftlint:disable:next deployment_target
if #available(iOS 14.5, *) {
// Extract the interruption reason, if available
if let reasonValue = info[AVAudioSessionInterruptionReasonKey] as? UInt,

View File

@@ -321,7 +321,7 @@ extension PlayerModel {
}
restoredQueue.append(contentsOf: Defaults[.queue])
queue = restoredQueue.compactMap { $0 }
queue = restoredQueue.compactMap(\.self)
queue.forEach { loadQueueVideoDetails($0) }
}

View File

@@ -100,7 +100,7 @@ extension PlayerModel {
streamsMenu,
playbackModeMenu,
switchToMPVAction
].compactMap { $0 }
].compactMap(\.self)
#endif
}
}