diff --git a/Account/Sources/Account/AccountManager.swift b/Account/Sources/Account/AccountManager.swift index 72a26806b..29bf77288 100644 --- a/Account/Sources/Account/AccountManager.swift +++ b/Account/Sources/Account/AccountManager.swift @@ -340,7 +340,7 @@ public final class AccountManager: UnreadCountProvider { return articles } - public func fetchArticlesAsync(_ fetchType: FetchType, _ completion: @escaping ArticleSetResultBlock) { + public func fetchArticlesAsync(_ fetchType: FetchType, _ completion: @escaping ArticleSetResultBlock) { precondition(Thread.isMainThread) guard activeAccounts.count > 0 else { diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 2799b0e1a..7030d815d 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -124,10 +124,6 @@ 512392C024E33A3C00F11704 /* RedditAdd.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 516AE5FF246AF34100731738 /* RedditAdd.storyboard */; }; 512392C124E33A3C00F11704 /* RedditSelectTypeTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE601246AF36100731738 /* RedditSelectTypeTableViewController.swift */; }; 512392C224E33A3C00F11704 /* RedditEnterDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE605246AF3A900731738 /* RedditEnterDetailTableViewController.swift */; }; - 512392C324E3451400F11704 /* TwitterAdd.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */; }; - 512392C424E3451400F11704 /* TwitterSelectTypeTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */; }; - 512392C524E3451400F11704 /* TwitterEnterDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */; }; - 512392C624E3451400F11704 /* TwitterSelectAccountTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */; }; 5126EE97226CB48A00C22AFC /* SceneCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126EE96226CB48A00C22AFC /* SceneCoordinator.swift */; }; 5127B238222B4849006D641D /* DetailKeyboardDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5127B236222B4849006D641D /* DetailKeyboardDelegate.swift */; }; 5127B23A222B4849006D641D /* DetailKeyboardShortcuts.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */; }; @@ -1164,9 +1160,6 @@ 17E0084525941887000C23F0 /* SizeCategories.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SizeCategories.swift; sourceTree = ""; }; 49F40DEF2335B71000552BF4 /* newsfoot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = newsfoot.js; sourceTree = ""; }; 510289CC24519A1D00426DDF /* SelectComboTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectComboTableViewCell.swift; sourceTree = ""; }; - 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = TwitterAdd.storyboard; sourceTree = ""; }; - 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSelectTypeTableViewController.swift; sourceTree = ""; }; - 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSelectAccountTableViewController.swift; sourceTree = ""; }; 5103A9972421643300410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9B324216A4200410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9DA242258C600410853 /* AccountsAddCloudKit.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsAddCloudKit.xib; sourceTree = ""; }; @@ -1311,7 +1304,7 @@ 51BB7C262335A8E5008E8144 /* ArticleActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleActivityItemSource.swift; sourceTree = ""; }; 51BB7C302335ACDE008E8144 /* page.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = page.html; sourceTree = ""; }; 51BC4ADD247277DF000A6ED8 /* URL-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL-Extensions.swift"; sourceTree = ""; }; - 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterEnterDetailTableViewController.swift; sourceTree = ""; }; + 51C03080257D815A00609262 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Mac/Base.lproj/UnifiedWindow.storyboard; sourceTree = SOURCE_ROOT; }; 51C266E9238C334800F53014 /* ContextMenuPreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuPreviewViewController.swift; sourceTree = ""; }; 51C4524E226506F400C03939 /* UIStoryboard-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard-Extensions.swift"; sourceTree = ""; }; 51C45250226506F400C03939 /* String-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String-Extensions.swift"; sourceTree = ""; }; @@ -1807,17 +1800,6 @@ path = Resources; sourceTree = ""; }; - 510289CE2451BA1E00426DDF /* Twitter */ = { - isa = PBXGroup; - children = ( - 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */, - 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */, - 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */, - 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */, - ); - path = Twitter; - sourceTree = ""; - }; 510C415D24E5CDE3008226FD /* ShareExtension */ = { isa = PBXGroup; children = ( @@ -2157,7 +2139,6 @@ 510289CC24519A1D00426DDF /* SelectComboTableViewCell.swift */, 51E36E8B239D6765006F47A5 /* AddFeedSelectFolderTableViewCell.xib */, 516AE5DD246AF2DD00731738 /* Reddit */, - 510289CE2451BA1E00426DDF /* Twitter */, ); path = Add; sourceTree = ""; @@ -3233,9 +3214,7 @@ }; 840D617B2029031C009BC708 = { CreatedOnToolsVersion = 9.3; - DevelopmentTeam = SHJK2V3AJG; LastSwiftMigration = 1250; - ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.BackgroundModes = { enabled = 1; @@ -3441,7 +3420,6 @@ 511D43D2231FA62C00FB1562 /* GlobalKeyboardShortcuts.plist in Resources */, 84C9FCA12262A1B300D921D6 /* Main.storyboard in Resources */, 51BB7C312335ACDE008E8144 /* page.html in Resources */, - 512392C324E3451400F11704 /* TwitterAdd.storyboard in Resources */, 516A093723609A3600EAE89B /* SettingsComboTableViewCell.xib in Resources */, 51077C5A27A86D16000C71DB /* Hyperlegible.nnwtheme in Resources */, 516A09422361248000EAE89B /* Inspector.storyboard in Resources */, @@ -4094,7 +4072,6 @@ 51C4529E22650A1900C03939 /* ImageDownloader.swift in Sources */, 51A66685238075AE00CB272D /* AddWebFeedDefaultContainer.swift in Sources */, 176813E92564BAE200D98635 /* WidgetDeepLinks.swift in Sources */, - 512392C424E3451400F11704 /* TwitterSelectTypeTableViewController.swift in Sources */, 51B5C87723F22B8200032075 /* ExtensionContainers.swift in Sources */, 51C45292226509C800C03939 /* TodayFeedDelegate.swift in Sources */, 51C452A222650A1900C03939 /* RSHTMLMetadata+Extension.swift in Sources */, @@ -4136,12 +4113,10 @@ 17D643B226F8A436008D4C05 /* ArticleThemeDownloader.swift in Sources */, 51E595A6228CC36500FCC42B /* ArticleStatusSyncTimer.swift in Sources */, 51F9F3F723DF6DB200A314FD /* ArticleIconSchemeHandler.swift in Sources */, - 512392C524E3451400F11704 /* TwitterEnterDetailTableViewController.swift in Sources */, 512AF9C2236ED52C0066F8BE /* ImageHeaderView.swift in Sources */, 512392C124E33A3C00F11704 /* RedditSelectTypeTableViewController.swift in Sources */, 515A5181243E90260089E588 /* ExtensionPointIdentifer.swift in Sources */, 51C45290226509C100C03939 /* PseudoFeed.swift in Sources */, - 512392C624E3451400F11704 /* TwitterSelectAccountTableViewController.swift in Sources */, 51C452A922650DC600C03939 /* ArticleRenderer.swift in Sources */, 51C45297226509E300C03939 /* DefaultFeedsImporter.swift in Sources */, 512E094D2268B8AB00BDCFDD /* DeleteCommand.swift in Sources */, diff --git a/Shared/Importers/DefaultFeeds.opml b/Shared/Importers/DefaultFeeds.opml index f0581edaf..9e809df40 100644 --- a/Shared/Importers/DefaultFeeds.opml +++ b/Shared/Importers/DefaultFeeds.opml @@ -4,6 +4,7 @@ Default Feeds +<<<<<<< HEAD @@ -21,5 +22,17 @@ +======= + + + + + + + + + + +>>>>>>> ios-release diff --git a/Shared/Secrets.swift.gyb b/Shared/Secrets.swift.gyb index 4884ef0c7..5b7814cb1 100644 --- a/Shared/Secrets.swift.gyb +++ b/Shared/Secrets.swift.gyb @@ -2,11 +2,15 @@ %{ import os +<<<<<<< HEAD <<<<<<< HEAD secrets = ['MERCURY_CLIENT_ID', 'MERCURY_CLIENT_SECRET', 'FEEDLY_CLIENT_ID', 'FEEDLY_CLIENT_SECRET', 'TWITTER_CONSUMER_KEY', 'TWITTER_CONSUMER_SECRET', 'REDDIT_CONSUMER_KEY', 'INOREADER_APP_ID', 'INOREADER_APP_KEY'] ======= secrets = ['FEED_WRANGLER_KEY', 'MERCURY_CLIENT_ID', 'MERCURY_CLIENT_SECRET', 'FEEDLY_CLIENT_ID', 'FEEDLY_CLIENT_SECRET', 'REDDIT_CONSUMER_KEY', 'INOREADER_APP_ID', 'INOREADER_APP_KEY'] >>>>>>> mac-release +======= +secrets = ['FEED_WRANGLER_KEY', 'MERCURY_CLIENT_ID', 'MERCURY_CLIENT_SECRET', 'FEEDLY_CLIENT_ID', 'FEEDLY_CLIENT_SECRET', 'REDDIT_CONSUMER_KEY', 'INOREADER_APP_ID', 'INOREADER_APP_KEY'] +>>>>>>> ios-release def chunks(seq, size): return (seq[i:(i + size)] for i in range(0, len(seq), size)) diff --git a/Shared/Widget/WidgetDataEncoder.swift b/Shared/Widget/WidgetDataEncoder.swift index 1b610a8b5..e2ed90eab 100644 --- a/Shared/Widget/WidgetDataEncoder.swift +++ b/Shared/Widget/WidgetDataEncoder.swift @@ -69,7 +69,7 @@ public final class WidgetDataEncoder { @available(iOS 14, *) private func encodeWidgetData(completion: @escaping (WidgetData?) -> Void) { - var dispatchGroup = DispatchGroup() + let dispatchGroup = DispatchGroup() var groupError: Error? = nil var unread = [LatestArticle]() diff --git a/Technotes/ReleaseNotes-iOS.markdown b/Technotes/ReleaseNotes-iOS.markdown index fba9e6a22..000fb367d 100644 --- a/Technotes/ReleaseNotes-iOS.markdown +++ b/Technotes/ReleaseNotes-iOS.markdown @@ -1,5 +1,18 @@ # iOS Release Notes +### 6.1.1 TestFlight build 6113 - 22 Jan 2023 + +Fix a crashing bug when fetching data for the widget + +### 6.1.1 TestFlight build 6112 - 16 Jan 2023 + +Add some feeds back to defaults — now an even 10 feeds + +### 6.1.1 TestFlight build 6111 - 8 Jan 2023 (didn’t actually go out via TestFlight) + +Fixed a crashing bug in the Feeds screen +Cut way down on number of default feeds, added BBC World News + ### 6.1 Release build 6110 - 9 Nov 2022 Changes since 6.0.1… diff --git a/iOS/Add/AddFeedViewController.swift b/iOS/Add/AddFeedViewController.swift index d82ffae07..23f036519 100644 --- a/iOS/Add/AddFeedViewController.swift +++ b/iOS/Add/AddFeedViewController.swift @@ -15,7 +15,6 @@ import RSParser enum AddFeedType { case web case reddit - case twitter } class AddFeedViewController: UITableViewController { @@ -44,9 +43,6 @@ class AddFeedViewController: UITableViewController { case .reddit: navigationItem.title = NSLocalizedString("Add Reddit Feed", comment: "Add Reddit Feed") navigationItem.leftBarButtonItem = nil - case .twitter: - navigationItem.title = NSLocalizedString("Add Twitter Feed", comment: "Add Twitter Feed") - navigationItem.leftBarButtonItem = nil default: break } diff --git a/iOS/Add/Twitter/TwitterAdd.storyboard b/iOS/Add/Twitter/TwitterAdd.storyboard deleted file mode 100644 index f6b2db210..000000000 --- a/iOS/Add/Twitter/TwitterAdd.storyboard +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift b/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift deleted file mode 100644 index 91628260d..000000000 --- a/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift +++ /dev/null @@ -1,82 +0,0 @@ -// -// TwitterEnterDetailTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterEnterDetailTableViewController: UITableViewController { - - @IBOutlet weak var detailTextField: UITextField! - - var doneBarButtonItem = UIBarButtonItem() - var twitterFeedType: TwitterFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - - doneBarButtonItem.title = NSLocalizedString("Next", comment: "Next") - doneBarButtonItem.style = .plain - doneBarButtonItem.target = self - doneBarButtonItem.action = #selector(done) - navigationItem.rightBarButtonItem = doneBarButtonItem - - if case .screenName = twitterFeedType { - navigationItem.title = NSLocalizedString("Enter Name", comment: "Enter Name") - detailTextField.placeholder = NSLocalizedString("Screen Name", comment: "Screen Name") - } else { - navigationItem.title = NSLocalizedString("Enter Search", comment: "Enter Search") - detailTextField.placeholder = NSLocalizedString("Search Term or #hashtag", comment: "Search Term") - } - - detailTextField.delegate = self - NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: detailTextField) - - updateUI() - } - - @objc func done() { - guard let twitterFeedType = twitterFeedType, var text = detailTextField.text?.collapsingWhitespace else { return } - - let url: String? - if twitterFeedType == .screenName { - if text.starts(with: "@") { - text = String(text[text.index(text.startIndex, offsetBy: 1).. Bool { - textField.resignFirstResponder() - return true - } - -} - -private extension TwitterEnterDetailTableViewController { - - func updateUI() { - doneBarButtonItem.isEnabled = !(detailTextField.text?.isEmpty ?? false) - } - -} diff --git a/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift b/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift deleted file mode 100644 index 80e84be10..000000000 --- a/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// TwitterSelectAccountTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterSelectAccountTableViewController: UITableViewController { - - private var twitterFeedProviders = [TwitterFeedProvider]() - - var twitterFeedType: TwitterFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - twitterFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? TwitterFeedProvider } - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return twitterFeedProviders.count - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) - cell.textLabel?.text = "@\(twitterFeedProviders[indexPath.row].screenName)" - return cell - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let twitterFeedType = twitterFeedType else { return } - - let username = twitterFeedProviders[indexPath.row].screenName - let url = TwitterFeedProvider.buildURL(twitterFeedType, username: username, screenName: nil, searchField: nil)?.absoluteString - - let addViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddWebFeedViewController") as! AddFeedViewController - addViewController.addFeedType = .twitter - addViewController.initialFeed = url - navigationController?.pushViewController(addViewController, animated: true) - } - -} diff --git a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift b/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift deleted file mode 100644 index e8bb2688b..000000000 --- a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift +++ /dev/null @@ -1,81 +0,0 @@ -// -// TwitterSelectTypeTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterSelectTypeTableViewController: UITableViewController { - - private var twitterFeedProviders = [TwitterFeedProvider]() - - override func viewDidLoad() { - super.viewDidLoad() - twitterFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? TwitterFeedProvider } - } - - @IBAction func cancel(_ sender: Any) { - dismiss(animated: true) - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = super.tableView(tableView, cellForRowAt: indexPath) - if indexPath.row < 2 { - if twitterFeedProviders.count > 1 { - cell.accessoryType = .disclosureIndicator - } - } - return cell - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch indexPath.row { - case 0: - if twitterFeedProviders.count == 1 { - let username = twitterFeedProviders.first!.screenName - let url = TwitterFeedProvider.buildURL(.homeTimeline, username: username, screenName: nil, searchField: nil)?.absoluteString - pushAddFeedController(url) - } else { - let selectAccount = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterSelectAccountTableViewController.self) - selectAccount.twitterFeedType = .homeTimeline - navigationController?.pushViewController(selectAccount, animated: true) - } - case 1: - if twitterFeedProviders.count == 1 { - let username = twitterFeedProviders.first!.screenName - let url = TwitterFeedProvider.buildURL(.mentions, username: username, screenName: nil, searchField: nil)?.absoluteString - pushAddFeedController(url) - } else { - let selectAccount = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterSelectAccountTableViewController.self) - selectAccount.twitterFeedType = .mentions - navigationController?.pushViewController(selectAccount, animated: true) - } - case 2: - let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) - enterDetail.twitterFeedType = .screenName - navigationController?.pushViewController(enterDetail, animated: true) - case 3: - let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) - enterDetail.twitterFeedType = .search - navigationController?.pushViewController(enterDetail, animated: true) - default: - fatalError() - } - } - -} - -private extension TwitterSelectTypeTableViewController { - - func pushAddFeedController(_ url: String?) { - let addViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddWebFeedViewController") as! AddFeedViewController - addViewController.addFeedType = .twitter - addViewController.initialFeed = url - navigationController?.pushViewController(addViewController, animated: true) - } - -} diff --git a/iOS/AppAssets.swift b/iOS/AppAssets.swift index 9c7faca3d..f4435713a 100644 --- a/iOS/AppAssets.swift +++ b/iOS/AppAssets.swift @@ -113,10 +113,6 @@ struct AppAssets { return UIImage(named: "contextMenuReddit")! }() - static var contextMenuTwitter: UIImage = { - return UIImage(named: "contextMenuTwitter")! - }() - static var copyImage: UIImage = { return UIImage(systemName: "doc.on.doc")! }() @@ -133,10 +129,6 @@ struct AppAssets { return RSImage(named: "extensionPointReddit")! }() - static var extensionPointTwitter: UIImage = { - return UIImage(named: "extensionPointTwitter")! - }() - static var faviconTemplateImage: RSImage = { return RSImage(named: "faviconTemplateImage")! }() @@ -280,10 +272,6 @@ struct AppAssets { return UIImage(systemName: "trash")! }() - static var twitterOriginal: UIImage = { - return UIImage(named: "twitterWhite")!.withRenderingMode(.alwaysOriginal).withTintColor(.secondaryLabel) - }() - static var unreadFeedImage: IconImage { let image = UIImage(systemName: "largecircle.fill.circle")! return IconImage(image, isSymbol: true, isBackgroundSupressed: true, preferredColor: AppAssets.secondaryAccentColor.cgColor) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 7b5861783..cfadf175f 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -617,8 +617,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner, Ma Context Menu Order: 1. Add Web Feed 2. Add Reddit Feed - 3. Add Twitter Feed - 4. Add Folder + 3. Add Folder */ var menuItems: [UIAction] = [] @@ -637,13 +636,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner, Ma } menuItems.append(addRedditFeedAction) } - if ExtensionPointManager.shared.isTwitterEnabled { - let addTwitterFeedActionTitle = NSLocalizedString("Add Twitter Feed", comment: "Add Twitter Feed") - let addTwitterFeedAction = UIAction(title: addTwitterFeedActionTitle, image: AppAssets.contextMenuTwitter.tinted(color: .label)) { _ in - self.coordinator.showAddTwitterFeed() - } - menuItems.append(addTwitterFeedAction) - } } let addWebFolderActionTitle = NSLocalizedString("Add Folder", comment: "Add Folder") diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index fa2bbb429..fd60d7f54 100644 --- a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,116 +1,116 @@ { "images" : [ { - "size" : "20x20", + "filename" : "Icon_20x20@2x.png", "idiom" : "iphone", - "filename" : "icon-41.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "Icon_20x20@3x.png", "idiom" : "iphone", - "filename" : "icon-60.png", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { - "size" : "29x29", + "filename" : "Icon_29x29@2x.png", "idiom" : "iphone", - "filename" : "icon-58.png", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "Icon_29x29@3x.png", "idiom" : "iphone", - "filename" : "icon-87.png", - "scale" : "3x" + "scale" : "3x", + "size" : "29x29" }, { - "size" : "40x40", + "filename" : "Icon_40x40@2x.png", "idiom" : "iphone", - "filename" : "icon-80.png", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "Icon_40x40@3x.png", "idiom" : "iphone", - "filename" : "icon-121.png", - "scale" : "3x" + "scale" : "3x", + "size" : "40x40" }, { - "size" : "60x60", + "filename" : "Icon_60x60@2x.png", "idiom" : "iphone", - "filename" : "icon-120.png", - "scale" : "2x" + "scale" : "2x", + "size" : "60x60" }, { - "size" : "60x60", + "filename" : "Icon_60x60@3x.png", "idiom" : "iphone", - "filename" : "icon-180.png", - "scale" : "3x" + "scale" : "3x", + "size" : "60x60" }, { - "size" : "20x20", - "idiom" : "ipad", "filename" : "icon-20.png", - "scale" : "1x" + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "Icon_20x20@2x 1.png", "idiom" : "ipad", - "filename" : "icon-42.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "29x29", - "idiom" : "ipad", "filename" : "icon-29.png", - "scale" : "1x" + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "Icon_29x29@2x 1.png", "idiom" : "ipad", - "filename" : "icon-59.png", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "40x40", - "idiom" : "ipad", "filename" : "icon-40.png", - "scale" : "1x" + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "Icon_40x40@2x 1.png", "idiom" : "ipad", - "filename" : "icon-81.png", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "76x76", - "idiom" : "ipad", "filename" : "icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", "idiom" : "ipad", - "filename" : "icon-152.png", - "scale" : "2x" + "scale" : "1x", + "size" : "76x76" }, { - "size" : "83.5x83.5", + "filename" : "Icon_76x76@2x.png", "idiom" : "ipad", - "filename" : "icon-167.png", - "scale" : "2x" + "scale" : "2x", + "size" : "76x76" }, { - "size" : "1024x1024", + "filename" : "Icon_83.5x83.5@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "Icon_1024x1024.png", "idiom" : "ios-marketing", - "filename" : "icon-1024.png", - "scale" : "1x" + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_1024x1024.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_1024x1024.png new file mode 100644 index 000000000..c23104e9b Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_1024x1024.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x 1.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x 1.png new file mode 100644 index 000000000..1dadf1062 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x 1.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x.png new file mode 100644 index 000000000..1dadf1062 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@3x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@3x.png new file mode 100644 index 000000000..05b3f4a70 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_20x20@3x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x 1.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x 1.png new file mode 100644 index 000000000..b9fc738a9 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x 1.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x.png new file mode 100644 index 000000000..b9fc738a9 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@3x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@3x.png new file mode 100644 index 000000000..79e1a4011 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_29x29@3x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x 1.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x 1.png new file mode 100644 index 000000000..44fd5c3a1 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x 1.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x.png new file mode 100644 index 000000000..44fd5c3a1 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@3x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@3x.png new file mode 100644 index 000000000..373ea7096 Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_40x40@3x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@2x.png new file mode 100644 index 000000000..a137eda8b Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@3x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@3x.png new file mode 100644 index 000000000..d9a7facab Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_60x60@3x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_76x76@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_76x76@2x.png new file mode 100644 index 000000000..94125bb6f Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_76x76@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_83.5x83.5@2x.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_83.5x83.5@2x.png new file mode 100644 index 000000000..7d7cb5a2e Binary files /dev/null and b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Icon_83.5x83.5@2x.png differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-1024.png deleted file mode 100644 index c2bb5d540..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-1024.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-120.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-120.png deleted file mode 100644 index 6d1a94fd9..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-120.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-121.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-121.png deleted file mode 100644 index 6d1a94fd9..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-121.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-152.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-152.png deleted file mode 100644 index b217d09c4..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-152.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-167.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-167.png deleted file mode 100644 index 4cd8fa6c0..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-167.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-180.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-180.png deleted file mode 100644 index 8c5c93b8c..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-180.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-41.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-41.png deleted file mode 100644 index 180a98b25..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-41.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-42.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-42.png deleted file mode 100644 index 180a98b25..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-42.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-58.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-58.png deleted file mode 100644 index a53d44864..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-58.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-59.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-59.png deleted file mode 100644 index a53d44864..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-59.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-60.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-60.png deleted file mode 100644 index 7a01bc978..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-60.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-80.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-80.png deleted file mode 100644 index 85289428d..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-80.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-81.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-81.png deleted file mode 100644 index 85289428d..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-81.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-87.png b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-87.png deleted file mode 100644 index dd27b3ca3..000000000 Binary files a/iOS/Resources/Assets.xcassets/AppIcon.appiconset/icon-87.png and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json b/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json deleted file mode 100644 index 1cf455ca4..000000000 --- a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "twitterContextMenu.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf b/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf deleted file mode 100644 index c7d5a5d74..000000000 Binary files a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/Contents.json b/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/Contents.json deleted file mode 100644 index 46fecf23a..000000000 --- a/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "twitter.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "original" - } -} diff --git a/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/twitter.pdf b/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/twitter.pdf deleted file mode 100644 index e50de4443..000000000 Binary files a/iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/twitter.pdf and /dev/null differ diff --git a/iOS/Resources/Assets.xcassets/twitterWhite.imageset/Contents.json b/iOS/Resources/Assets.xcassets/twitterWhite.imageset/Contents.json deleted file mode 100644 index bca634d24..000000000 --- a/iOS/Resources/Assets.xcassets/twitterWhite.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "twitter_white.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/iOS/Resources/Assets.xcassets/twitterWhite.imageset/twitter_white.png b/iOS/Resources/Assets.xcassets/twitterWhite.imageset/twitter_white.png deleted file mode 100644 index a857fb029..000000000 Binary files a/iOS/Resources/Assets.xcassets/twitterWhite.imageset/twitter_white.png and /dev/null differ diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index e256be77d..f680568ff 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1227,13 +1227,6 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, Logging { masterFeedViewController.present(addNavViewController, animated: true) } - func showAddTwitterFeed() { - let addNavViewController = UIStoryboard.twitterAdd.instantiateInitialViewController() as! UINavigationController - addNavViewController.modalPresentationStyle = .formSheet - addNavViewController.preferredContentSize = AddFeedViewController.preferredContentSizeForFormSheetDisplay - masterFeedViewController.present(addNavViewController, animated: true) - } - func showAddFolder() { let addNavViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddFolderViewControllerNav") as! UINavigationController addNavViewController.modalPresentationStyle = .formSheet diff --git a/iOS/UIKit Extensions/UIStoryboard-Extensions.swift b/iOS/UIKit Extensions/UIStoryboard-Extensions.swift index 92caedf99..56fc2b195 100644 --- a/iOS/UIKit Extensions/UIStoryboard-Extensions.swift +++ b/iOS/UIKit Extensions/UIStoryboard-Extensions.swift @@ -24,10 +24,6 @@ extension UIStoryboard { return UIStoryboard(name: "RedditAdd", bundle: nil) } - static var twitterAdd: UIStoryboard { - return UIStoryboard(name: "TwitterAdd", bundle: nil) - } - static var settings: UIStoryboard { return UIStoryboard(name: "Settings", bundle: nil) } diff --git a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig index 0a90fb07f..3d4c3ef1b 100644 --- a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig @@ -1,7 +1,7 @@ // High Level Settings common to both the iOS application and any extensions we bundle with it -MARKETING_VERSION = 6.1 -CURRENT_PROJECT_VERSION = 6110 +MARKETING_VERSION = 6.1.1 +CURRENT_PROJECT_VERSION = 6113 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon