1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-13 05:40:32 +05:30
yattee/Model/ContentItem.swift
2022-12-05 10:13:19 +01:00

49 lines
1.2 KiB
Swift

import Foundation
struct ContentItem: Identifiable {
enum ContentType: String {
case video, playlist, channel, placeholder
private var sortOrder: Int {
switch self {
case .channel:
return 1
case .playlist:
return 2
default:
return 3
}
}
static func < (lhs: ContentType, rhs: ContentType) -> Bool {
lhs.sortOrder < rhs.sortOrder
}
}
var video: Video!
var playlist: ChannelPlaylist!
var channel: Channel!
var id: String = UUID().uuidString
static func array(of videos: [Video]) -> [ContentItem] {
videos.map { ContentItem(video: $0) }
}
static func array(of playlists: [ChannelPlaylist]) -> [ContentItem] {
playlists.map { ContentItem(playlist: $0) }
}
static func array(of channels: [Channel]) -> [ContentItem] {
channels.map { ContentItem(channel: $0) }
}
static func < (lhs: ContentItem, rhs: ContentItem) -> Bool {
lhs.contentType < rhs.contentType
}
var contentType: ContentType {
video.isNil ? (channel.isNil ? (playlist.isNil ? .placeholder : .playlist) : .channel) : .video
}
}