mirror of
https://github.com/yattee/yattee.git
synced 2026-02-20 01:39:46 +00:00
Yattee v2 rewrite
This commit is contained in:
54
Yattee/Models/Sources/UnifiedSource.swift
Normal file
54
Yattee/Models/Sources/UnifiedSource.swift
Normal file
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// UnifiedSource.swift
|
||||
// Yattee
|
||||
//
|
||||
// Unified wrapper for Instance and MediaSource types for display in the Sources settings.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Represents any source type for unified display in the Sources list.
|
||||
enum UnifiedSource: Identifiable, Hashable, Sendable {
|
||||
case remoteServer(Instance)
|
||||
case fileSource(MediaSource)
|
||||
|
||||
// MARK: - Identifiable
|
||||
|
||||
var id: UUID {
|
||||
switch self {
|
||||
case .remoteServer(let instance):
|
||||
return instance.id
|
||||
case .fileSource(let source):
|
||||
return source.id
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Common Properties
|
||||
|
||||
var name: String {
|
||||
switch self {
|
||||
case .remoteServer(let instance):
|
||||
return instance.displayName
|
||||
case .fileSource(let source):
|
||||
return source.name
|
||||
}
|
||||
}
|
||||
|
||||
var isEnabled: Bool {
|
||||
switch self {
|
||||
case .remoteServer(let instance):
|
||||
return instance.isEnabled
|
||||
case .fileSource(let source):
|
||||
return source.isEnabled
|
||||
}
|
||||
}
|
||||
|
||||
var urlDisplayString: String {
|
||||
switch self {
|
||||
case .remoteServer(let instance):
|
||||
return instance.url.host ?? instance.url.absoluteString
|
||||
case .fileSource(let source):
|
||||
return source.urlDisplayString
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user