// // 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() migrationV5_10() } // 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) } private func migrationV5_10() { let userDefaults = UserDefaults.standard let migrationPerformed = userDefaults.bool(forKey: UserDefaults.AppMigrationV5_10) if migrationPerformed { print("[EQNUserDefaultsCommand] Migration v5.10 already performed") return } print("[EQNUserDefaultsCommand] Save default value for mildQuakeSoundDisabled") EQNSettingRealTimeAlert.shared.isMildQuakeSoundDisabled = true EQNSettingRealTimeAlert.shared.saveUserInfo() userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_10) } }