import Foundation enum VideosApp: String, CaseIterable { enum AppType: String { case local case youTube case peerTube } case local case invidious case piped case peerTube var name: String { switch self { case .peerTube: return "PeerTube" default: return rawValue.capitalized } } var appType: AppType { switch self { case .local: return .local case .invidious: return .youTube case .piped: return .youTube case .peerTube: return .peerTube } } var supportsAccounts: Bool { self != .local } var supportsPopular: Bool { self == .invidious } var supportsSearchFilters: Bool { self == .invidious } var supportsSearchSuggestions: Bool { self != .peerTube } var supportsSubscriptions: Bool { supportsAccounts } var paginatesSubscriptions: Bool { self == .invidious } var supportsTrendingCategories: Bool { self == .invidious } var supportsUserPlaylists: Bool { self != .local } var userPlaylistsEndpointIncludesVideos: Bool { self == .invidious } var userPlaylistsUseChannelPlaylistEndpoint: Bool { self == .piped } var userPlaylistsHaveVisibility: Bool { self == .invidious } var userPlaylistsAreEditable: Bool { self == .invidious } var hasFrontendURL: Bool { self == .piped } var searchUsesIndexedPages: Bool { self == .invidious } var supportsOpeningChannelsByName: Bool { self == .piped } var allowsDisablingVidoesProxying: Bool { self == .invidious || self == .piped } var supportsOpeningVideosByID: Bool { self != .local } }