82 lines
3.0 KiB
Swift
82 lines
3.0 KiB
Swift
//
|
|
// EQNUserDefaultsCommand.swift
|
|
// Earthquake Network
|
|
//
|
|
// Created by Busi Andrea on 26/09/2020.
|
|
// Copyright © 2020 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreLocation
|
|
|
|
|
|
public class EQNUserDefaultsCommand: EQNCommandProtocol {
|
|
|
|
// MARK: - Public
|
|
|
|
func execute() {
|
|
print("EQNUserDefaultsCommand: start execute")
|
|
|
|
applyDefaultSettings()
|
|
saveMissingValues()
|
|
|
|
migrationV5_3()
|
|
migrationV5_4()
|
|
}
|
|
|
|
// MARK: - Private
|
|
|
|
private func applyDefaultSettings() {
|
|
|
|
// seismic card settings
|
|
if UserDefaults.standard.array(forKey: EQNUserDefaultKeySesmicInformations) == nil {
|
|
let informations: [SeismicNetworkTableViewCell.InformationType] = [.buttons, .distance, .coordinate, .population]
|
|
UserDefaults.standard.set(informations.map { $0.rawValue }, forKey: EQNUserDefaultKeySesmicInformations)
|
|
}
|
|
}
|
|
|
|
private func saveMissingValues() {
|
|
// `raggio sismi forti` was not saved before v2.3
|
|
if UserDefaults.standard.object(forKey: UserDefaults.AllertaSismicaRaggioSismiForti) == nil {
|
|
UserDefaults.standard.set("600", forKey: UserDefaults.AllertaSismicaRaggioSismiForti)
|
|
}
|
|
}
|
|
|
|
private func migrationV5_3() {
|
|
let migrationPerformed = UserDefaults.standard.bool(forKey: UserDefaults.AppMigrationV5_3)
|
|
if migrationPerformed {
|
|
print("[EQNUserDefaultsCommand] Migration v5.3 already performed")
|
|
return
|
|
}
|
|
|
|
// l'ultima posizione era salvata come array, la trasformiamo in valore singolo
|
|
let lastLocations = EQNUtility.loadArray(of: CLLocation.self, fromUserDefaultsForKey: UserDefaults.UserDataLastLocation) as? [CLLocation]
|
|
if let lastLocation = lastLocations?.last {
|
|
UserDefaults.standard.removeObject(forKey: UserDefaults.UserDataLastLocation)
|
|
EQNUserData.shared.saveLastLocation(lastLocation)
|
|
}
|
|
|
|
// resettiamo il Firebase token in modo da ri-eseguire la procedura di registrazione corretta
|
|
EQNUserData.shared.saveFirebaseToken(nil)
|
|
|
|
UserDefaults.standard.set(true, forKey: UserDefaults.AppMigrationV5_3)
|
|
}
|
|
|
|
private func migrationV5_4() {
|
|
let migrationPerformed = UserDefaults.standard.bool(forKey: UserDefaults.AppMigrationV5_4)
|
|
if migrationPerformed {
|
|
print("[EQNUserDefaultsCommand] Migration v5.4 already performed")
|
|
return
|
|
}
|
|
|
|
// migriamo l'ultima posizione negli user defaults condivisi
|
|
let userDefaults = UserDefaults.standard
|
|
let groupUserDefaults = UserDefaults.appGroup
|
|
if let encodedLocation = userDefaults.object(forKey: UserDefaults.UserDataLastLocation) as? Data {
|
|
groupUserDefaults?.set(encodedLocation, forKey: UserDefaults.UserDataLastLocation)
|
|
}
|
|
|
|
userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_4)
|
|
}
|
|
}
|