123 lines
4.5 KiB
Swift
123 lines
4.5 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")
|
|
|
|
migrationV5_8()
|
|
migrationFirstAppStat()
|
|
migrationCriticalAlerts()
|
|
migrationV5_9()
|
|
}
|
|
|
|
// MARK: - Private
|
|
|
|
private func migrationV5_8() {
|
|
let migrationPerformed = UserDefaults.standard.bool(forKey: UserDefaults.AppMigrationV5_8)
|
|
if migrationPerformed {
|
|
print("[EQNUserDefaultsCommand] Migration v5.8 already performed")
|
|
return
|
|
}
|
|
|
|
// delete old notification settings
|
|
let userDefaults = UserDefaults.standard
|
|
[
|
|
"NOTIFICHE_ATTIVA_RETI_SISMICHE_VICINE", "NOTIFICHE_ATTIVA_RETI_TERREMOTI_FORTI",
|
|
"NOTIFICHE_ATTIVA_RETI_ENERGIA_FORTI", "NOTIFICHE_ATTIVA_RETI_LISTA_ENTI"
|
|
].forEach { key in
|
|
userDefaults.removeObject(forKey: key)
|
|
}
|
|
|
|
// delete old filter values
|
|
[
|
|
"EQN_ETA_MASSIMA", "EQN_SISMI_FORTI_ABILITATI", "EQN_SISMI_FORTI",
|
|
"EQN_SISMI_QUALSIASI_MAGNITUDO", "EQN_SISMI_MODIFICA_IMPOSTAZIONI"
|
|
].forEach { key in
|
|
userDefaults.removeObject(forKey: key)
|
|
}
|
|
|
|
// delete old "real time alert" settings
|
|
[
|
|
"NOTIFICHE_ALLERA_SISMICA_IMPOSTA_VOLUME", "NOTIFICHE_ALLERA_SISMICA_TESTA_ALLARME",
|
|
"NOTIFICHE_ALLERA_SISMICA_ABILITA_INTERVALLO", "NOTIFICHE_ALLERA_SISMICA_ORA_INIZIO",
|
|
"NOTIFICHE_ALLERA_SISMICA_ORA_INIZIO"
|
|
].forEach { key in
|
|
userDefaults.removeObject(forKey: key)
|
|
}
|
|
|
|
userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_8)
|
|
}
|
|
|
|
private func migrationFirstAppStat() {
|
|
// before v5.8.2, first app start was defined using Firebase Token
|
|
let userDefaults = UserDefaults.standard
|
|
let firstAppStartExecuted = userDefaults.bool(forKey: UserDefaults.FirstAppStartExecuted)
|
|
if firstAppStartExecuted {
|
|
print("[EQNUserDefaultsCommand] First app start already executed")
|
|
return
|
|
}
|
|
|
|
let firebaseToken = userDefaults.object(forKey: UserDefaults.UserDataFirebaseToken) as? String
|
|
if firebaseToken != nil {
|
|
print("[EQNUserDefaultsCommand] First app start migrated")
|
|
userDefaults.set(true, forKey: UserDefaults.FirstAppStartExecuted)
|
|
}
|
|
}
|
|
|
|
private func migrationCriticalAlerts() {
|
|
let userDefaults = UserDefaults.standard
|
|
let migrationPerformed = userDefaults.bool(forKey: UserDefaults.AppMigrationV5_8_2)
|
|
if migrationPerformed {
|
|
print("[EQNUserDefaultsCommand] Migration v5.8.2 already performed")
|
|
return
|
|
}
|
|
|
|
UNUserNotificationCenter.current().getNotificationSettings { settings in
|
|
if settings.criticalAlertSetting != .enabled {
|
|
print("[EQNUserDefaultsCommand] Critical alerts not enabled, disable settings")
|
|
EQNSettingRealTimeAlert.shared.isCriticalAlertsEnabled = false
|
|
EQNSettingRealTimeAlert.shared.saveUserInfo()
|
|
} else {
|
|
print("[EQNUserDefaultsCommand] Critical alerts enabled, do nothing")
|
|
}
|
|
}
|
|
|
|
userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_8_2)
|
|
}
|
|
|
|
private func migrationV5_9() {
|
|
let userDefaults = UserDefaults.standard
|
|
let migrationPerformed = userDefaults.bool(forKey: UserDefaults.AppMigrationV5_9)
|
|
if migrationPerformed {
|
|
print("[EQNUserDefaultsCommand] Migration v5.9 already performed")
|
|
return
|
|
}
|
|
|
|
// add new intensity map
|
|
var informations = AppPreferences.shared.seismicNetworksInformations
|
|
if !informations.contains(.intensityMap) {
|
|
informations.append(.intensityMap)
|
|
print("[EQNUserDefaultsCommand] Add intensityMap to seismic informations")
|
|
}
|
|
AppPreferences.shared.seismicNetworksInformations = informations
|
|
|
|
let cardDisplayType: SeismicNetworksViewController.CardDisplayType = informations.contains(.buttons) ? .full : .small
|
|
AppPreferences.shared.seismicNetworksCardStyle = cardDisplayType
|
|
|
|
userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_9)
|
|
}
|
|
}
|