// // EQNSettingUserReportNotification.swift // Earthquake Network // // Created by Andrea Busi on 10/06/24. // Copyright © 2024 Earthquake Network. All rights reserved. // import Foundation @objc class EQNSettingUserReportNotification: NSObject { @objc(sharedInstance) static let shared = EQNSettingUserReportNotification() @objc var isAbilitato: Bool @objc var distanzaMassima: String private static let DefaultDistanzaMassima = EQNData.DefaultSettingUserReportNotificationRadius.value // MARK: - Init override init() { Self.migrate_v5_8() let defaults = UserDefaults.standard self.isAbilitato = defaults.bool(forKey: UserDefaults.NotificheSegnalazioniUtenteAbilitato) self.distanzaMassima = defaults.object(forKey: UserDefaults.NotificheSegnalazioniUtenteDistanzaPosizione, or: Self.DefaultDistanzaMassima) } // MARK: - Public func saveUserInfo() { let defaults = UserDefaults.standard defaults.set(isAbilitato, forKey: UserDefaults.NotificheSegnalazioniUtenteAbilitato) defaults.set(distanzaMassima, forKey: UserDefaults.NotificheSegnalazioniUtenteDistanzaPosizione) } @objc class func saveDefaultValues() { shared.isAbilitato = true shared.distanzaMassima = DefaultDistanzaMassima shared.saveUserInfo() } // MARK: - Private private class func migrate_v5_8() { // migriamo i valori della distanza massima che sono diminuti nella v5.8 // In precedenzai valori ammessi erano: 50, 100, 200, 300, 400, 500, 600, 800, 1000, 2000, 4000, qualsiasi distanza // ora invece sono solamente 100, 250, 500, 1000 let defaults = UserDefaults.standard let alreadyMigrated = defaults.bool(forKey: UserDefaults.SettingsUserReportNotificationMigrationV5_8) if alreadyMigrated { return } guard let savedDistance = defaults.object(forKey: UserDefaults.NotificheSegnalazioniUtenteDistanzaPosizione) as? String else { defaults.set(true, forKey: UserDefaults.SettingsUserReportNotificationMigrationV5_8) return } let maxDistance = switch savedDistance { case "50", "100": "100" case "200", "300": "250" case "400", "500", "600": "500" default: // 800, 1000, 2000, 4000, qualsiasi distanza "1000" } defaults.set(maxDistance, forKey: UserDefaults.NotificheSegnalazioniUtenteDistanzaPosizione) defaults.set(true, forKey: UserDefaults.SettingsUserReportNotificationMigrationV5_8) } }