Make ArticleThemesManager specify its folder itself.

This commit is contained in:
Brent Simmons
2024-07-06 20:32:31 -07:00
parent ad3035c053
commit 7beb818c67
3 changed files with 12 additions and 23 deletions

View File

@@ -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!)

View File

@@ -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()

View File

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