metatext-app-ios-iphone-ipad/Mastodon/Sources/Mastodon/Entities/Timeline.swift

48 lines
1.0 KiB
Swift
Raw Normal View History

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
}
}
}