diff --git a/clients/ios/Classes/FeedsViewController.swift b/clients/ios/Classes/FeedsViewController.swift index 798bdeed9..e9afe5ff2 100644 --- a/clients/ios/Classes/FeedsViewController.swift +++ b/clients/ios/Classes/FeedsViewController.swift @@ -65,19 +65,25 @@ class FeedsViewController: FeedsObjCViewController { return } - guard let childFeeds = appDelegate.dictFolders[folderTitle] as? [AnyObject], - let parentFeeds = appDelegate.dictFolders[parentTitle] as? [AnyObject] else { + guard let childFeeds = appDelegate.dictFolders[folderTitle] as? [AnyHashable], + let parentFeeds = appDelegate.dictFolders[parentTitle] as? [AnyHashable] else { return } - let existingSubfolders = appDelegate.dictSubfolders[parentTitle] as? [AnyObject] ?? [] + let existingSubfolders = appDelegate.dictSubfolders[parentTitle] as? [AnyHashable] ?? [] - appDelegate.dictFolders[parentTitle] = parentFeeds + childFeeds - appDelegate.dictSubfolders[parentTitle] = existingSubfolders + childFeeds + appDelegate.dictFolders[parentTitle] = unique(parentFeeds + childFeeds) + appDelegate.dictSubfolders[parentTitle] = unique(existingSubfolders + childFeeds) addSubfolderFeeds(for: parentTitle) } + private func unique(_ array: [AnyHashable]) -> [AnyHashable] { + var seen: Set = [] + + return array.filter { seen.insert($0).inserted } + } + @objc(parentTitleForFolderTitle:) func parentTitle(for folderTitle: String) -> String? { guard let range = folderTitle.range(of: " ▸ ", options: .backwards) else { return nil