97 lines
3.7 KiB
Swift
97 lines
3.7 KiB
Swift
//
|
|
// EQNSettingSeismicNetworkNotification.swift
|
|
// Earthquake Network
|
|
//
|
|
// Created by Andrea Busi on 06/06/24.
|
|
// Copyright © 2024 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
@objc
|
|
class EQNSettingSeismicNetworkNotification: NSObject {
|
|
|
|
enum FilterType: Int {
|
|
case soloRilevanti
|
|
case condizionati
|
|
|
|
var displayName: String {
|
|
switch self {
|
|
case .soloRilevanti: NSLocalizedString("options_official_type_relevant", comment: "")
|
|
case .condizionati: NSLocalizedString("options_official_type_area", comment: "")
|
|
}
|
|
}
|
|
}
|
|
|
|
@objc(sharedInstance)
|
|
static let shared = EQNSettingSeismicNetworkNotification()
|
|
|
|
@objc var isAbilitato: Bool
|
|
@objc var magnitudoMinima: String
|
|
@objc var distanzaMassima: String
|
|
var filtro: FilterType
|
|
|
|
private static let DefaultMagnitudoMinima = EQNData.DefaultFilterMagnitude.value
|
|
private static let DefaultDistanzaMassima = EQNData.DefaultFilterRadius.value
|
|
private static let DefaultFiltro = FilterType.soloRilevanti
|
|
|
|
// MARK: - Init
|
|
|
|
override init() {
|
|
Self.migrate_v5_8()
|
|
|
|
let defaults = UserDefaults.standard
|
|
self.isAbilitato = defaults.bool(forKey: UserDefaults.NotificheRetiSismicheAbilitato)
|
|
self.magnitudoMinima = defaults.object(forKey: UserDefaults.NotificheRetiSismicheMagnitudoMinima, or: Self.DefaultMagnitudoMinima)
|
|
self.distanzaMassima = defaults.object(forKey: UserDefaults.NotificheRetiSismicheDistanzaMassima, or: Self.DefaultDistanzaMassima)
|
|
self.filtro = defaults.enumObject(forKey: UserDefaults.NotificheRetiSismicheFiltroNotifiche, or: Self.DefaultFiltro)
|
|
}
|
|
|
|
// MARK: - Public
|
|
|
|
func saveUserInfo() {
|
|
let defaults = UserDefaults.standard
|
|
defaults.set(isAbilitato, forKey: UserDefaults.NotificheRetiSismicheAbilitato)
|
|
defaults.set(magnitudoMinima, forKey: UserDefaults.NotificheRetiSismicheMagnitudoMinima)
|
|
defaults.set(distanzaMassima, forKey: UserDefaults.NotificheRetiSismicheDistanzaMassima)
|
|
defaults.set(filtro.rawValue, forKey: UserDefaults.NotificheRetiSismicheFiltroNotifiche)
|
|
}
|
|
|
|
@objc class func saveDefaultValues() {
|
|
shared.isAbilitato = true
|
|
shared.magnitudoMinima = DefaultMagnitudoMinima
|
|
shared.distanzaMassima = DefaultDistanzaMassima
|
|
shared.filtro = DefaultFiltro
|
|
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.SettingsSeismicNetworkNotificationMigrationV5_8)
|
|
if alreadyMigrated {
|
|
return
|
|
}
|
|
|
|
guard let savedDistance = defaults.object(forKey: UserDefaults.NotificheRetiSismicheDistanzaMassima) as? String else {
|
|
defaults.set(true, forKey: UserDefaults.SettingsSeismicNetworkNotificationMigrationV5_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.NotificheRetiSismicheDistanzaMassima)
|
|
defaults.set(true, forKey: UserDefaults.SettingsSeismicNetworkNotificationMigrationV5_8)
|
|
}
|
|
}
|