Files
eqn.ios/Sources/Earthquake Network/Models/EQNUserData.swift
T
2022-11-11 15:15:47 +01:00

94 lines
2.6 KiB
Swift

//
// EQNUserData.swift
// Earthquake Network
//
// Created by Andrea Busi on 04/11/22.
// Copyright © 2022 Earthquake Network. All rights reserved.
//
import Foundation
import CoreLocation
@objc class EQNUserData: NSObject {
@objc(sharedData) static let shared = EQNUserData()
// MARK: - Public
@objc
var isFirstStart: Bool {
firebaseToken == nil
}
// MARK: - Firebase Token
@objc
var firebaseToken: String? {
UserDefaults.standard.object(forKey: EQNUserDefaultUserFirebaseToken) as? String
}
@objc
func saveFirebaseToken(_ token: String?) {
if let token = token {
UserDefaults.standard.set(token, forKey: EQNUserDefaultUserFirebaseToken)
} else {
UserDefaults.standard.removeObject(forKey: EQNUserDefaultUserFirebaseToken)
}
}
// MARK: - User id
@objc
var userId: String? {
let userId = UserDefaults.standard.object(forKey: EQNUserDefaultUserId)
// nel corso delle versioni l'id è stato salvato in diversi modi
// per evitare problemi, cerchiamo di convertirlo in modi diveri
if let userId = userId as? String {
return userId
} else if let userId = userId as? Int {
return "\(userId)"
} else if let userId = userId as? NSNumber {
return userId.stringValue
}
return nil
}
@objc
func saveUserId(_ userId: String) {
UserDefaults.standard.set(userId, forKey: EQNUserDefaultUserId)
}
// MARK: - Last location
@objc
var lastLocation: CLLocation? {
guard let encodedLocation = UserDefaults.standard.object(forKey: EQNUserDefaultLastLocation) as? Data else {
return nil
}
let location = try? NSKeyedUnarchiver.unarchivedObject(ofClass: CLLocation.self, from: encodedLocation)
return location
}
@objc
func saveLastLocation(_ location: CLLocation) {
guard let encodedLocation = try? NSKeyedArchiver.archivedData(withRootObject: location, requiringSecureCoding: false) else {
return
}
UserDefaults.standard.set(encodedLocation, forKey: EQNUserDefaultLastLocation)
}
// MARK: - Public
@objc
func removeAllData() {
UserDefaults.standard.removeObject(forKey: EQNUserDefaultUserFirebaseToken)
UserDefaults.standard.removeObject(forKey: EQNUserDefaultUserId)
UserDefaults.standard.removeObject(forKey: EQNUserDefaultLastLocation)
}
}