diff --git a/iOS/Settings/AddAccountViewController.swift b/iOS/Settings/AddAccountViewController.swift
index 54cfef989..c4e7a6285 100644
--- a/iOS/Settings/AddAccountViewController.swift
+++ b/iOS/Settings/AddAccountViewController.swift
@@ -10,7 +10,7 @@ import Account
import UIKit
protocol AddAccountDismissDelegate: UIViewController {
- func dismiss(_ viewController: UIViewController)
+ func dismiss()
}
class AddAccountViewController: UITableViewController, AddAccountDismissDelegate {
@@ -40,8 +40,7 @@ class AddAccountViewController: UITableViewController, AddAccountDismissDelegate
}
}
- func dismiss(_ viewController: UIViewController) {
- viewController.dismiss(animated: true, completion: nil)
+ func dismiss() {
navigationController?.popViewController(animated: false)
}
diff --git a/iOS/Settings/AddLocalAccountViewController.swift b/iOS/Settings/AddLocalAccountViewController.swift
index efa58085d..c89569eaf 100644
--- a/iOS/Settings/AddLocalAccountViewController.swift
+++ b/iOS/Settings/AddLocalAccountViewController.swift
@@ -25,13 +25,15 @@ class AddLocalAccountViewController: UIViewController {
}
@IBAction func cancel(_ sender: Any) {
- delegate?.dismiss(self)
+ dismiss(animated: true, completion: nil)
+ delegate?.dismiss()
}
@IBAction func addAccountTapped(_ sender: Any) {
let account = AccountManager.shared.createAccount(type: .onMyMac)
account.name = nameTextField.text
- delegate?.dismiss(self)
+ dismiss(animated: true, completion: nil)
+ delegate?.dismiss()
}
}
diff --git a/iOS/Settings/DetailAccountViewController.swift b/iOS/Settings/DetailAccountViewController.swift
index 11deef01e..e44fc0099 100644
--- a/iOS/Settings/DetailAccountViewController.swift
+++ b/iOS/Settings/DetailAccountViewController.swift
@@ -37,15 +37,26 @@ class DetailAccountViewController: UITableViewController {
extension DetailAccountViewController {
override func numberOfSections(in tableView: UITableView) -> Int {
+
+ guard let account = account else { return 0 }
+
if account == AccountManager.shared.defaultAccount {
return 1
+ } else if account.type == .onMyMac {
+ return 2
} else {
return super.numberOfSections(in: tableView)
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = super.tableView(tableView, cellForRowAt: indexPath)
+
+ let cell: UITableViewCell
+ if indexPath.section == 1, let account = account, account.type == .onMyMac {
+ cell = super.tableView(tableView, cellForRowAt: IndexPath(row: 0, section: 2))
+ } else {
+ cell = super.tableView(tableView, cellForRowAt: indexPath)
+ }
let bgView = UIView()
bgView.backgroundColor = AppAssets.selectionBackgroundColor
@@ -54,7 +65,7 @@ extension DetailAccountViewController {
}
override func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {
- if indexPath.section == 1 {
+ if indexPath.section > 0 {
return true
}
@@ -62,8 +73,19 @@ extension DetailAccountViewController {
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- if indexPath.section == 1 {
- deleteAccount()
+ if let account = account, account.type == .onMyMac {
+ if indexPath.section == 1 {
+ deleteAccount()
+ }
+ } else {
+ switch indexPath.section {
+ case 1:
+ credentials()
+ case 2:
+ deleteAccount()
+ default:
+ break
+ }
}
tableView.selectRow(at: nil, animated: true, scrollPosition: .none)
@@ -73,6 +95,19 @@ extension DetailAccountViewController {
private extension DetailAccountViewController {
+ func credentials() {
+ guard let account = account else { return }
+ switch account.type {
+ case .feedbin:
+ let navController = UIStoryboard.settings.instantiateViewController(withIdentifier: "FeedbinAccountNavigationViewController") as! UINavigationController
+ let addViewController = navController.topViewController as! FeedbinAccountViewController
+ addViewController.account = account
+ present(navController, animated: true)
+ default:
+ break
+ }
+ }
+
func deleteAccount() {
let title = NSLocalizedString("Delete Account", comment: "Delete Account")
let message = NSLocalizedString("Are you sure you want to delete this account? This can not be undone.", comment: "Delete Account")
diff --git a/iOS/Settings/FeedbinAccountViewController.swift b/iOS/Settings/FeedbinAccountViewController.swift
index d826c5086..c12d3d941 100644
--- a/iOS/Settings/FeedbinAccountViewController.swift
+++ b/iOS/Settings/FeedbinAccountViewController.swift
@@ -16,7 +16,7 @@ class FeedbinAccountViewController: UIViewController {
@IBOutlet weak var cancelBarButtonItem: UIBarButtonItem!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
- @IBOutlet weak var addAccountButton: UIButton!
+ @IBOutlet weak var actionButton: UIButton!
@IBOutlet weak var errorMessageLabel: UILabel!
@@ -31,18 +31,22 @@ class FeedbinAccountViewController: UIViewController {
passwordTextField.delegate = self
if let account = account, let credentials = try? account.retrieveBasicCredentials() {
+ actionButton.setTitle(NSLocalizedString("Update Credentials", comment: "Update Credentials"), for: .normal)
if case .basic(let username, let password) = credentials {
emailTextField.text = username
passwordTextField.text = password
}
+ } else {
+ actionButton.setTitle(NSLocalizedString("Add Account", comment: "Update Credentials"), for: .normal)
}
}
@IBAction func cancel(_ sender: Any) {
- delegate?.dismiss(self)
+ dismiss(animated: true, completion: nil)
+ delegate?.dismiss()
}
- @IBAction func addAccountTapped(_ sender: Any) {
+ @IBAction func action(_ sender: Any) {
self.errorMessageLabel.text = nil
guard emailTextField.text != nil && passwordTextField.text != nil else {
@@ -56,8 +60,7 @@ class FeedbinAccountViewController: UIViewController {
// When you fill in the email address via auto-complete it adds extra whitespace
let emailAddress = emailTextField.text?.trimmingCharacters(in: .whitespaces)
let credentials = Credentials.basic(username: emailAddress ?? "", password: passwordTextField.text ?? "")
- Account.validateCredentials(type: .feedbin, credentials: credentials) { [weak self] result in
- guard let self = self else { return }
+ Account.validateCredentials(type: .feedbin, credentials: credentials) { result in
self.stopAnimtatingActivityIndicator()
self.enableNavigation()
@@ -73,7 +76,9 @@ class FeedbinAccountViewController: UIViewController {
do {
- try self.account?.removeBasicCredentials()
+ do {
+ try self.account?.removeBasicCredentials()
+ } catch {}
try self.account?.storeCredentials(credentials)
if newAccount {
@@ -87,7 +92,8 @@ class FeedbinAccountViewController: UIViewController {
}
}
- self.delegate?.dismiss(self)
+ self.dismiss(animated: true, completion: nil)
+ self.delegate?.dismiss()
} catch {
self.errorMessageLabel.text = NSLocalizedString("Keychain error while storing credentials.", comment: "Credentials Error")
}
@@ -103,12 +109,12 @@ class FeedbinAccountViewController: UIViewController {
private func enableNavigation() {
self.cancelBarButtonItem.isEnabled = true
- self.addAccountButton.isEnabled = true
+ self.actionButton.isEnabled = true
}
private func disableNavigation() {
cancelBarButtonItem.isEnabled = false
- addAccountButton.isEnabled = false
+ actionButton.isEnabled = false
}
private func startAnimatingActivityIndicator() {
diff --git a/iOS/Settings/Settings.storyboard b/iOS/Settings/Settings.storyboard
index 5afc57adf..60212b3b2 100644
--- a/iOS/Settings/Settings.storyboard
+++ b/iOS/Settings/Settings.storyboard
@@ -368,7 +368,31 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -376,8 +400,8 @@
-
-
+
+
@@ -420,7 +444,7 @@
-
+
@@ -537,7 +561,7 @@
-
+
@@ -658,10 +682,9 @@
-
+
-
-
+
@@ -712,8 +735,8 @@
+
-