mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Change to not suggest root folder for Accounts that don't support it. Issue #1287
This commit is contained in:
51
iOS/Add/AddWebFeedDefaultContainer.swift
Normal file
51
iOS/Add/AddWebFeedDefaultContainer.swift
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user