2021-10-21 00:21:50 +02:00
|
|
|
import Foundation
|
|
|
|
|
|
|
|
enum VideosApp: String, CaseIterable {
|
2022-12-11 16:00:20 +01:00
|
|
|
enum AppType: String {
|
|
|
|
case local
|
|
|
|
case youTube
|
|
|
|
case peerTube
|
|
|
|
}
|
|
|
|
|
2022-12-09 01:15:19 +01:00
|
|
|
case local
|
|
|
|
case invidious
|
|
|
|
case piped
|
|
|
|
case peerTube
|
2021-10-21 00:21:50 +02:00
|
|
|
|
|
|
|
var name: String {
|
2022-12-11 23:15:56 +01:00
|
|
|
switch self {
|
|
|
|
case .peerTube:
|
|
|
|
return "PeerTube"
|
|
|
|
default:
|
|
|
|
return rawValue.capitalized
|
|
|
|
}
|
2021-10-21 00:21:50 +02:00
|
|
|
}
|
|
|
|
|
2022-12-11 16:00:20 +01:00
|
|
|
var appType: AppType {
|
|
|
|
switch self {
|
|
|
|
case .local:
|
|
|
|
return .local
|
|
|
|
case .invidious:
|
|
|
|
return .youTube
|
|
|
|
case .piped:
|
|
|
|
return .youTube
|
|
|
|
case .peerTube:
|
|
|
|
return .peerTube
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-21 00:21:50 +02:00
|
|
|
var supportsAccounts: Bool {
|
2022-12-09 01:15:19 +01:00
|
|
|
self != .local
|
2021-11-15 00:06:01 +01:00
|
|
|
}
|
|
|
|
|
2021-10-21 00:21:50 +02:00
|
|
|
var supportsPopular: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
|
|
|
var supportsSearchFilters: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
2022-12-09 01:15:19 +01:00
|
|
|
var supportsSearchSuggestions: Bool {
|
|
|
|
self != .peerTube
|
|
|
|
}
|
|
|
|
|
2021-10-21 00:21:50 +02:00
|
|
|
var supportsSubscriptions: Bool {
|
|
|
|
supportsAccounts
|
|
|
|
}
|
|
|
|
|
2022-12-10 03:01:59 +01:00
|
|
|
var paginatesSubscriptions: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
2021-10-21 00:21:50 +02:00
|
|
|
var supportsTrendingCategories: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
|
|
|
var supportsUserPlaylists: Bool {
|
2022-12-09 01:15:19 +01:00
|
|
|
self != .local
|
2022-04-10 17:07:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
var userPlaylistsEndpointIncludesVideos: Bool {
|
2021-10-21 00:21:50 +02:00
|
|
|
self == .invidious
|
|
|
|
}
|
2021-10-27 23:11:38 +02:00
|
|
|
|
2022-08-21 16:05:26 +02:00
|
|
|
var userPlaylistsUseChannelPlaylistEndpoint: Bool {
|
|
|
|
self == .piped
|
|
|
|
}
|
|
|
|
|
2022-05-22 00:29:51 +02:00
|
|
|
var userPlaylistsHaveVisibility: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
|
|
|
var userPlaylistsAreEditable: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
|
|
|
|
2021-10-27 23:11:38 +02:00
|
|
|
var hasFrontendURL: Bool {
|
|
|
|
self == .piped
|
|
|
|
}
|
2021-12-04 20:35:41 +01:00
|
|
|
|
2022-01-05 00:18:01 +01:00
|
|
|
var searchUsesIndexedPages: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
2022-06-25 00:48:57 +02:00
|
|
|
|
|
|
|
var supportsOpeningChannelsByName: Bool {
|
|
|
|
self == .piped
|
|
|
|
}
|
2022-07-21 23:52:09 +02:00
|
|
|
|
|
|
|
var allowsDisablingVidoesProxying: Bool {
|
|
|
|
self == .invidious
|
|
|
|
}
|
2022-11-10 18:11:28 +01:00
|
|
|
|
|
|
|
var supportsOpeningVideosByID: Bool {
|
2022-12-09 01:15:19 +01:00
|
|
|
self != .local
|
2022-11-10 18:11:28 +01:00
|
|
|
}
|
2021-10-21 00:21:50 +02:00
|
|
|
}
|