From c3506e9329f1222516dac8b1934a97c3c445b96c Mon Sep 17 00:00:00 2001 From: Anh Do Date: Sun, 22 Mar 2020 19:52:48 -0400 Subject: [PATCH] Add NewsBlur to Preferences --- Mac/AppAssets.swift | 6 + .../Accounts/AccountsAddViewController.swift | 9 +- Mac/Preferences/Accounts/AccountsNewsBlur.xib | 185 ++++++++++++++++++ .../AccountsNewsBlurWindowController.swift | 110 +++++++++++ .../accountNewsBlur.imageset/Contents.json | 15 ++ .../accountNewsBlur.imageset/newsblur-512.png | Bin 0 -> 54138 bytes NetNewsWire.xcodeproj/project.pbxproj | 12 ++ .../NewsBlurAccountViewController.swift | 8 +- 8 files changed, 340 insertions(+), 5 deletions(-) create mode 100644 Mac/Preferences/Accounts/AccountsNewsBlur.xib create mode 100644 Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift create mode 100644 Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/Contents.json create mode 100644 Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/newsblur-512.png diff --git a/Mac/AppAssets.swift b/Mac/AppAssets.swift index c537ee21b..a9d62921f 100644 --- a/Mac/AppAssets.swift +++ b/Mac/AppAssets.swift @@ -40,6 +40,10 @@ struct AppAssets { static var accountFreshRSS: RSImage! = { return RSImage(named: "accountFreshRSS") }() + + static var accountNewsBlur: RSImage! = { + return RSImage(named: "accountNewsBlur") + }() static var articleExtractor: RSImage! = { return RSImage(named: "articleExtractor") @@ -151,6 +155,8 @@ struct AppAssets { return AppAssets.accountFeedWrangler case .freshRSS: return AppAssets.accountFreshRSS + case .newsBlur: + return AppAssets.accountNewsBlur default: return nil } diff --git a/Mac/Preferences/Accounts/AccountsAddViewController.swift b/Mac/Preferences/Accounts/AccountsAddViewController.swift index 4923272be..1207852ce 100644 --- a/Mac/Preferences/Accounts/AccountsAddViewController.swift +++ b/Mac/Preferences/Accounts/AccountsAddViewController.swift @@ -17,7 +17,7 @@ class AccountsAddViewController: NSViewController { private var accountsAddWindowController: NSWindowController? #if DEBUG - private var addableAccountTypes: [AccountType] = [.onMyMac, .cloudKit, .feedbin, .feedly, .feedWrangler, .freshRSS] + private var addableAccountTypes: [AccountType] = [.onMyMac, .cloudKit, .feedbin, .feedly, .feedWrangler, .freshRSS, .newsBlur] #else private var addableAccountTypes: [AccountType] = [.onMyMac, .feedbin, .feedly] #endif @@ -80,6 +80,9 @@ extension AccountsAddViewController: NSTableViewDelegate { case .feedly: cell.accountNameLabel?.stringValue = NSLocalizedString("Feedly", comment: "Feedly") cell.accountImageView?.image = AppAssets.accountFeedly + case .newsBlur: + cell.accountNameLabel?.stringValue = NSLocalizedString("NewsBlur", comment: "NewsBlur") + cell.accountImageView?.image = AppAssets.accountNewsBlur default: break } @@ -127,6 +130,10 @@ extension AccountsAddViewController: NSTableViewDelegate { addAccount.delegate = self addAccount.presentationAnchor = self.view.window! MainThreadOperationQueue.shared.add(addAccount) + case .newsBlur: + let accountsNewsBlurWindowController = AccountsNewsBlurWindowController() + accountsNewsBlurWindowController.runSheetOnWindow(self.view.window!) + accountsAddWindowController = accountsNewsBlurWindowController default: break } diff --git a/Mac/Preferences/Accounts/AccountsNewsBlur.xib b/Mac/Preferences/Accounts/AccountsNewsBlur.xib new file mode 100644 index 000000000..3b6027ed8 --- /dev/null +++ b/Mac/Preferences/Accounts/AccountsNewsBlur.xib @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NSAllRomanInputSourcesLocaleIdentifier + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift new file mode 100644 index 000000000..cae19a31a --- /dev/null +++ b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift @@ -0,0 +1,110 @@ +// +// AccountsNewsBlurWindowController.swift +// NetNewsWire +// +// Created by Anh Quang Do on 2020-03-22. +// Copyright (c) 2020 Ranchero Software. All rights reserved. +// + +import AppKit +import Account +import RSWeb + +class AccountsNewsBlurWindowController: NSWindowController { + @IBOutlet weak var progressIndicator: NSProgressIndicator! + @IBOutlet weak var usernameTextField: NSTextField! + @IBOutlet weak var passwordTextField: NSSecureTextField! + @IBOutlet weak var errorMessageLabel: NSTextField! + @IBOutlet weak var actionButton: NSButton! + + var account: Account? + + private weak var hostWindow: NSWindow? + + convenience init() { + self.init(windowNibName: NSNib.Name("AccountsNewsBlur")) + } + + override func windowDidLoad() { + if let account = account, let credentials = try? account.retrieveCredentials(type: .newsBlurBasic) { + usernameTextField.stringValue = credentials.username + actionButton.title = NSLocalizedString("Update", comment: "Update") + } else { + actionButton.title = NSLocalizedString("Create", comment: "Create") + } + } + + // MARK: API + + func runSheetOnWindow(_ hostWindow: NSWindow, completion: ((NSApplication.ModalResponse) -> Void)? = nil) { + self.hostWindow = hostWindow + hostWindow.beginSheet(window!, completionHandler: completion) + } + + // MARK: Actions + + @IBAction func cancel(_ sender: Any) { + hostWindow!.endSheet(window!, returnCode: NSApplication.ModalResponse.cancel) + } + + @IBAction func action(_ sender: Any) { + self.errorMessageLabel.stringValue = "" + + guard !usernameTextField.stringValue.isEmpty else { + self.errorMessageLabel.stringValue = NSLocalizedString("Username required.", comment: "Credentials Error") + return + } + + actionButton.isEnabled = false + progressIndicator.isHidden = false + progressIndicator.startAnimation(self) + + let credentials = Credentials(type: .newsBlurBasic, username: usernameTextField.stringValue, secret: passwordTextField.stringValue) + Account.validateCredentials(type: .newsBlur, credentials: credentials) { [weak self] result in + + guard let self = self else { return } + + self.actionButton.isEnabled = true + self.progressIndicator.isHidden = true + self.progressIndicator.stopAnimation(self) + + switch result { + case .success(let validatedCredentials): + guard let validatedCredentials = validatedCredentials else { + self.errorMessageLabel.stringValue = NSLocalizedString("Invalid email/password combination.", comment: "Credentials Error") + return + } + var newAccount = false + if self.account == nil { + self.account = AccountManager.shared.createAccount(type: .newsBlur) + newAccount = true + } + + do { + try self.account?.removeCredentials(type: .newsBlurBasic) + try self.account?.removeCredentials(type: .newsBlurSessionId) + try self.account?.storeCredentials(credentials) + try self.account?.storeCredentials(validatedCredentials) + if newAccount { + self.account?.refreshAll() { result in + switch result { + case .success: + break + case .failure(let error): + NSApplication.shared.presentError(error) + } + } + } + self.hostWindow?.endSheet(self.window!, returnCode: NSApplication.ModalResponse.OK) + } catch { + self.errorMessageLabel.stringValue = NSLocalizedString("Keychain error while storing credentials.", comment: "Credentials Error") + } + + case .failure: + + self.errorMessageLabel.stringValue = NSLocalizedString("Network error. Try again later.", comment: "Credentials Error") + + } + } + } +} diff --git a/Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/Contents.json b/Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/Contents.json new file mode 100644 index 000000000..99f78349c --- /dev/null +++ b/Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "newsblur-512.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "template-rendering-intent" : "template" + } +} \ No newline at end of file diff --git a/Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/newsblur-512.png b/Mac/Resources/Assets.xcassets/accountNewsBlur.imageset/newsblur-512.png new file mode 100644 index 0000000000000000000000000000000000000000..5fab67691f90e4ff35fd51ae1cc4d44ff821d230 GIT binary patch literal 54138 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 AYybcN literal 0 HcmV?d00001 diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 4cdb13a9d..9cc10115d 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 179DB1DFBCF9177104B12E0F /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; + 179DB3CE822BFCC2D774D9F4 /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; 3B3A32A5238B820900314204 /* FeedWranglerAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */; }; 3B826DCB2385C84800FC1ADB /* AccountsFeedWrangler.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */; }; 3B826DCC2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */; }; @@ -665,6 +667,8 @@ B2B80778239C4C7000F191E0 /* RSImage-AppIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B8075D239C49D300F191E0 /* RSImage-AppIcons.swift */; }; B2B80779239C4C7300F191E0 /* RSImage-AppIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B8075D239C49D300F191E0 /* RSImage-AppIcons.swift */; }; B528F81E23333C7E00E735DD /* page.html in Resources */ = {isa = PBXBuildFile; fileRef = B528F81D23333C7E00E735DD /* page.html */; }; + BDCB516724282C8A00102A80 /* AccountsNewsBlur.xib in Resources */ = {isa = PBXBuildFile; fileRef = BDCB514D24282C8A00102A80 /* AccountsNewsBlur.xib */; }; + BDCB516824282C8A00102A80 /* AccountsNewsBlur.xib in Resources */ = {isa = PBXBuildFile; fileRef = BDCB514D24282C8A00102A80 /* AccountsNewsBlur.xib */; }; C5A6ED5223C9AF4300AB6BE2 /* TitleActivityItemSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A6ED5123C9AF4300AB6BE2 /* TitleActivityItemSource.swift */; }; C5A6ED6D23C9B0C800AB6BE2 /* UIActivityViewController-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A6ED6C23C9B0C800AB6BE2 /* UIActivityViewController-Extensions.swift */; }; D553738B20186C20006D8857 /* Article+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D553737C20186C1F006D8857 /* Article+Scriptability.swift */; }; @@ -1255,6 +1259,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsNewsBlurWindowController.swift; sourceTree = ""; }; 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAccountViewController.swift; sourceTree = ""; }; 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsFeedWrangler.xib; sourceTree = ""; }; 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsFeedWranglerWindowController.swift; sourceTree = ""; }; @@ -1626,6 +1631,7 @@ B24EFD5923310109006C6242 /* WKPreferencesPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKPreferencesPrivate.h; sourceTree = ""; }; B2B8075D239C49D300F191E0 /* RSImage-AppIcons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RSImage-AppIcons.swift"; sourceTree = ""; }; B528F81D23333C7E00E735DD /* page.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = page.html; sourceTree = ""; }; + BDCB514D24282C8A00102A80 /* AccountsNewsBlur.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsNewsBlur.xib; sourceTree = ""; }; C5A6ED5123C9AF4300AB6BE2 /* TitleActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleActivityItemSource.swift; sourceTree = ""; }; C5A6ED6C23C9B0C800AB6BE2 /* UIActivityViewController-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIActivityViewController-Extensions.swift"; sourceTree = ""; }; D519E74722EE553300923F27 /* NetNewsWire_safariextension_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_safariextension_target.xcconfig; sourceTree = ""; }; @@ -2630,6 +2636,8 @@ 5144EA4F227B8E4500D19003 /* AccountsFeedbinWindowController.swift */, 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */, 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */, + BDCB514D24282C8A00102A80 /* AccountsNewsBlur.xib */, + 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */, 55E15BC1229D65A900D6602A /* AccountsReaderAPI.xib */, 55E15BCA229D65A900D6602A /* AccountsReaderAPIWindowController.swift */, 5144EA352279FC3D00D19003 /* AccountsAddLocal.xib */, @@ -3501,6 +3509,7 @@ 65ED4066235DEF6C0081F399 /* TimelineTableView.xib in Resources */, 65ED4067235DEF6C0081F399 /* page.html in Resources */, 65ED4068235DEF6C0081F399 /* MainWindow.storyboard in Resources */, + BDCB516824282C8A00102A80 /* AccountsNewsBlur.xib in Resources */, 3B826DCD2385C89600FC1ADB /* AccountsFeedWrangler.xib in Resources */, 65ED4069235DEF6C0081F399 /* AccountsReaderAPI.xib in Resources */, 65ED406A235DEF6C0081F399 /* newsfoot.js in Resources */, @@ -3593,6 +3602,7 @@ 3B826DCB2385C84800FC1ADB /* AccountsFeedWrangler.xib in Resources */, 55E15BCB229D65A900D6602A /* AccountsReaderAPI.xib in Resources */, 49F40DF82335B71000552BF4 /* newsfoot.js in Resources */, + BDCB516724282C8A00102A80 /* AccountsNewsBlur.xib in Resources */, 5103A9982421643300410853 /* blank.html in Resources */, 84BAE64921CEDAF20046DB56 /* CrashReporterWindow.xib in Resources */, 84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */, @@ -3909,6 +3919,7 @@ 65ED403E235DEF6C0081F399 /* TimelineCellAppearance.swift in Sources */, 65ED403F235DEF6C0081F399 /* ArticleRenderer.swift in Sources */, 65ED4040235DEF6C0081F399 /* GeneralPrefencesViewController.swift in Sources */, + 179DB1DFBCF9177104B12E0F /* AccountsNewsBlurWindowController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4226,6 +4237,7 @@ 849A97761ED9EC04007D329B /* TimelineCellAppearance.swift in Sources */, 849A977F1ED9EC42007D329B /* ArticleRenderer.swift in Sources */, 84C9FC7822629E1200D921D6 /* GeneralPrefencesViewController.swift in Sources */, + 179DB3CE822BFCC2D774D9F4 /* AccountsNewsBlurWindowController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/Account/NewsBlurAccountViewController.swift b/iOS/Account/NewsBlurAccountViewController.swift index 8a5cb2ddf..9810f8196 100644 --- a/iOS/Account/NewsBlurAccountViewController.swift +++ b/iOS/Account/NewsBlurAccountViewController.swift @@ -29,7 +29,7 @@ class NewsBlurAccountViewController: UITableViewController { usernameTextField.delegate = self passwordTextField.delegate = self - if let account = account, let credentials = try? account.retrieveCredentials(type: .basic) { + if let account = account, let credentials = try? account.retrieveCredentials(type: .newsBlurBasic) { actionButton.setTitle(NSLocalizedString("Update Credentials", comment: "Update Credentials"), for: .normal) actionButton.isEnabled = true usernameTextField.text = credentials.username @@ -90,7 +90,7 @@ class NewsBlurAccountViewController: UITableViewController { let credentials = Credentials(type: .newsBlurBasic, username: trimmedUsername, secret: password) Account.validateCredentials(type: .newsBlur, credentials: credentials) { result in - self.stopAnimtatingActivityIndicator() + self.stopAnimatingActivityIndicator() self.enableNavigation() switch result { @@ -105,7 +105,7 @@ class NewsBlurAccountViewController: UITableViewController { do { do { - try self.account?.removeCredentials(type: .basic) + try self.account?.removeCredentials(type: .newsBlurBasic) } catch {} try self.account?.storeCredentials(credentials) @@ -158,7 +158,7 @@ class NewsBlurAccountViewController: UITableViewController { activityIndicator.startAnimating() } - private func stopAnimtatingActivityIndicator() { + private func stopAnimatingActivityIndicator() { self.activityIndicator.isHidden = true self.activityIndicator.stopAnimating() }