From ddf5ae7f8f74a249198d26cb2ffab0264e8110ab Mon Sep 17 00:00:00 2001 From: Jos Vooges | STH Date: Mon, 21 Sep 2026 03:09:27 +0200 Subject: [PATCH] Fix iOS archive for VLCKit 4 and Events play sheet binding. Unblocks TestFlight 0.5.36 after media.parse/.buffering API removals and optional EventPlayItem Binding inference. --- apps/ios/VMC/Playback/VLCPlayerController.swift | 7 +++++-- apps/ios/VMC/UI/EventsScreen.swift | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/ios/VMC/Playback/VLCPlayerController.swift b/apps/ios/VMC/Playback/VLCPlayerController.swift index 660ced1..3d5afa6 100644 --- a/apps/ios/VMC/Playback/VLCPlayerController.swift +++ b/apps/ios/VMC/Playback/VLCPlayerController.swift @@ -168,7 +168,11 @@ final class VLCPlayerController: NSObject, ObservableObject, VLCMediaPlayerDeleg media.addOption(":freetype-rel-fontsize=\(Self.subtitleRelFontSize)") media.addOption(":freetype-bold=1") mediaPlayer.media = media - _ = media.parse(options: VLCMediaParsingOptions(rawValue: 0x02 | 0x08)) // network + fetchLocal + // VLCKit 4: parse is on VLCMediaParser, not VLCMedia + _ = VLCMediaParser.shared().queue( + media, + options: VLCMediaParsingOptions(rawValue: 0x02 | 0x08) // network + fetchLocal + ) mediaPlayer.play() applySubtitleStyle() if startMs > 2000 { @@ -583,7 +587,6 @@ final class VLCPlayerController: NSObject, ObservableObject, VLCMediaPlayerDeleg self.invalidatePipPlaybackState() } switch newState { - case .buffering: self.stateText = "Bufferen…" case .opening: self.stateText = "Openen…" case .playing: self.stateText = "Afspelen" diff --git a/apps/ios/VMC/UI/EventsScreen.swift b/apps/ios/VMC/UI/EventsScreen.swift index 754b380..92a5f57 100644 --- a/apps/ios/VMC/UI/EventsScreen.swift +++ b/apps/ios/VMC/UI/EventsScreen.swift @@ -595,8 +595,11 @@ struct EventDetailScreen: View { now = date Task { await refreshEvent() } } - .fullScreenCover(item: Binding( - get: { playInfo.map { EventPlayItem(info: $0) } }, + .fullScreenCover(item: Binding( + get: { + guard let playInfo else { return nil } + return EventPlayItem(info: playInfo) + }, set: { playInfo = $0?.info } )) { item in if let url = URL(string: item.info.streamUrl) {