From 5927ac3c7c62ac885c21d503ba94209c80b7e908 Mon Sep 17 00:00:00 2001 From: Alex Burgel Date: Sun, 18 Sep 2022 16:56:42 -0400 Subject: [PATCH] Ignore skipped versions when using AlertType.force fixes #402 --- Sources/Siren.swift | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Sources/Siren.swift b/Sources/Siren.swift index 1f1b7cf..d336b86 100644 --- a/Sources/Siren.swift +++ b/Sources/Siren.swift @@ -205,23 +205,25 @@ private extension Siren { /// - currentAppStoreVersion: The curren version of the app in the App Store. /// - model: The iTunes Lookup Model. func determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion currentAppStoreVersion: String, andModel model: Model) { - // Did the user: - // - request to skip being prompted with version update alerts for a specific version - // - and is the latest App Store update the same version that was requested? - if let previouslySkippedVersion = UserDefaults.storedSkippedVersion, - let currentInstalledVersion = currentInstalledVersion, - !currentAppStoreVersion.isEmpty, - currentAppStoreVersion == previouslySkippedVersion { - resultsHandler?(.failure(.skipVersionUpdate(installedVersion: currentInstalledVersion, - appStoreVersion: currentAppStoreVersion))) - return - } - let updateType = DataParser.parseForUpdate(forInstalledVersion: currentInstalledVersion, andAppStoreVersion: currentAppStoreVersion) do { let rules = try rulesManager.loadRulesForUpdateType(updateType) + // Did the user: + // - request to skip being prompted with version update alerts for a specific version + // - and is the latest App Store update the same version that was requested + // - and app is not forcing updates? + if let previouslySkippedVersion = UserDefaults.storedSkippedVersion, + let currentInstalledVersion = currentInstalledVersion, + !currentAppStoreVersion.isEmpty, + currentAppStoreVersion == previouslySkippedVersion, + rules.alertType != .force { + resultsHandler?(.failure(.skipVersionUpdate(installedVersion: currentInstalledVersion, + appStoreVersion: currentAppStoreVersion))) + return + } + if rules.frequency == .immediately { presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType) } else {