mirror of
https://github.com/yattee/yattee.git
synced 2024-12-22 13:33:42 +00:00
Minor tvOS fixes
This commit is contained in:
parent
0e54cbcad0
commit
bc065e282a
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -42,7 +42,7 @@ final class PlayerViewController: UIViewController {
|
||||
var playerQueueInfoViewController: UIHostingController<AnyView> {
|
||||
let controller = UIHostingController(rootView:
|
||||
AnyView(
|
||||
NowPlayingView(infoViewController: true)
|
||||
NowPlayingView(inInfoViewController: true)
|
||||
.frame(maxHeight: 600)
|
||||
.environmentObject(playerModel)
|
||||
)
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
import SwiftUI
|
||||
|
||||
struct NowPlayingView: View {
|
||||
var infoViewController = false
|
||||
var inInfoViewController = false
|
||||
|
||||
@EnvironmentObject<PlayerModel> 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()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user