vds_ios/VDS/Components/Tilelet/TileletIconModels.swift
Matt Bruce cb9ca6236b migrated codable to extension
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-01-25 09:54:18 -06:00

60 lines
1.8 KiB
Swift

//
// TiletDescriptiveIconModel.swift
// VDS
//
// Created by Matt Bruce on 1/11/23.
//
import Foundation
import UIKit
extension Tilelet {
public struct DescriptiveIcon {
public var name: Icon.Name = .multipleDocuments
public var size: Icon.Size = .medium
public var surface: Surface = .dark
public init(name: Icon.Name = .multipleDocuments, size: Icon.Size, surface: Surface) {
self.name = name
self.size = size
self.surface = surface
}
}
public struct DirectionalIcon {
public var size: Icon.Size = .medium
public var surface: Surface = .dark
public init(size: Icon.Size, surface: Surface) {
self.size = size
self.surface = surface
}
}
}
extension Tilelet.DescriptiveIcon: Codable {
private enum CodingKeys: String, CodingKey {
case name, size, surface
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.name = try container.decodeIfPresent(Icon.Name.self, forKey: .name) ?? .multipleDocuments
self.size = try container.decodeIfPresent(Icon.Size.self, forKey: .size) ?? .medium
self.surface = try container.decodeIfPresent(Surface.self, forKey: .surface) ?? .dark
}
}
extension Tilelet.DirectionalIcon: Codable {
private enum CodingKeys: String, CodingKey {
case size, surface
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.size = try container.decodeIfPresent(Icon.Size.self, forKey: .size) ?? .medium
self.surface = try container.decodeIfPresent(Surface.self, forKey: .surface) ?? .dark
}
}