108 lines
3.0 KiB
Swift
108 lines
3.0 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: - Seismic Networks
|
|
|
|
@objc
|
|
func seismicNetworksSelected() -> [String] {
|
|
if let savedNetworks = UserDefaults.standard.object(forKey: EQNUserDefaultSelectedSeismicNetworks) as? [String] {
|
|
return savedNetworks
|
|
}
|
|
return []
|
|
}
|
|
|
|
func saveSelectedSeismicNetworks(_ networks: [String]) {
|
|
UserDefaults.standard.set(networks, forKey: EQNUserDefaultSelectedSeismicNetworks)
|
|
}
|
|
|
|
// MARK: - Public
|
|
|
|
@objc
|
|
func removeAllData() {
|
|
UserDefaults.standard.removeObject(forKey: EQNUserDefaultUserFirebaseToken)
|
|
UserDefaults.standard.removeObject(forKey: EQNUserDefaultUserId)
|
|
UserDefaults.standard.removeObject(forKey: EQNUserDefaultLastLocation)
|
|
}
|
|
}
|