IceCubesApp/Packages/Models/Sources/Models/ServerPreferences.swift

39 lines
1.1 KiB
Swift
Raw Normal View History

2023-01-09 18:47:54 +00:00
import Foundation
import SwiftUI
2023-01-09 18:47:54 +00:00
public struct ServerPreferences: Decodable {
public let postVisibility: Visibility?
public let postIsSensitive: Bool?
public let postLanguage: String?
public let autoExpandMedia: AutoExpandMedia?
public let autoExpandSpoilers: Bool?
2023-01-17 10:36:01 +00:00
public enum AutoExpandMedia: String, Decodable, CaseIterable {
2023-01-09 18:47:54 +00:00
case showAll = "show_all"
case hideAll = "hide_all"
case hideSensitive = "default"
2023-01-27 19:36:40 +00:00
public var description: LocalizedStringKey {
switch self {
case .showAll:
return "enum.expand-media.show"
case .hideAll:
return "enum.expand-media.hide"
case .hideSensitive:
return "enum.expand-media.hide-sensitive"
}
}
2023-01-09 18:47:54 +00:00
}
2023-01-17 10:36:01 +00:00
2023-01-09 18:47:54 +00:00
enum CodingKeys: String, CodingKey {
case postVisibility = "posting:default:visibility"
case postIsSensitive = "posting:default:sensitive"
case postLanguage = "posting:default:language"
case autoExpandMedia = "reading:expand:media"
2023-01-09 18:47:54 +00:00
case autoExpandSpoilers = "reading:expand:spoilers"
}
}
extension ServerPreferences: Sendable {}
extension ServerPreferences.AutoExpandMedia: Sendable {}