From 8d5e568cde83251c8106ac6c54da03b160d4f1f9 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 21 Oct 2017 16:37:40 -0700 Subject: [PATCH] Make folder.account weak and optional. --- Evergreen/MainWindow/AddFeed/AddFeedController.swift | 4 ++-- .../MainWindow/Sidebar/SidebarViewController.swift | 4 ++-- Frameworks/Account/Folder.swift | 11 +++++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Evergreen/MainWindow/AddFeed/AddFeedController.swift b/Evergreen/MainWindow/AddFeed/AddFeedController.swift index 0e6f82f08..4e2cc3a22 100644 --- a/Evergreen/MainWindow/AddFeed/AddFeedController.swift +++ b/Evergreen/MainWindow/AddFeed/AddFeedController.swift @@ -147,8 +147,8 @@ private extension AddFeedController { if let account = container as? Account { return AccountAndFolderSpecifier(account: account, folder: nil) } - if let folder = container as? Folder { - return AccountAndFolderSpecifier(account: folder.account, folder: folder) + if let folder = container as? Folder, let account = folder.account { + return AccountAndFolderSpecifier(account: account, folder: folder) } return nil } diff --git a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift index 310c8c189..152f5a5f5 100644 --- a/Evergreen/MainWindow/Sidebar/SidebarViewController.swift +++ b/Evergreen/MainWindow/Sidebar/SidebarViewController.swift @@ -194,8 +194,8 @@ private extension SidebarViewController { if let feed = object as? Feed, let account = feed.account { account.updateUnreadCounts(for: Set([feed])) } - else if let folder = object as? Folder { - folder.account.updateUnreadCounts(for: folder.flattenedFeeds()) + else if let folder = object as? Folder, let account = folder.account { + account.updateUnreadCounts(for: folder.flattenedFeeds()) } } } diff --git a/Frameworks/Account/Folder.swift b/Frameworks/Account/Folder.swift index 3df995b40..ad912fbb6 100644 --- a/Frameworks/Account/Folder.swift +++ b/Frameworks/Account/Folder.swift @@ -11,7 +11,7 @@ import Data public final class Folder: DisplayNameProvider, Container, UnreadCountProvider { - public let account: Account + public weak var account: Account? public var children = [AnyObject]() var name: String? static let untitledName = NSLocalizedString("Untitled ƒ", comment: "Folder name") @@ -19,7 +19,10 @@ public final class Folder: DisplayNameProvider, Container, UnreadCountProvider { // MARK: - Fetching Articles public func fetchArticles() -> Set
{ - + + guard let account = account else { + return Set
() + } return account.fetchArticles(folder: self) } @@ -76,7 +79,11 @@ public final class Folder: DisplayNameProvider, Container, UnreadCountProvider { var dictionary: [String: Any] { get { + var d = [String: Any]() + guard let account = account else { + return d + } if let name = name { d[Key.name] = name