UI improvements, player state refactor

This commit is contained in:
Arkadiusz Fal
2021-07-22 14:43:13 +02:00
parent 132eb7b064
commit 33e102207f
30 changed files with 743 additions and 501 deletions

View File

@@ -0,0 +1,36 @@
import Foundation
extension Thumbnail {
static func fixture(videoId: String, quality: Thumbnail.Quality = .maxres) -> Thumbnail {
Thumbnail(url: fixtureUrl(videoId: videoId, quality: quality), quality: quality)
}
static func fixturesForAllQualities(videoId: String) -> [Thumbnail] {
Thumbnail.Quality.allCases.map { fixture(videoId: videoId, quality: $0) }
}
private static var fixturesHost: String {
"https://invidious.home.arekf.net"
}
private static func fixtureUrl(videoId: String, quality: Thumbnail.Quality) -> URL {
URL(string: "\(fixturesHost)/vi/\(videoId)/\(filenameForQuality(quality)).jpg")!
}
private static func filenameForQuality(_ quality: Thumbnail.Quality) -> String {
switch quality {
case .high:
return "hqdefault"
case .medium:
return "mqdefault"
case .start:
return "1"
case .middle:
return "2"
case .end:
return "3"
default:
return quality.rawValue
}
}
}

View File

@@ -0,0 +1,40 @@
extension Video {
static var fixture: Video {
let id = "D2sxamzaHkM"
return Video(
id: id,
title: "Relaxing Piano Music",
author: "Fancy Videotuber",
length: 582,
published: "7 years ago",
views: 1024,
channelID: "AbCdEFgHI",
description: "Some relaxing live piano music",
genre: "Music",
thumbnails: Thumbnail.fixturesForAllQualities(videoId: id),
live: false,
upcoming: false
)
}
static var fixtureLiveWithoutPublishedOrViews: Video {
var video = fixture
video.title = "\(video.title) \(video.title) \(video.title) \(video.title) \(video.title)"
video.published = "0 seconds ago"
video.views = 0
video.live = true
return video
}
static var fixtureUpcomingWithoutPublishedOrViews: Video {
var video = fixtureLiveWithoutPublishedOrViews
video.live = false
video.upcoming = true
return video
}
}