From 7beb818c6707fd067bf6844a36e981948bd59a76 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 6 Jul 2024 20:32:31 -0700 Subject: [PATCH] Make ArticleThemesManager specify its folder itself. --- Mac/AppDelegate.swift | 10 +++------ .../ArticleStyles/ArticleThemesManager.swift | 21 ++++++++----------- iOS/AppDelegate.swift | 4 ---- 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index 214ec5dc0..3a9692898 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -104,7 +104,6 @@ import Sparkle private var themeImportPath: String? private let secretsProvider = Secrets() private let accountManager: AccountManager - private let articleThemesManager: ArticleThemesManager override init() { @@ -113,9 +112,6 @@ import Sparkle self.accountManager = AccountManager(accountsFolder: Platform.dataSubfolder(forApplication: nil, folderName: "Accounts")!, secretsProvider: secretsProvider) AccountManager.shared = self.accountManager - self.articleThemesManager = ArticleThemesManager(folderPath: Platform.dataSubfolder(forApplication: nil, folderName: "Themes")!) - ArticleThemesManager.shared = self.articleThemesManager - super.init() #if !MAC_APP_STORE @@ -823,7 +819,7 @@ internal extension AppDelegate { func importTheme() { do { - try articleThemesManager.importTheme(filename: filename) + try ArticleThemesManager.shared.importTheme(filePath: filename) confirmImportSuccess(themeName: theme.name) } catch { NSApplication.shared.presentError(error) @@ -833,7 +829,7 @@ internal extension AppDelegate { alert.beginSheetModal(for: window) { result in if result == NSApplication.ModalResponse.alertFirstButtonReturn { - if self.articleThemesManager.themeExists(filename: filename) { + if ArticleThemesManager.shared.themeExists(filePath: filename) { let alert = NSAlert() alert.alertStyle = .warning @@ -926,7 +922,7 @@ internal extension AppDelegate { @objc func openThemesFolder(_ sender: Any) { if themeImportPath == nil { - let url = URL(fileURLWithPath: articleThemesManager.folderPath) + let url = URL(fileURLWithPath: ArticleThemesManager.shared.folderPath) NSWorkspace.shared.open(url) } else { let url = URL(fileURLWithPath: themeImportPath!) diff --git a/Shared/ArticleStyles/ArticleThemesManager.swift b/Shared/ArticleStyles/ArticleThemesManager.swift index f9d613de1..03fb1749c 100644 --- a/Shared/ArticleStyles/ArticleThemesManager.swift +++ b/Shared/ArticleStyles/ArticleThemesManager.swift @@ -7,6 +7,7 @@ // import Foundation +import Core public extension Notification.Name { static let ArticleThemeNamesDidChangeNotification = Notification.Name("ArticleThemeNamesDidChangeNotification") @@ -15,12 +16,15 @@ public extension Notification.Name { final class ArticleThemesManager: NSObject, NSFilePresenter { - @MainActor static var shared: ArticleThemesManager! - public let folderPath: String + @MainActor static var shared = ArticleThemesManager() + public let folderURL: URL + private var folderPath: String { + folderURL.path + } lazy var presentedItemOperationQueue = OperationQueue.main var presentedItemURL: URL? { - return URL(fileURLWithPath: folderPath) + folderURL } var currentThemeName: String { @@ -48,19 +52,12 @@ final class ArticleThemesManager: NSObject, NSFilePresenter { } } - init(folderPath: String) { - self.folderPath = folderPath + override init() { + self.folderURL = AppConfig.dataSubfolder(named: "Themes") self.currentTheme = ArticleTheme.defaultTheme super.init() - do { - try FileManager.default.createDirectory(atPath: folderPath, withIntermediateDirectories: true, attributes: nil) - } catch { - assertionFailure("Could not create folder for Themes.") - abort() - } - updateThemeNames() updateCurrentTheme() diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index f6f2c37cd..354bfa61c 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -70,10 +70,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD appDelegate = self - let documentThemesFolder = documentFolder.appendingPathComponent("Themes").absoluteString - let documentThemesFolderPath = String(documentThemesFolder.suffix(from: documentAccountsFolder.index(documentThemesFolder.startIndex, offsetBy: 7))) - ArticleThemesManager.shared = ArticleThemesManager(folderPath: documentThemesFolderPath) - NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountRefreshDidFinish(_:)), name: .AccountRefreshDidFinish, object: nil) }