From 42f63808f31c59fedd7d3c9601ad09ea89912944 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Sun, 7 Jun 2020 20:13:51 -0500 Subject: [PATCH] AppleScript: Add a "feed" property to articles - Also make scripts like feed id "foo" of account id "bar" find feeds in folders. --- Mac/Resources/NetNewsWire.sdef | 5 ++++- Mac/Scriptability/Account+Scriptability.swift | 5 ++--- Mac/Scriptability/Article+Scriptability.swift | 9 +++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Mac/Resources/NetNewsWire.sdef b/Mac/Resources/NetNewsWire.sdef index ab63c5db3..865d16795 100644 --- a/Mac/Resources/NetNewsWire.sdef +++ b/Mac/Resources/NetNewsWire.sdef @@ -216,7 +216,10 @@ - + + + + diff --git a/Mac/Scriptability/Account+Scriptability.swift b/Mac/Scriptability/Account+Scriptability.swift index 84788ad0f..8e3b00edc 100644 --- a/Mac/Scriptability/Account+Scriptability.swift +++ b/Mac/Scriptability/Account+Scriptability.swift @@ -101,14 +101,13 @@ class ScriptableAccount: NSObject, UniqueIdScriptingObject, ScriptingObjectConta @objc(valueInWebFeedsWithUniqueID:) func valueInWebFeeds(withUniqueID id:String) -> ScriptableWebFeed? { - let feeds = Array(account.topLevelWebFeeds) - guard let feed = feeds.first(where:{$0.webFeedID == id}) else { return nil } + guard let feed = account.existingWebFeed(withWebFeedID: id) else { return nil } return ScriptableWebFeed(feed, container:self) } @objc(valueInWebFeedsWithName:) func valueInWebFeeds(withName name:String) -> ScriptableWebFeed? { - let feeds = Array(account.topLevelWebFeeds) + let feeds = Array(account.flattenedWebFeeds()) guard let feed = feeds.first(where:{$0.name == name}) else { return nil } return ScriptableWebFeed(feed, container:self) } diff --git a/Mac/Scriptability/Article+Scriptability.swift b/Mac/Scriptability/Article+Scriptability.swift index 08381c8d6..053afc316 100644 --- a/Mac/Scriptability/Article+Scriptability.swift +++ b/Mac/Scriptability/Article+Scriptability.swift @@ -141,4 +141,13 @@ class ScriptableArticle: NSObject, UniqueIdScriptingObject, ScriptingObjectConta return articleAuthors.map { ScriptableAuthor($0, container:self) } as NSArray } + @objc(feed) + var feed: ScriptableWebFeed? { + guard let parentFeed = self.article.webFeed, + let account = parentFeed.account + else { return nil } + + return ScriptableWebFeed(parentFeed, container: ScriptableAccount(account)) + } + }