Multiplatform UI support fixes

This commit is contained in:
Arkadiusz Fal
2021-07-11 22:52:49 +02:00
parent 0fa0518f0a
commit ca4378afc1
30 changed files with 947 additions and 318 deletions

View File

@@ -0,0 +1,43 @@
import Foundation
import SwiftUI
final class NavigationState: ObservableObject {
@Published var tabSelection: TabSelection = .subscriptions
@Published var showingChannel = false
@Published var channel: Channel?
@Published var showingVideoDetails = false
@Published var video: Video?
func openChannel(_ channel: Channel) {
self.channel = channel
showingChannel = true
}
func closeChannel() {
showingChannel = false
channel = nil
}
func openVideoDetails(_ video: Video) {
self.video = video
showingVideoDetails = true
}
func closeVideoDetails() {
showingVideoDetails = false
video = nil
}
var tabSelectionOptionalBinding: Binding<TabSelection?> {
Binding<TabSelection?>(
get: {
self.tabSelection
},
set: {
self.tabSelection = $0 ?? .subscriptions
}
)
}
}

View File

@@ -1,7 +1,9 @@
import AVFoundation
import Foundation
import Logging
import UIKit
#if !os(macOS)
import UIKit
#endif
final class PlayerState: ObservableObject {
let logger = Logger(label: "net.arekf.Pearvidious.ps")
@@ -36,15 +38,19 @@ final class PlayerState: ObservableObject {
makeMetadataItem(.commonIdentifierDescription, value: video.description)
]
if let thumbnailData = try? Data(contentsOf: video.thumbnailURL(quality: "high")!),
let image = UIImage(data: thumbnailData),
let pngData = image.pngData()
{
let artworkItem = makeMetadataItem(.commonIdentifierArtwork, value: pngData)
externalMetadata.append(artworkItem)
}
#if !os(macOS)
playerItem.externalMetadata = externalMetadata
if let thumbnailData = try? Data(contentsOf: video.thumbnailURL(quality: "high")!),
let image = UIImage(data: thumbnailData),
let pngData = image.pngData()
{
let artworkItem = makeMetadataItem(.commonIdentifierArtwork, value: pngData)
externalMetadata.append(artworkItem)
}
playerItem.externalMetadata = externalMetadata
#endif
playerItem.preferredForwardBufferDuration = 10

View File

@@ -15,4 +15,8 @@ final class SearchQuery: ObservableObject {
self.date = date
self.duration = duration
}
var isEmpty: Bool {
query.isEmpty
}
}