Change to not suggest root folder for Accounts that don't support it. Issue #1287

This commit is contained in:
Maurice Parker
2019-11-16 13:25:55 -06:00
parent 91a3e4fd73
commit 5ce5175bc0
6 changed files with 78 additions and 10 deletions

View File

@@ -0,0 +1,51 @@
//
// AddWebFeedDefaultContainer.swift
// NetNewsWire-iOS
//
// Created by Maurice Parker on 11/16/19.
// Copyright © 2019 Ranchero Software. All rights reserved.
//
import Foundation
import Account
struct AddWebFeedDefaultContainer {
static var defaultContainer: Container? {
if let accountID = AppDefaults.addWebFeedAccountID, let account = AccountManager.shared.activeAccounts.first(where: { $0.accountID == accountID }) {
if let folderName = AppDefaults.addWebFeedFolderName, let folder = account.findFolder(withDisplayName: folderName) {
return folder
} else {
return substituteContainerIfNeeded(account: account)
}
} else if let account = AccountManager.shared.sortedActiveAccounts.first {
return substituteContainerIfNeeded(account: account)
} else {
return nil
}
}
static func storeDefaultContainer(_ container: Container) {
AppDefaults.addWebFeedAccountID = container.account?.accountID
if let folder = container as? Folder {
AppDefaults.addWebFeedFolderName = folder.nameForDisplay
} else {
AppDefaults.addWebFeedFolderName = nil
}
}
private static func substituteContainerIfNeeded(account: Account) -> Container? {
if !account.behaviors.contains(.disallowFeedInRootFolder) {
return account
} else {
if let folder = account.sortedFolders?.first {
return folder
} else {
return nil
}
}
}
}

View File

@@ -68,11 +68,16 @@ class AddWebFeedFolderViewController: UITableViewController {
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .checkmark
let container = containers[indexPath.row]
delegate?.didSelect(container: containers[indexPath.row])
navigationController?.popViewController(animated: true)
if let account = container as? Account, account.behaviors.contains(.disallowFeedInRootFolder) {
tableView.selectRow(at: nil, animated: false, scrollPosition: .none)
} else {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .checkmark
delegate?.didSelect(container: container)
navigationController?.popViewController(animated: true)
}
}
}

View File

@@ -48,10 +48,8 @@ class AddWebFeedViewController: UITableViewController, AddContainerViewControlle
nameTextField.text = initialFeedName
nameTextField.delegate = self
if let accountID = AppDefaults.addWebFeedAccountID, let account = AccountManager.shared.activeAccounts.first(where: { $0.accountID == accountID }) {
container = account
} else if let account = AccountManager.shared.sortedActiveAccounts.first {
container = account
if let defaultContainer = AddWebFeedDefaultContainer.defaultContainer {
container = defaultContainer
} else {
delegate?.readyToAdd(state: false)
}
@@ -138,7 +136,7 @@ extension AddWebFeedViewController: AddWebFeedFolderViewControllerDelegate {
func didSelect(container: Container) {
self.container = container
updateFolderLabel()
AppDefaults.addWebFeedAccountID = container.account?.accountID
AddWebFeedDefaultContainer.storeDefaultContainer(container)
}
}