// // Visibility.swift // Pachyderm // // Created by Shadowfacts on 3/7/23. // import Foundation public enum Visibility: String, Sendable, Codable, CaseIterable, Comparable { case `public` case unlisted case `private` case direct public static func < (lhs: Visibility, rhs: Visibility) -> Bool { switch (lhs, rhs) { case (.direct, .public), (.private, .public), (.unlisted, .public): return true case (.direct, .unlisted), (.private, .unlisted): return true case (.direct, .private): return true default: return false } } } public extension Visibility { var displayName: String { switch self { case .public: return "Public" case .unlisted: return "Unlisted" case .private: return "Private" case .direct: return "Direct" } } var subtitle: String { switch self { case .public: return "Everyone" case .unlisted: return "Hidden from public timelines" case .private: return "Followers only" case .direct: return "Mentioned users only" } } var imageName: String { switch self { case .public: return "globe" case .unlisted: return "lock.open.fill" case .private: return "lock.fill" case .direct: return "envelope.fill" } } var unfilledImageName: String { switch self { case .public: return "globe" case .unlisted: return "lock.open" case .private: return "lock" case .direct: return "envelope" } } }