feat: Store lastLocation in appGroup instead of app user defaults

This commit is contained in:
Andrea Busi
2023-07-14 10:15:33 +02:00
parent 9bd94def0f
commit 8671533e91
3 changed files with 22 additions and 3 deletions
@@ -62,4 +62,5 @@ extension UserDefaults {
// Migrazioni
static let AppMigrationV5_3 = "EQNUserDefaultMigrationV5_3"
static let AppMigrationV5_4 = "EQNUserDefaultMigrationV5_4"
}
@@ -21,6 +21,7 @@ public class EQNUserDefaultsCommand: EQNCommandProtocol {
saveMissingValues()
migrationV5_3()
migrationV5_4()
}
// MARK: - Private
@@ -60,4 +61,21 @@ public class EQNUserDefaultsCommand: EQNCommandProtocol {
UserDefaults.standard.set(true, forKey: UserDefaults.AppMigrationV5_3)
}
private func migrationV5_4() {
let migrationPerformed = UserDefaults.standard.bool(forKey: UserDefaults.AppMigrationV5_4)
if migrationPerformed {
print("[EQNUserDefaultsCommand] Migration v5.4 already performed")
return
}
// migriamo l'ultima posizione negli user defaults condivisi
let userDefaults = UserDefaults.standard
let groupUserDefaults = UserDefaults.appGroup
if let encodedLocation = userDefaults.object(forKey: UserDefaults.UserDataLastLocation) as? Data {
groupUserDefaults?.set(encodedLocation, forKey: UserDefaults.UserDataLastLocation)
}
userDefaults.set(true, forKey: UserDefaults.AppMigrationV5_4)
}
}
@@ -66,7 +66,7 @@ import CoreLocation
@objc
var lastLocation: CLLocation? {
guard let encodedLocation = UserDefaults.standard.object(forKey: UserDefaults.UserDataLastLocation) as? Data else {
guard let encodedLocation = UserDefaults.appGroup?.object(forKey: UserDefaults.UserDataLastLocation) as? Data else {
return nil
}
@@ -79,7 +79,7 @@ import CoreLocation
guard let encodedLocation = try? NSKeyedArchiver.archivedData(withRootObject: location, requiringSecureCoding: false) else {
return
}
UserDefaults.standard.set(encodedLocation, forKey: UserDefaults.UserDataLastLocation)
UserDefaults.appGroup?.set(encodedLocation, forKey: UserDefaults.UserDataLastLocation)
}
// MARK: - Seismic Networks
@@ -102,6 +102,6 @@ import CoreLocation
func removeAllData() {
UserDefaults.standard.removeObject(forKey: UserDefaults.UserDataFirebaseToken)
UserDefaults.standard.removeObject(forKey: UserDefaults.UserDataUserId)
UserDefaults.standard.removeObject(forKey: UserDefaults.UserDataLastLocation)
UserDefaults.appGroup?.removeObject(forKey: UserDefaults.UserDataLastLocation)
}
}