76 lines
2.6 KiB
Swift
76 lines
2.6 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|