fix: show file diagnostics (exists, size, magic bytes) directly on error screen

This commit is contained in:
yumoqing 2026-07-03 08:19:53 +08:00
parent 0e172e015e
commit 6503712be9

View File

@ -255,6 +255,9 @@ final class PlayerBridge: ObservableObject {
}
}
//
private var lastDiagMsg = ""
func playIndex(_ index: Int) {
guard index >= 0 && index < queue.count else { return }
@ -280,6 +283,7 @@ final class PlayerBridge: ObservableObject {
try? fh.close()
}
diagLog("Local file check: exists=\(exists) readable=\(readable) size=\(fileSize) magic=\(String(format:"%08X", magic))")
lastDiagMsg = "file: exists=\(exists) readable=\(readable)\nsize=\(fileSize) magic=\(String(format:"%08X", magic))"
}
// KVO
@ -358,7 +362,7 @@ final class PlayerBridge: ObservableObject {
let errMsg = err?.localizedDescription ?? "Unknown error"
let errCode = (err as NSError?)?.code ?? 0
let errDomain = (err as NSError?)?.domain ?? "none"
let fullMsg = "\(errMsg)\n[code:\(errCode) domain:\(errDomain)]\n\(item.url.lastPathComponent)"
let fullMsg = "\(errMsg)\n[code:\(errCode) domain:\(errDomain)]\n\(self?.lastDiagMsg ?? "")\n\(item.url.lastPathComponent)"
self?.diagLog("AVPlayerItem FAILED: \(errMsg) code=\(errCode) domain=\(errDomain)")
self?.playerStatus = .error(fullMsg)
self?.loadingTimer?.invalidate()