mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2025-02-09 08:39:00 +01:00
Keep feedID and feedURL better separated
This commit is contained in:
parent
f12494cc31
commit
72c92587d2
@ -386,14 +386,14 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container,
|
|||||||
|
|
||||||
// For syncing, this may need to be an async method with a callback,
|
// For syncing, this may need to be an async method with a callback,
|
||||||
// since it will likely need to call the server.
|
// since it will likely need to call the server.
|
||||||
return createFeed(with: name, editedName: editedName, url: url, feedId: url, homePageURL: nil)
|
return createFeed(with: name, editedName: editedName, url: url, feedID: url, homePageURL: nil)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func createFeed(with name: String?, editedName: String?, url: String, feedId: String, homePageURL: String?) -> Feed {
|
func createFeed(with name: String?, editedName: String?, url: String, feedID: String, homePageURL: String?) -> Feed {
|
||||||
|
|
||||||
let metadata = feedMetadata(feedID: feedId)
|
let metadata = feedMetadata(feedURL: url, feedID: feedID)
|
||||||
let feed = Feed(account: self, url: url, feedID: feedId, metadata: metadata)
|
let feed = Feed(account: self, url: url, metadata: metadata)
|
||||||
feed.name = name
|
feed.name = name
|
||||||
feed.editedName = editedName
|
feed.editedName = editedName
|
||||||
feed.homePageURL = homePageURL
|
feed.homePageURL = homePageURL
|
||||||
@ -804,6 +804,7 @@ private extension Account {
|
|||||||
BatchUpdate.shared.perform {
|
BatchUpdate.shared.perform {
|
||||||
importOPMLItems(children, parentFolder: nil)
|
importOPMLItems(children, parentFolder: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func saveToDisk() {
|
func saveToDisk() {
|
||||||
@ -831,7 +832,7 @@ private extension Account {
|
|||||||
private func metadataForOnlySubscribedToFeeds() -> FeedMetadataDictionary {
|
private func metadataForOnlySubscribedToFeeds() -> FeedMetadataDictionary {
|
||||||
let feedIDs = idToFeedDictionary.keys
|
let feedIDs = idToFeedDictionary.keys
|
||||||
return feedMetadata.filter { (feedID: String, metadata: FeedMetadata) -> Bool in
|
return feedMetadata.filter { (feedID: String, metadata: FeedMetadata) -> Bool in
|
||||||
return feedIDs.contains(feedID)
|
return feedIDs.contains(metadata.feedID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -875,14 +876,14 @@ private extension Account {
|
|||||||
|
|
||||||
private extension Account {
|
private extension Account {
|
||||||
|
|
||||||
func feedMetadata(feedID: String) -> FeedMetadata {
|
func feedMetadata(feedURL: String, feedID: String) -> FeedMetadata {
|
||||||
if let d = feedMetadata[feedID] {
|
if let d = feedMetadata[feedURL] {
|
||||||
assert(d.delegate === self)
|
assert(d.delegate === self)
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
let d = FeedMetadata(feedID: feedID)
|
let d = FeedMetadata(feedID: feedID)
|
||||||
d.delegate = self
|
d.delegate = self
|
||||||
feedMetadata[feedID] = d
|
feedMetadata[feedURL] = d
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -909,9 +910,9 @@ private extension Account {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createFeed(with opmlFeedSpecifier: RSOPMLFeedSpecifier) -> Feed {
|
func createFeed(with opmlFeedSpecifier: RSOPMLFeedSpecifier) -> Feed {
|
||||||
let feedID = opmlFeedSpecifier.feedURL
|
let feedURL = opmlFeedSpecifier.feedURL
|
||||||
let metadata = feedMetadata(feedID: feedID)
|
let metadata = feedMetadata(feedURL: feedURL, feedID: feedURL)
|
||||||
let feed = Feed(account: self, url: opmlFeedSpecifier.feedURL, feedID: feedID, metadata: metadata)
|
let feed = Feed(account: self, url: opmlFeedSpecifier.feedURL, metadata: metadata)
|
||||||
if let feedTitle = opmlFeedSpecifier.title {
|
if let feedTitle = opmlFeedSpecifier.title {
|
||||||
if feed.name == nil {
|
if feed.name == nil {
|
||||||
feed.name = feedTitle
|
feed.name = feedTitle
|
||||||
|
@ -15,7 +15,15 @@ public final class Feed: DisplayNameProvider, Renamable, UnreadCountProvider, Ha
|
|||||||
|
|
||||||
public weak var account: Account?
|
public weak var account: Account?
|
||||||
public let url: String
|
public let url: String
|
||||||
public let feedID: String
|
|
||||||
|
public var feedID: String {
|
||||||
|
get {
|
||||||
|
return metadata.feedID
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
metadata.feedID = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public var homePageURL: String? {
|
public var homePageURL: String? {
|
||||||
get {
|
get {
|
||||||
@ -169,11 +177,10 @@ public final class Feed: DisplayNameProvider, Renamable, UnreadCountProvider, Ha
|
|||||||
|
|
||||||
// MARK: - Init
|
// MARK: - Init
|
||||||
|
|
||||||
init(account: Account, url: String, feedID: String, metadata: FeedMetadata) {
|
init(account: Account, url: String, metadata: FeedMetadata) {
|
||||||
self.account = account
|
self.account = account
|
||||||
self.accountID = account.accountID
|
self.accountID = account.accountID
|
||||||
self.url = url
|
self.url = url
|
||||||
self.feedID = feedID
|
|
||||||
self.metadata = metadata
|
self.metadata = metadata
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,8 +16,6 @@ protocol FeedMetadataDelegate: class {
|
|||||||
|
|
||||||
final class FeedMetadata: Codable {
|
final class FeedMetadata: Codable {
|
||||||
|
|
||||||
let feedID: String
|
|
||||||
|
|
||||||
enum CodingKeys: String, CodingKey {
|
enum CodingKeys: String, CodingKey {
|
||||||
case feedID
|
case feedID
|
||||||
case homePageURL
|
case homePageURL
|
||||||
@ -31,6 +29,14 @@ final class FeedMetadata: Codable {
|
|||||||
case folderRelationship
|
case folderRelationship
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var feedID: String {
|
||||||
|
didSet {
|
||||||
|
if feedID != oldValue {
|
||||||
|
valueDidChange(.feedID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var homePageURL: String? {
|
var homePageURL: String? {
|
||||||
didSet {
|
didSet {
|
||||||
if homePageURL != oldValue {
|
if homePageURL != oldValue {
|
||||||
@ -95,6 +101,7 @@ final class FeedMetadata: Codable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Folder Name: Sync Service Relationship ID
|
||||||
var folderRelationship: [String: String]? {
|
var folderRelationship: [String: String]? {
|
||||||
didSet {
|
didSet {
|
||||||
if folderRelationship != oldValue {
|
if folderRelationship != oldValue {
|
||||||
|
@ -282,7 +282,7 @@ private extension FeedbinAccountDelegate {
|
|||||||
feed.name = subscription.name
|
feed.name = subscription.name
|
||||||
feed.homePageURL = subscription.homePageURL
|
feed.homePageURL = subscription.homePageURL
|
||||||
} else {
|
} else {
|
||||||
let feed = account.createFeed(with: subscription.name, editedName: nil, url: subscription.url, feedId: subFeedId, homePageURL: subscription.homePageURL)
|
let feed = account.createFeed(with: subscription.name, editedName: nil, url: subscription.url, feedID: subFeedId, homePageURL: subscription.homePageURL)
|
||||||
account.addFeed(feed, to: nil)
|
account.addFeed(feed, to: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user