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 5fa23e6d..09dd7fa3 100644 --- a/AltStore/Settings/Settings.storyboard +++ b/AltStore/Settings/Settings.storyboard @@ -649,7 +649,7 @@ - + @@ -657,6 +657,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671,6 +707,7 @@ + diff --git a/AltStore/Settings/SettingsViewController.swift b/AltStore/Settings/SettingsViewController.swift index a38103b5..88329e23 100644 --- a/AltStore/Settings/SettingsViewController.swift +++ b/AltStore/Settings/SettingsViewController.swift @@ -53,6 +53,7 @@ extension SettingsViewController { case sendFeedback case refreshAttempts + case responseCaching } } @@ -71,6 +72,7 @@ class SettingsViewController: UITableViewController @IBOutlet private var backgroundRefreshSwitch: UISwitch! @IBOutlet private var enforceThreeAppLimitSwitch: UISwitch! + @IBOutlet private var disableResponseCachingSwitch: UISwitch! @IBOutlet private var versionLabel: UILabel! @@ -159,6 +161,7 @@ private extension SettingsViewController self.backgroundRefreshSwitch.isOn = UserDefaults.standard.isBackgroundRefreshEnabled self.enforceThreeAppLimitSwitch.isOn = !UserDefaults.standard.ignoreActiveAppsLimit + self.disableResponseCachingSwitch.isOn = UserDefaults.standard.responseCachingDisabled if self.isViewLoaded { @@ -331,6 +334,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 } @@ -591,7 +599,7 @@ extension SettingsViewController toastView.show(in: self) } - case .refreshAttempts: break + case .refreshAttempts, .responseCaching: break } case .account, .patreon, .instructions, .macDirtyCow: break diff --git a/AltStoreCore/Extensions/UserDefaults+AltStore.swift b/AltStoreCore/Extensions/UserDefaults+AltStore.swift index 7bda64f6..9b3551f4 100644 --- a/AltStoreCore/Extensions/UserDefaults+AltStore.swift +++ b/AltStoreCore/Extensions/UserDefaults+AltStore.swift @@ -63,6 +63,7 @@ public extension UserDefaults @NSManaged var isCowExploitSupported: Bool @NSManaged var permissionCheckingDisabled: Bool + @NSManaged var responseCachingDisabled: Bool class func registerDefaults() { @@ -107,5 +108,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 } }