2020-08-18 07:13:37 +02:00
|
|
|
// Copyright © 2020 Metabolist. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
2020-08-31 01:33:11 +02:00
|
|
|
public enum Timeline: Hashable {
|
2020-08-18 07:13:37 +02:00
|
|
|
case home
|
|
|
|
case local
|
|
|
|
case federated
|
|
|
|
case list(MastodonList)
|
2020-08-30 21:50:34 +02:00
|
|
|
case tag(String)
|
2020-08-18 07:13:37 +02:00
|
|
|
}
|
|
|
|
|
2020-08-31 01:33:11 +02:00
|
|
|
public extension Timeline {
|
2020-08-29 05:50:58 +02:00
|
|
|
static let nonLists: [Timeline] = [.home, .local, .federated]
|
|
|
|
|
|
|
|
var endpoint: TimelinesEndpoint {
|
2020-08-18 07:13:37 +02:00
|
|
|
switch self {
|
|
|
|
case .home:
|
2020-08-29 05:50:58 +02:00
|
|
|
return .home
|
2020-08-18 07:13:37 +02:00
|
|
|
case .local:
|
2020-08-29 05:50:58 +02:00
|
|
|
return .public(local: true)
|
2020-08-18 07:13:37 +02:00
|
|
|
case .federated:
|
2020-08-29 05:50:58 +02:00
|
|
|
return .public(local: false)
|
2020-08-18 07:13:37 +02:00
|
|
|
case let .list(list):
|
2020-08-29 05:50:58 +02:00
|
|
|
return .list(id: list.id)
|
2020-08-30 21:50:34 +02:00
|
|
|
case let .tag(tag):
|
|
|
|
return .tag(tag)
|
2020-08-18 07:13:37 +02:00
|
|
|
}
|
|
|
|
}
|
2020-08-29 05:50:58 +02:00
|
|
|
}
|
2020-08-18 07:13:37 +02:00
|
|
|
|
2020-08-29 05:50:58 +02:00
|
|
|
extension Timeline: Identifiable {
|
2020-08-31 01:33:11 +02:00
|
|
|
public var id: String {
|
2020-08-18 07:13:37 +02:00
|
|
|
switch self {
|
|
|
|
case .home:
|
2020-08-29 05:50:58 +02:00
|
|
|
return "home"
|
2020-08-18 07:13:37 +02:00
|
|
|
case .local:
|
2020-08-29 05:50:58 +02:00
|
|
|
return "local"
|
2020-08-18 07:13:37 +02:00
|
|
|
case .federated:
|
2020-08-29 05:50:58 +02:00
|
|
|
return "federated"
|
2020-08-18 07:13:37 +02:00
|
|
|
case let .list(list):
|
2020-08-29 05:50:58 +02:00
|
|
|
return list.id
|
2020-08-30 21:50:34 +02:00
|
|
|
case let .tag(tag):
|
|
|
|
return "#" + tag
|
2020-08-18 07:13:37 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|