vds_ios/VDS/Components/Tilet/TiletTitleModel.swift
Matt Bruce 09c0a567e1 added default values in the decoder func
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-01-17 10:01:01 -06:00

59 lines
2.2 KiB
Swift

//
// TiletTitleModel.swift
// VDS
//
// Created by Matt Bruce on 1/6/23.
//
import Foundation
extension Tilet {
public struct TitleModel: Codable {
//--------------------------------------------------
// MARK: - Enums
//--------------------------------------------------
public enum TextStyle: String, EnumSubset, Codable {
case titleXLarge
case boldTitleXLarge
case titleLarge
case boldTitleLarge
case titleMedium
case boldTitleMedium
case titleSmall
case boldTitleSmall
public var defaultValue: TitleLockup.TitleTextStyle { .boldTitleSmall }
}
//--------------------------------------------------
// MARK: - Public Properties
//--------------------------------------------------
public var text: String = ""
public var textStyle: TextStyle = .boldTitleSmall
//--------------------------------------------------
// MARK: - Initializers
//--------------------------------------------------
public init(text: String,
textStyle: TextStyle = .boldTitleSmall) {
self.text = text
self.textStyle = textStyle
}
//--------------------------------------------------
// MARK: - Public Functions
//--------------------------------------------------
public func toTitleLockupTitleModel() -> TitleLockup.TitleModel {
TitleLockup.TitleModel(text: text,
textAttributes: nil,
textStyle: textStyle.value)
}
public init(from decoder: Decoder) throws {
let container: KeyedDecodingContainer<Tilet.TitleModel.CodingKeys> = try decoder.container(keyedBy: Tilet.TitleModel.CodingKeys.self)
self.text = try container.decode(String.self, forKey: Tilet.TitleModel.CodingKeys.text)
self.textStyle = try container.decodeIfPresent(Tilet.TitleModel.TextStyle.self, forKey: Tilet.TitleModel.CodingKeys.textStyle) ?? .boldTitleSmall
}
}
}