// // ExtradataCodable.swift // PrivadoVPN // // Created by Lizaveta Malinouskaya on 1.11.21. // Copyright © 2021 Privado LLC. All rights reserved. // import Foundation enum CTAScreenType: Encodable, CustomStringConvertible { case main case preferences case serversList case createAccount case messages case menu case trafficProgress case overlay var description: String { switch self { case .main: return "main" case .preferences: return "preferences" case .serversList: return "serversList" case .createAccount: return "createAccount" case .messages: return "messages" case .menu: return "menu" case .trafficProgress: return "trafficProgress" case .overlay: return "overlay" } } } enum ProtocolsDescription: CustomStringConvertible { case wireguard case ikev case openvpn case automatic var description: String { switch self { case .automatic: return "AUTOMATIC" case .ikev: return "IKEV2" case .openvpn: return "OPENVPN" case .wireguard: return "WIREGUARD" } } } struct Location: Codable { let city: String let country: String } // swiftlint:disable identifier_name struct CTAClick: Encodable { let screen_id: String /// set screen_id value with CTAScreenType.type.description public init(screenType: CTAScreenType) { self.screen_id = screenType.description } } // swiftlint:enable identifier_name struct SaveSettingsModel: Encodable, Equatable { let killswitch: Bool let autoconnect: Bool let autoconnectvalue: String let crashreporting: Bool let proto: String static public func == (lhs: SaveSettingsModel, rhs: SaveSettingsModel) -> Bool { if lhs.killswitch == rhs.killswitch && lhs.autoconnect == rhs.autoconnect && lhs.crashreporting == rhs.crashreporting && lhs.proto == rhs.proto && lhs.autoconnectvalue == rhs.autoconnectvalue { return true } return false } } extension Encodable { var jsonString: String { var str = "" do { try str = String(decoding: JSONEncoder().encode(self), as: UTF8.self) if self is SaveSettingsModel { try str = str.replace("proto", replacement: "protocol") } } catch let parseError { print(parseError) } return str } }