NetNewsWire/Frameworks/Account/Account.swift

90 lines
1.7 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Account.swift
// DataModel
//
// Created by Brent Simmons on 7/1/17.
// Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import RSCore
import Data
public enum AccountType: Int {
// Raw values should not change since theyre stored on disk.
case onMyMac = 1
case feedly = 16
case feedbin = 17
case feedWrangler = 18
case newsBlur = 19
// TODO: more
}
public final class Account: DisplayNameProvider, Hashable {
public let identifier: String
public let type: AccountType
public var nameForDisplay: String?
public let delegate: AccountDelegate
public let hashValue: Int
let settingsFile: String
let dataFolder: String
var topLevelObjects = [AnyObject]()
var feedIDDictionary = [String: Feed]()
var username: String?
init?(dataFolder: String, settingsFile: String, type: AccountType, identifier: String) {
self.identifier = identifier
self.type = type
self.settingsFile = settingsFile
self.dataFolder = dataFolder
self.hashValue = identifier.hashValue
switch type {
case onMyMac:
self.delegate = LocalAccountDelegate()
default:
return nil
}
}
// MARK: - API
public func refreshAll() {
delegate.refreshAll(for: self)
}
// MARK: - Equatable
public class func ==(lhs: Account, rhs: Account) -> Bool {
return lhs === rhs
}
}
extension Account: PlistProvider {
public func plist() -> AnyObject? {
return nil // TODO
}
}
extension Account: OPMLRepresentable {
public func OPMLString(indentLevel: Int) -> String {
var s = ""
for oneObject in topLevelObjects {
if let oneOPMLObject = oneObject as? OPMLRepresentable {
s += oneOPMLObject.OPMLString(indentLevel: indentLevel + 1)
}
}
return s
}
}