Unify the cache deletion code between iOS and Mac now that the Mac uses the caches directory.
This commit is contained in:
parent
f34f803995
commit
62d7fe34f1
@ -163,6 +163,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CacheCleaner.purgeIfNecessary()
|
||||||
|
|
||||||
// Try to establish a cache in the Caches folder, but if it fails for some reason fall back to a temporary dir
|
// Try to establish a cache in the Caches folder, but if it fails for some reason fall back to a temporary dir
|
||||||
let cacheFolder: String
|
let cacheFolder: String
|
||||||
if let userCacheFolder = try? FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false).path {
|
if let userCacheFolder = try? FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false).path {
|
||||||
@ -173,16 +175,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
|
|||||||
cacheFolder = (NSTemporaryDirectory() as NSString).appendingPathComponent(bundleIdentifier)
|
cacheFolder = (NSTemporaryDirectory() as NSString).appendingPathComponent(bundleIdentifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the image disk cache hasn't been flushed for 3 days and the network is available, delete it
|
|
||||||
if let flushDate = AppDefaults.lastImageCacheFlushDate, flushDate.addingTimeInterval(3600*24*3) < Date() {
|
|
||||||
if let reachability = try? Reachability(hostname: "apple.com") {
|
|
||||||
if reachability.connection != .unavailable {
|
|
||||||
try? FileManager.default.removeItem(atPath: cacheFolder)
|
|
||||||
AppDefaults.lastImageCacheFlushDate = Date()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let faviconsFolder = (cacheFolder as NSString).appendingPathComponent("Favicons")
|
let faviconsFolder = (cacheFolder as NSString).appendingPathComponent("Favicons")
|
||||||
let faviconsFolderURL = URL(fileURLWithPath: faviconsFolder)
|
let faviconsFolderURL = URL(fileURLWithPath: faviconsFolder)
|
||||||
try! FileManager.default.createDirectory(at: faviconsFolderURL, withIntermediateDirectories: true, attributes: nil)
|
try! FileManager.default.createDirectory(at: faviconsFolderURL, withIntermediateDirectories: true, attributes: nil)
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
49F40DF82335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
|
49F40DF82335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
|
||||||
49F40DF92335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
|
49F40DF92335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
|
||||||
|
5108F6B62375E612001ABC45 /* CacheCleaner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5108F6B52375E612001ABC45 /* CacheCleaner.swift */; };
|
||||||
|
5108F6B72375E612001ABC45 /* CacheCleaner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5108F6B52375E612001ABC45 /* CacheCleaner.swift */; };
|
||||||
51102165233A7D6C0007A5F7 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */; };
|
51102165233A7D6C0007A5F7 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */; };
|
||||||
5110C37D2373A8D100A9C04F /* InspectorIconHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5110C37C2373A8D100A9C04F /* InspectorIconHeaderView.swift */; };
|
5110C37D2373A8D100A9C04F /* InspectorIconHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5110C37C2373A8D100A9C04F /* InspectorIconHeaderView.swift */; };
|
||||||
51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; };
|
51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; };
|
||||||
@ -1201,6 +1203,7 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
49F40DEF2335B71000552BF4 /* newsfoot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = newsfoot.js; sourceTree = "<group>"; };
|
49F40DEF2335B71000552BF4 /* newsfoot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = newsfoot.js; sourceTree = "<group>"; };
|
||||||
|
5108F6B52375E612001ABC45 /* CacheCleaner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CacheCleaner.swift; sourceTree = "<group>"; };
|
||||||
51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleExtractorButton.swift; sourceTree = "<group>"; };
|
51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleExtractorButton.swift; sourceTree = "<group>"; };
|
||||||
5110C37C2373A8D100A9C04F /* InspectorIconHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectorIconHeaderView.swift; sourceTree = "<group>"; };
|
5110C37C2373A8D100A9C04F /* InspectorIconHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectorIconHeaderView.swift; sourceTree = "<group>"; };
|
||||||
51121AA12265430A00BC0EC1 /* NetNewsWire_iOSapp_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOSapp_target.xcconfig; sourceTree = "<group>"; };
|
51121AA12265430A00BC0EC1 /* NetNewsWire_iOSapp_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOSapp_target.xcconfig; sourceTree = "<group>"; };
|
||||||
@ -2200,6 +2203,7 @@
|
|||||||
849A97731ED9EC04007D329B /* ArticleStringFormatter.swift */,
|
849A97731ED9EC04007D329B /* ArticleStringFormatter.swift */,
|
||||||
849A97581ED9EB0D007D329B /* ArticleUtilities.swift */,
|
849A97581ED9EB0D007D329B /* ArticleUtilities.swift */,
|
||||||
84411E701FE5FBFA004B527F /* SmallIconProvider.swift */,
|
84411E701FE5FBFA004B527F /* SmallIconProvider.swift */,
|
||||||
|
5108F6B52375E612001ABC45 /* CacheCleaner.swift */,
|
||||||
);
|
);
|
||||||
path = Data;
|
path = Data;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -3974,6 +3978,7 @@
|
|||||||
51C452882265093600C03939 /* AddFeedViewController.swift in Sources */,
|
51C452882265093600C03939 /* AddFeedViewController.swift in Sources */,
|
||||||
51A169A0235E10D700EB091F /* FeedbinAccountViewController.swift in Sources */,
|
51A169A0235E10D700EB091F /* FeedbinAccountViewController.swift in Sources */,
|
||||||
51934CCE2310792F006127BE /* ActivityManager.swift in Sources */,
|
51934CCE2310792F006127BE /* ActivityManager.swift in Sources */,
|
||||||
|
5108F6B72375E612001ABC45 /* CacheCleaner.swift in Sources */,
|
||||||
518651DA235621840078E021 /* ImageTransition.swift in Sources */,
|
518651DA235621840078E021 /* ImageTransition.swift in Sources */,
|
||||||
514219372352510100E07E2C /* ImageScrollView.swift in Sources */,
|
514219372352510100E07E2C /* ImageScrollView.swift in Sources */,
|
||||||
51A16997235E10D700EB091F /* RefreshIntervalViewController.swift in Sources */,
|
51A16997235E10D700EB091F /* RefreshIntervalViewController.swift in Sources */,
|
||||||
@ -4088,6 +4093,7 @@
|
|||||||
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */,
|
848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */,
|
||||||
84C9FC7722629E1200D921D6 /* AdvancedPreferencesViewController.swift in Sources */,
|
84C9FC7722629E1200D921D6 /* AdvancedPreferencesViewController.swift in Sources */,
|
||||||
849EE72120391F560082A1EA /* SharingServicePickerDelegate.swift in Sources */,
|
849EE72120391F560082A1EA /* SharingServicePickerDelegate.swift in Sources */,
|
||||||
|
5108F6B62375E612001ABC45 /* CacheCleaner.swift in Sources */,
|
||||||
849A97981ED9EFAA007D329B /* Node-Extensions.swift in Sources */,
|
849A97981ED9EFAA007D329B /* Node-Extensions.swift in Sources */,
|
||||||
849EE70F203919360082A1EA /* AppAssets.swift in Sources */,
|
849EE70F203919360082A1EA /* AppAssets.swift in Sources */,
|
||||||
849A97531ED9EAC0007D329B /* AddFeedController.swift in Sources */,
|
849A97531ED9EAC0007D329B /* AddFeedController.swift in Sources */,
|
||||||
|
46
Shared/Data/CacheCleaner.swift
Normal file
46
Shared/Data/CacheCleaner.swift
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// CacheCleaner.swift
|
||||||
|
// NetNewsWire
|
||||||
|
//
|
||||||
|
// Created by Maurice Parker on 11/8/19.
|
||||||
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import os.log
|
||||||
|
|
||||||
|
struct CacheCleaner {
|
||||||
|
|
||||||
|
static let log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "CacheCleaner")
|
||||||
|
|
||||||
|
static func purgeIfNecessary() {
|
||||||
|
|
||||||
|
// If the image disk cache hasn't been flushed for 3 days and the network is available, delete it
|
||||||
|
if let flushDate = AppDefaults.lastImageCacheFlushDate, flushDate.addingTimeInterval(3600*24*3) < Date() {
|
||||||
|
if let reachability = try? Reachability(hostname: "apple.com") {
|
||||||
|
if reachability.connection != .unavailable {
|
||||||
|
|
||||||
|
let tempDir = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!
|
||||||
|
let faviconsFolderURL = tempDir.appendingPathComponent("Favicons")
|
||||||
|
let imagesFolderURL = tempDir.appendingPathComponent("Images")
|
||||||
|
let homePageToIconURL = tempDir.appendingPathComponent("HomePageToIconURLCache.plist")
|
||||||
|
let homePagesWithNoIconURL = tempDir.appendingPathComponent("HomePagesWithNoIconURLCache.plist")
|
||||||
|
|
||||||
|
for tempItem in [faviconsFolderURL, imagesFolderURL, homePageToIconURL, homePagesWithNoIconURL] {
|
||||||
|
do {
|
||||||
|
os_log(.info, log: self.log, "Removing cache file: %@", tempItem.absoluteString)
|
||||||
|
try FileManager.default.removeItem(at: tempItem)
|
||||||
|
} catch {
|
||||||
|
os_log(.error, log: self.log, "Could not delete cache file: %@", error.localizedDescription)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AppDefaults.lastImageCacheFlushDate = Date()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -77,6 +77,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||||||
}
|
}
|
||||||
|
|
||||||
registerBackgroundTasks()
|
registerBackgroundTasks()
|
||||||
|
CacheCleaner.purgeIfNecessary()
|
||||||
initializeDownloaders()
|
initializeDownloaders()
|
||||||
initializeHomeScreenQuickActions()
|
initializeHomeScreenQuickActions()
|
||||||
|
|
||||||
@ -176,27 +177,6 @@ private extension AppDelegate {
|
|||||||
let tempDir = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!
|
let tempDir = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first!
|
||||||
let faviconsFolderURL = tempDir.appendingPathComponent("Favicons")
|
let faviconsFolderURL = tempDir.appendingPathComponent("Favicons")
|
||||||
let imagesFolderURL = tempDir.appendingPathComponent("Images")
|
let imagesFolderURL = tempDir.appendingPathComponent("Images")
|
||||||
let homePageToIconURL = tempDir.appendingPathComponent("HomePageToIconURLCache.plist")
|
|
||||||
let homePagesWithNoIconURL = tempDir.appendingPathComponent("HomePagesWithNoIconURLCache.plist")
|
|
||||||
let homePageToFaviconURL = tempDir.appendingPathComponent("HomePageToFaviconURLCache.plist")
|
|
||||||
let homePageURLsWithNoFaviconURL = tempDir.appendingPathComponent("HomePageURLsWithNoFaviconURLCache.plist")
|
|
||||||
|
|
||||||
// If the image disk cache hasn't been flushed for 3 days and the network is available, delete it
|
|
||||||
if let flushDate = AppDefaults.lastImageCacheFlushDate, flushDate.addingTimeInterval(3600*24*3) < Date() {
|
|
||||||
if let reachability = try? Reachability(hostname: "apple.com") {
|
|
||||||
if reachability.connection != .unavailable {
|
|
||||||
for tempItem in [faviconsFolderURL, imagesFolderURL, homePageToIconURL, homePagesWithNoIconURL, homePageToFaviconURL, homePageURLsWithNoFaviconURL] {
|
|
||||||
do {
|
|
||||||
os_log(.info, log: self.log, "Removing cache file: %@", tempItem.absoluteString)
|
|
||||||
try FileManager.default.removeItem(at: tempItem)
|
|
||||||
} catch {
|
|
||||||
os_log(.error, log: self.log, "Could not delete cache file: %@", error.localizedDescription)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AppDefaults.lastImageCacheFlushDate = Date()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try! FileManager.default.createDirectory(at: faviconsFolderURL, withIntermediateDirectories: true, attributes: nil)
|
try! FileManager.default.createDirectory(at: faviconsFolderURL, withIntermediateDirectories: true, attributes: nil)
|
||||||
let faviconsFolder = faviconsFolderURL.absoluteString
|
let faviconsFolder = faviconsFolderURL.absoluteString
|
||||||
|
Loading…
x
Reference in New Issue
Block a user