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
}
}