From bc065e282aa04c7bb9cacf42b7f58993dcc031e3 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Fri, 22 Oct 2021 17:00:09 +0200 Subject: [PATCH] Minor tvOS fixes --- Model/Applications/InvidiousAPI.swift | 10 +++++++--- Model/Player/PlayerStreams.swift | 7 +++---- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- Shared/Player/PlayerViewController.swift | 2 +- tvOS/AccountSelectionView.swift | 8 +++++--- tvOS/NowPlayingView.swift | 11 +++++++---- 6 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Model/Applications/InvidiousAPI.swift b/Model/Applications/InvidiousAPI.swift index ad1a2ad2..90f2a050 100644 --- a/Model/Applications/InvidiousAPI.swift +++ b/Model/Applications/InvidiousAPI.swift @@ -255,14 +255,18 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI { return searchQuery } - static func assetURLFrom(instance: Instance, url: URL) -> URL? { + static func proxiedAsset(instance: Instance, asset: AVURLAsset) -> AVURLAsset? { guard let instanceURLComponents = URLComponents(string: instance.url), - var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return nil } + var urlComponents = URLComponents(url: asset.url, resolvingAgainstBaseURL: false) else { return nil } urlComponents.scheme = instanceURLComponents.scheme urlComponents.host = instanceURLComponents.host - return urlComponents.url + guard let url = urlComponents.url else { + return nil + } + + return AVURLAsset(url: url) } static func extractVideo(_ json: JSON) -> Video { diff --git a/Model/Player/PlayerStreams.swift b/Model/Player/PlayerStreams.swift index 655c365c..3af74314 100644 --- a/Model/Player/PlayerStreams.swift +++ b/Model/Player/PlayerStreams.swift @@ -1,7 +1,6 @@ import Foundation import Siesta import SwiftUI -import AVFoundation extension PlayerModel { var isLoadingAvailableStreams: Bool { @@ -104,10 +103,10 @@ extension PlayerModel { stream.instance = instance if instance.app == .invidious { - stream.audioAsset = AVURLAsset(url: InvidiousAPI.assetURLFrom(instance: instance, url: stream.audioAsset.url)!) - stream.videoAsset = AVURLAsset(url: InvidiousAPI.assetURLFrom(instance: instance, url: stream.videoAsset.url)!) + stream.audioAsset = InvidiousAPI.proxiedAsset(instance: instance, asset: stream.audioAsset) + stream.videoAsset = InvidiousAPI.proxiedAsset(instance: instance, asset: stream.videoAsset) } - + return stream } } diff --git a/Pearvidious.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Pearvidious.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index e3163b3f..9d638b21 100644 --- a/Pearvidious.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Pearvidious.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Alamofire/Alamofire.git", "state": { "branch": null, - "revision": "f96b619bcb2383b43d898402283924b80e2c4bae", - "version": "5.4.3" + "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", + "version": "5.4.4" } }, { diff --git a/Shared/Player/PlayerViewController.swift b/Shared/Player/PlayerViewController.swift index d936d110..6bc73558 100644 --- a/Shared/Player/PlayerViewController.swift +++ b/Shared/Player/PlayerViewController.swift @@ -42,7 +42,7 @@ final class PlayerViewController: UIViewController { var playerQueueInfoViewController: UIHostingController { let controller = UIHostingController(rootView: AnyView( - NowPlayingView(infoViewController: true) + NowPlayingView(inInfoViewController: true) .frame(maxHeight: 600) .environmentObject(playerModel) ) diff --git a/tvOS/AccountSelectionView.swift b/tvOS/AccountSelectionView.swift index f2393f73..6f24d01f 100644 --- a/tvOS/AccountSelectionView.swift +++ b/tvOS/AccountSelectionView.swift @@ -13,7 +13,7 @@ struct AccountSelectionView: View { var body: some View { Section(header: Text(showHeader ? "Current Account" : "")) { - Button(accountButtonTitle(account: accountsModel.current)) { + Button(accountButtonTitle(account: accountsModel.current, long: true)) { if let account = nextAccount { accountsModel.setCurrent(account) } @@ -40,11 +40,13 @@ struct AccountSelectionView: View { allAccounts.next(after: accountsModel.current) } - func accountButtonTitle(account: Account! = nil) -> String { + func accountButtonTitle(account: Account! = nil, long: Bool = false) -> String { guard account != nil else { return "Not selected" } - return instances.count > 1 ? "\(account.description) — \(account.instance.shortDescription)" : account.description + let instanceDescription = long ? account.instance.longDescription : account.instance.description + + return instances.count > 1 ? "\(account.description) — \(instanceDescription)" : account.description } } diff --git a/tvOS/NowPlayingView.swift b/tvOS/NowPlayingView.swift index 24063461..7f15c375 100644 --- a/tvOS/NowPlayingView.swift +++ b/tvOS/NowPlayingView.swift @@ -1,12 +1,12 @@ import SwiftUI struct NowPlayingView: View { - var infoViewController = false + var inInfoViewController = false @EnvironmentObject private var player var body: some View { - if infoViewController { + if inInfoViewController { content .background(.thinMaterial) .mask(RoundedRectangle(cornerRadius: 24)) @@ -18,7 +18,7 @@ struct NowPlayingView: View { var content: some View { ScrollView(.vertical) { VStack(alignment: .leading) { - if !infoViewController, let item = player.currentItem { + if !inInfoViewController, let item = player.currentItem { Group { header("Now Playing") @@ -93,7 +93,7 @@ struct NowPlayingView: View { func header(_ text: String) -> some View { Text(text) - .font(.title3.bold()) + .font((inInfoViewController ? Font.system(size: 40) : .title3).bold()) .foregroundColor(.secondary) .padding(.leading, 40) } @@ -103,5 +103,8 @@ struct NowPlayingView_Previews: PreviewProvider { static var previews: some View { NowPlayingView() .injectFixtureEnvironmentObjects() + + NowPlayingView(inInfoViewController: true) + .injectFixtureEnvironmentObjects() } }