mirror of
https://github.com/yattee/yattee.git
synced 2025-11-24 02:08:17 +00:00
Multiplatform UI support fixes
This commit is contained in:
43
Model/NavigationState.swift
Normal file
43
Model/NavigationState.swift
Normal 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
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -15,4 +15,8 @@ final class SearchQuery: ObservableObject {
|
||||
self.date = date
|
||||
self.duration = duration
|
||||
}
|
||||
|
||||
var isEmpty: Bool {
|
||||
query.isEmpty
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user