//
//  DataExtensions.swift
//  Account
//
//  Created by Brent Simmons on 10/7/17.
//  Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//

import Foundation
import Data
import RSParser

public extension Notification.Name {

	public static let FeedSettingDidChange = Notification.Name(rawValue: "FeedSettingDidChangeNotification")
}

public extension Feed {

	public var account: Account? {
		return AccountManager.shared.existingAccount(with: accountID)
	}
	
	public func takeSettings(from parsedFeed: ParsedFeed) {

		var didChangeAtLeastOneSetting = false

		if iconURL != parsedFeed.iconURL {
			iconURL = parsedFeed.iconURL
			didChangeAtLeastOneSetting = true
		}
		if faviconURL != parsedFeed.faviconURL {
			faviconURL = parsedFeed.faviconURL
			didChangeAtLeastOneSetting = true
		}
		if homePageURL != parsedFeed.homePageURL {
			homePageURL = parsedFeed.homePageURL
			didChangeAtLeastOneSetting = true
		}
		if name != parsedFeed.title {
			name = parsedFeed.title
			didChangeAtLeastOneSetting = true
		}

		let updatedAuthors = Author.authorsWithParsedAuthors(parsedFeed.authors)
		if authors != updatedAuthors {
			authors = updatedAuthors
			didChangeAtLeastOneSetting = true
		}

		if didChangeAtLeastOneSetting {
			NotificationCenter.default.post(name: .FeedSettingDidChange, object: self)
		}
	}
}

public extension Article {

	public var account: Account? {
		return AccountManager.shared.existingAccount(with: accountID)
	}
	
	public var feed: Feed? {
		return account?.existingFeed(with: feedID)
	}
}