diff --git a/AltStore/Operations/UpdateKnownSourcesOperation.swift b/AltStore/Operations/UpdateKnownSourcesOperation.swift index 62f98e1e..e553b5f1 100644 --- a/AltStore/Operations/UpdateKnownSourcesOperation.swift +++ b/AltStore/Operations/UpdateKnownSourcesOperation.swift @@ -30,11 +30,26 @@ extension UpdateKnownSourcesOperation class UpdateKnownSourcesOperation: ResultOperation<([KnownSource], [KnownSource])> { + private let session: URLSession + + override init() + { + let configuration = URLSessionConfiguration.default + + if UserDefaults.standard.responseCachingDisabled + { + configuration.requestCachePolicy = .reloadIgnoringLocalCacheData + configuration.urlCache = nil + } + + self.session = URLSession(configuration: configuration) + } + override func main() { super.main() - let dataTask = URLSession.shared.dataTask(with: .sources) { (data, response, error) in + let dataTask = self.session.dataTask(with: .sources) { (data, response, error) in do { if let response = response as? HTTPURLResponse diff --git a/AltStore/Settings/Settings.storyboard b/AltStore/Settings/Settings.storyboard index 19dafc33..127620e1 100644 --- a/AltStore/Settings/Settings.storyboard +++ b/AltStore/Settings/Settings.storyboard @@ -729,15 +729,15 @@ - - + + - + - + + + + + + @@ -894,7 +907,7 @@ - + @@ -912,6 +925,7 @@ + diff --git a/AltStore/Settings/SettingsViewController.swift b/AltStore/Settings/SettingsViewController.swift index 6c418182..a3054acf 100644 --- a/AltStore/Settings/SettingsViewController.swift +++ b/AltStore/Settings/SettingsViewController.swift @@ -74,6 +74,7 @@ extension SettingsViewController case anisetteServers case advancedSettings + case responseCaching } } @@ -96,6 +97,7 @@ final class SettingsViewController: UITableViewController @IBOutlet private var refreshSideJITServer: UILabel! @IBOutlet private var enforceThreeAppLimitSwitch: UISwitch! + @IBOutlet private var disableResponseCachingSwitch: UISwitch! @IBOutlet private var versionLabel: UILabel! @@ -217,6 +219,7 @@ private extension SettingsViewController self.noIdleTimeoutSwitch.isOn = UserDefaults.standard.isIdleTimeoutDisableEnabled self.disableAppLimitSwitch.isOn = UserDefaults.standard.isAppLimitDisabled self.enforceThreeAppLimitSwitch.isOn = !UserDefaults.standard.ignoreActiveAppsLimit + self.disableResponseCachingSwitch.isOn = UserDefaults.standard.responseCachingDisabled if self.isViewLoaded { @@ -400,6 +403,11 @@ private extension SettingsViewController } } + @IBAction func toggleDisableResponseCaching(_ sender: UISwitch) + { + UserDefaults.standard.responseCachingDisabled = sender.isOn + } + @IBAction func addRefreshAppsShortcut() { guard let shortcut = INShortcut(intent: INInteraction.refreshAllApps().intent) else { return } @@ -866,7 +874,7 @@ extension SettingsViewController } else { ELOG("UIApplication.openSettingsURLString invalid") } - case .refreshAttempts, .errorLog: break + case .refreshAttempts, .errorLog, .responseCaching: break } diff --git a/AltStoreCore/Extensions/UserDefaults+AltStore.swift b/AltStoreCore/Extensions/UserDefaults+AltStore.swift index 4308118e..0a4b1f7a 100644 --- a/AltStoreCore/Extensions/UserDefaults+AltStore.swift +++ b/AltStoreCore/Extensions/UserDefaults+AltStore.swift @@ -76,6 +76,7 @@ public extension UserDefaults @NSManaged var isCowExploitSupported: Bool @NSManaged var permissionCheckingDisabled: Bool + @NSManaged var responseCachingDisabled: Bool class func registerDefaults() { @@ -125,5 +126,9 @@ public extension UserDefaults // Disable ignoreActiveAppsLimit if running iOS version that doesn't support MacDirtyCow. UserDefaults.standard.ignoreActiveAppsLimit = false } + + #if !BETA + UserDefaults.standard.responseCachingDisabled = false + #endif } }