From 2d046181b0218bea7d5f762297f6eeb51136df02 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Fri, 8 Sep 2023 22:45:04 +0200 Subject: [PATCH] Only migrate if current version is higher (#349) --- .../App/Managers/DefaultUpgradeManagerStrategy.swift | 8 ++++---- Passepartout/App/Managers/UpgradeManager.swift | 9 +++++---- Passepartout/App/Managers/UpgradeManagerStrategy.swift | 2 +- Passepartout/App/Views/OrganizerView+Profiles.swift | 5 ++++- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Passepartout/App/Managers/DefaultUpgradeManagerStrategy.swift b/Passepartout/App/Managers/DefaultUpgradeManagerStrategy.swift index 57753f01..9646649a 100644 --- a/Passepartout/App/Managers/DefaultUpgradeManagerStrategy.swift +++ b/Passepartout/App/Managers/DefaultUpgradeManagerStrategy.swift @@ -30,11 +30,11 @@ public final class DefaultUpgradeManagerStrategy: UpgradeManagerStrategy { public init() { } - public func doMigrateStore(_ store: KeyValueStore, lastVersion: String?) { - if let lastVersion { - pp_log.debug("Upgrade from \(lastVersion)") - } else { + public func doMigrate(store: KeyValueStore, lastVersion: String?) { + guard let lastVersion else { pp_log.debug("Fresh install") + return } + pp_log.debug("Upgrade from \(lastVersion)") } } diff --git a/Passepartout/App/Managers/UpgradeManager.swift b/Passepartout/App/Managers/UpgradeManager.swift index 372f3ca7..3983608d 100644 --- a/Passepartout/App/Managers/UpgradeManager.swift +++ b/Passepartout/App/Managers/UpgradeManager.swift @@ -47,10 +47,11 @@ public final class UpgradeManager: ObservableObject { self.strategy = strategy } - public func doMigrations(_ profileManager: ProfileManager) { - strategy.doMigrateStore(store, lastVersion: lastVersion) - lastVersion = Constants.Global.appVersionNumber - + public func doMigrations(toVersion currentVersion: String, profileManager: ProfileManager) { + if let lastVersion, currentVersion > lastVersion { + strategy.doMigrate(store: store, lastVersion: lastVersion) + } + lastVersion = currentVersion isDoingMigrations = false } } diff --git a/Passepartout/App/Managers/UpgradeManagerStrategy.swift b/Passepartout/App/Managers/UpgradeManagerStrategy.swift index e8a8545e..a55caa97 100644 --- a/Passepartout/App/Managers/UpgradeManagerStrategy.swift +++ b/Passepartout/App/Managers/UpgradeManagerStrategy.swift @@ -27,5 +27,5 @@ import Foundation import PassepartoutCore public protocol UpgradeManagerStrategy { - func doMigrateStore(_ store: KeyValueStore, lastVersion: String?) + func doMigrate(store: KeyValueStore, lastVersion: String?) } diff --git a/Passepartout/App/Views/OrganizerView+Profiles.swift b/Passepartout/App/Views/OrganizerView+Profiles.swift index f66e84b0..be899269 100644 --- a/Passepartout/App/Views/OrganizerView+Profiles.swift +++ b/Passepartout/App/Views/OrganizerView+Profiles.swift @@ -183,7 +183,10 @@ private extension OrganizerView.ProfilesList { func performMigrationsIfNeeded() { Task { @MainActor in - UpgradeManager.shared.doMigrations(profileManager) + UpgradeManager.shared.doMigrations( + toVersion: Constants.Global.appVersionNumber, + profileManager: profileManager + ) } } }