125 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Swift
		
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Swift
		
	
	
| //
 | |
| //  UserDefaults.swift
 | |
| //  GuruAnalytics
 | |
| //
 | |
| //  Created by mayue on 2022/11/21.
 | |
| //
 | |
| 
 | |
| import Foundation
 | |
| 
 | |
| internal enum UserDefaults {
 | |
|     
 | |
|     static let defaults = Foundation.UserDefaults(suiteName: "com.guru.guru_analytics_lib")
 | |
|     
 | |
|     static var eventsServerHost: String? {
 | |
|         
 | |
|         get {
 | |
|             return defaults?.value(forKey: eventsServerHostKey) as? String
 | |
|         }
 | |
|         
 | |
|         set {
 | |
|             var host = newValue
 | |
|             let h_sch = "http://"
 | |
|             let hs_sch = "https://"
 | |
|             host?.deletePrefix(h_sch)
 | |
|             host?.deletePrefix(hs_sch)
 | |
|             host?.trimmed(in: .whitespacesAndNewlines.union(.init(charactersIn: "/")))
 | |
|             defaults?.set(host, forKey: eventsServerHostKey)
 | |
|         }
 | |
|         
 | |
|     }
 | |
|     
 | |
|     static var fgAccumulatedDuration: Int64 {
 | |
|         get {
 | |
|             return defaults?.value(forKey: fgDurationKey) as? Int64 ?? 0
 | |
|         }
 | |
|         
 | |
|         set {
 | |
|             defaults?.set(newValue, forKey: fgDurationKey)
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     static var totalEventsCount: Int {
 | |
|         get {
 | |
|             return defaults?.value(forKey: totalEventsCountKey) as? Int ?? 0
 | |
|         }
 | |
|         
 | |
|         set {
 | |
|             defaults?.set(newValue, forKey: totalEventsCountKey)
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     static var deletedEventsCount: Int {
 | |
|         get {
 | |
|             return defaults?.value(forKey: deletedEventsCountKey) as? Int ?? 0
 | |
|         }
 | |
|         
 | |
|         set {
 | |
|             defaults?.set(newValue, forKey: deletedEventsCountKey)
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     static var uploadedEventsCount: Int {
 | |
|         get {
 | |
|             return defaults?.value(forKey: uploadedEventsCountKey) as? Int ?? 0
 | |
|         }
 | |
|         
 | |
|         set {
 | |
|             defaults?.set(newValue, forKey: uploadedEventsCountKey)
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     static var sessionNumber: Entity.SessionNumber {
 | |
|         get {
 | |
|             let jsonString = defaults?.value(forKey: sessionNumberKey) as? String ?? ""
 | |
|             let sessionNumber = JSONDecoder().decodeObject(Entity.SessionNumber.self, from: jsonString)
 | |
|             ?? Entity.SessionNumber.createNumber()
 | |
|             return sessionNumber
 | |
|         }
 | |
|         set {
 | |
|             let jsonString = newValue.asString
 | |
|             defaults?.setValue(jsonString, forKey: sessionNumberKey)
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| extension UserDefaults {
 | |
|     
 | |
|     static var firstOpenTimeKey: String {
 | |
|         return "app.first.open.timestamp"
 | |
|     }
 | |
|     
 | |
|     static var dbVersionKey: String {
 | |
|         return "db.version"
 | |
|     }
 | |
|     
 | |
|     static var hostsMapKey: String {
 | |
|         return "hosts.map"
 | |
|     }
 | |
|     
 | |
|     static var eventsServerHostKey: String {
 | |
|         return "events.server.host"
 | |
|     }
 | |
|     
 | |
|     static var fgDurationKey: String {
 | |
|         return "fg.duration.ms"
 | |
|     }
 | |
|     
 | |
|     static var totalEventsCountKey: String {
 | |
|         return "events.recorded.total.count"
 | |
|     }
 | |
|     
 | |
|     static var deletedEventsCountKey: String {
 | |
|         return "events.deleted.count"
 | |
|     }
 | |
|     
 | |
|     static var uploadedEventsCountKey: String {
 | |
|         return "events.uploaded.count"
 | |
|     }
 | |
|     
 | |
|     static var sessionNumberKey: String {
 | |
|         return "session.number"
 | |
|     }
 | |
|     
 | |
| }
 |