// // AccountDelegate.swift // Account // // Created by Brent Simmons on 9/16/17. // Copyright © 2017 Ranchero Software, LLC. All rights reserved. // import Foundation import Articles import RSWeb protocol AccountDelegate { // Local account does not; some synced accounts might. var isSubfoldersSupported: Bool { get } var isTagBasedSystem: Bool { get } var isOPMLImportSupported: Bool { get } var isOPMLImportInProgress: Bool { get } var server: String? { get } var credentials: Credentials? { get set } var accountMetadata: AccountMetadata? { get set } var refreshProgress: DownloadProgress { get } func refreshAll(for account: Account, completion: @escaping (Result) -> Void) func sendArticleStatus(for account: Account, completion: @escaping (() -> Void)) func refreshArticleStatus(for account: Account, completion: @escaping (() -> Void)) func importOPML(for account:Account, opmlFile: URL, completion: @escaping (Result) -> Void) func addFolder(for account: Account, name: String, completion: @escaping (Result) -> Void) func renameFolder(for account: Account, with folder: Folder, to name: String, completion: @escaping (Result) -> Void) func removeFolder(for account: Account, with folder: Folder, completion: @escaping (Result) -> Void) func createFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) func renameFeed(for account: Account, with feed: Feed, to name: String, completion: @escaping (Result) -> Void) func addFeed(for account: Account, with: Feed, to container: Container, completion: @escaping (Result) -> Void) func removeFeed(for account: Account, with feed: Feed, from container: Container?, completion: @escaping (Result) -> Void) func moveFeed(for account: Account, with feed: Feed, from: Container, to: Container, completion: @escaping (Result) -> Void) func restoreFeed(for account: Account, feed: Feed, container: Container, completion: @escaping (Result) -> Void) func restoreFolder(for account: Account, folder: Folder, completion: @escaping (Result) -> Void) func markArticles(for account: Account, articles: Set
, statusKey: ArticleStatus.Key, flag: Bool) -> Set
? // Called at the end of account’s init method. func accountDidInitialize(_ account: Account) static func validateCredentials(transport: Transport, credentials: Credentials, endpoint: URL?, completion: @escaping (Result) -> Void) }