// // LocalData.swift // MastoSearch // // Created by Shadowfacts on 12/15/21. // import Foundation public class LocalData { private init() {} private static let encoder = PropertyListEncoder() private static let decoder = PropertyListDecoder() public static var account: AccountInfo? { get { guard let data = UserDefaults.standard.data(forKey: "account") else { return nil } return try? decoder.decode(AccountInfo.self, from: data) } set { guard let newValue = newValue else { UserDefaults.standard.set(nil, forKey: "account") return } let data = try! encoder.encode(newValue) UserDefaults.standard.set(data, forKey: "account") } } public struct AccountInfo: Codable { public let instanceURL: URL public var clientID: String! public var clientSecret: String! public var accessToken: String! public init(instanceURL: URL, clientID: String? = nil, clientSecret: String? = nil, accessToken: String? = nil) { self.instanceURL = instanceURL self.clientID = clientID self.clientSecret = clientSecret self.accessToken = accessToken } } }