From 96d9c3f65bfe6d1a83dc08a4e74897e551d57878 Mon Sep 17 00:00:00 2001 From: Rizwan Mohamed Ibrahim Date: Sat, 27 Oct 2018 20:12:49 +0530 Subject: [PATCH 1/2] [FIX] Reaction emoji updates on split view --- .../DefaultReactionDetailController.swift | 8 +++++++ Classes/Settings/Settings.storyboard | 23 +----------------- Classes/Settings/SettingsViewController.swift | 24 +++++++++++++++---- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/Classes/Settings/DefaultReactionDetailController.swift b/Classes/Settings/DefaultReactionDetailController.swift index b6ec7d160..d788a6043 100644 --- a/Classes/Settings/DefaultReactionDetailController.swift +++ b/Classes/Settings/DefaultReactionDetailController.swift @@ -8,6 +8,10 @@ import UIKit +protocol DefaultReactionListener { + func didUpdateDefaultReaction() +} + class DefaultReactionDetailController: UITableViewController { @IBOutlet var thumbsUpCell: UITableViewCell! @@ -18,6 +22,8 @@ class DefaultReactionDetailController: UITableViewController { @IBOutlet var heartCell: UITableViewCell! @IBOutlet var enabledSwitch: UISwitch! + var listener: DefaultReactionListener? + override func viewDidLoad() { super.viewDidLoad() checkCurrentDefault() @@ -95,10 +101,12 @@ class DefaultReactionDetailController: UITableViewController { private func updateDefault(reaction: ReactionContent) { UserDefaults.standard.setDefault(reaction: reaction) checkCurrentDefault() + listener?.didUpdateDefaultReaction() } private func disableReaction() { UserDefaults.standard.disableReaction() + listener?.didUpdateDefaultReaction() } private func updateSections() { diff --git a/Classes/Settings/Settings.storyboard b/Classes/Settings/Settings.storyboard index bbfb09fa5..8b592e44d 100644 --- a/Classes/Settings/Settings.storyboard +++ b/Classes/Settings/Settings.storyboard @@ -185,9 +185,6 @@ - - - @@ -454,7 +451,7 @@ - + @@ -703,24 +700,6 @@ - - - - - - - - - - - - - - - - - - diff --git a/Classes/Settings/SettingsViewController.swift b/Classes/Settings/SettingsViewController.swift index 33da7442d..6e5f09948 100644 --- a/Classes/Settings/SettingsViewController.swift +++ b/Classes/Settings/SettingsViewController.swift @@ -12,7 +12,7 @@ import GitHubSession import Squawk final class SettingsViewController: UITableViewController, -NewIssueTableViewControllerDelegate { +NewIssueTableViewControllerDelegate, DefaultReactionListener { // must be injected var sessionManager: GitHubSessionManager! @@ -62,8 +62,7 @@ NewIssueTableViewControllerDelegate { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - defaultReactionLabel.text = ReactionContent.defaultReaction?.emoji - ?? NSLocalizedString("Off", comment: "") + updateDefaultReaction() rz_smoothlyDeselectRows(tableView: tableView) accountsCell.detailTextLabel?.text = sessionManager.focusedUserSession?.username ?? Constants.Strings.unknown @@ -126,6 +125,11 @@ NewIssueTableViewControllerDelegate { // MARK: Private API + func updateDefaultReaction() { + defaultReactionLabel.text = ReactionContent.defaultReaction?.emoji + ?? NSLocalizedString("Off", comment: "") + } + func onReviewAccess() { guard let url = URL(string: "https://github.com/settings/connections/applications/\(Secrets.GitHub.clientId)") else { fatalError("Should always create GitHub issue URL") } @@ -191,7 +195,13 @@ NewIssueTableViewControllerDelegate { } func onSetDefaultReaction() { - //showDefaultReactionMenu() + let storyboard = UIStoryboard(name: "Settings", bundle: nil) + guard let viewController = storyboard.instantiateViewController(withIdentifier: "DefaultReactionDetailController") as? DefaultReactionDetailController else { + fatalError("Cannot instantiate DefaultReactionDetailController instance") + } + viewController.listener = self + let navController = UINavigationController(rootViewController: viewController) + showDetailViewController(navController, sender: self) } func onTryTestFlightBeta() { @@ -288,4 +298,10 @@ NewIssueTableViewControllerDelegate { let navigation = UINavigationController(rootViewController: issuesViewController) showDetailViewController(navigation, sender: nil) } + + // MARK: DefaultReactionListener + + func didUpdateDefaultReaction() { + updateDefaultReaction() + } } From 7f00ed1ba42b72f56ad74505a6f2b948c2d6219a Mon Sep 17 00:00:00 2001 From: Rizwan Mohamed Ibrahim Date: Sun, 28 Oct 2018 11:22:06 +0530 Subject: [PATCH 2/2] [FIX] Change listener to delegate --- Classes/Settings/DefaultReactionDetailController.swift | 8 ++++---- Classes/Settings/SettingsViewController.swift | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Classes/Settings/DefaultReactionDetailController.swift b/Classes/Settings/DefaultReactionDetailController.swift index d788a6043..eb4647d6a 100644 --- a/Classes/Settings/DefaultReactionDetailController.swift +++ b/Classes/Settings/DefaultReactionDetailController.swift @@ -8,7 +8,7 @@ import UIKit -protocol DefaultReactionListener { +protocol DefaultReactionDelegate: class { func didUpdateDefaultReaction() } @@ -22,7 +22,7 @@ class DefaultReactionDetailController: UITableViewController { @IBOutlet var heartCell: UITableViewCell! @IBOutlet var enabledSwitch: UISwitch! - var listener: DefaultReactionListener? + weak var delegate: DefaultReactionDelegate? override func viewDidLoad() { super.viewDidLoad() @@ -101,12 +101,12 @@ class DefaultReactionDetailController: UITableViewController { private func updateDefault(reaction: ReactionContent) { UserDefaults.standard.setDefault(reaction: reaction) checkCurrentDefault() - listener?.didUpdateDefaultReaction() + delegate?.didUpdateDefaultReaction() } private func disableReaction() { UserDefaults.standard.disableReaction() - listener?.didUpdateDefaultReaction() + delegate?.didUpdateDefaultReaction() } private func updateSections() { diff --git a/Classes/Settings/SettingsViewController.swift b/Classes/Settings/SettingsViewController.swift index 6e5f09948..c38c1546f 100644 --- a/Classes/Settings/SettingsViewController.swift +++ b/Classes/Settings/SettingsViewController.swift @@ -12,7 +12,7 @@ import GitHubSession import Squawk final class SettingsViewController: UITableViewController, -NewIssueTableViewControllerDelegate, DefaultReactionListener { +NewIssueTableViewControllerDelegate, DefaultReactionDelegate { // must be injected var sessionManager: GitHubSessionManager! @@ -199,7 +199,7 @@ NewIssueTableViewControllerDelegate, DefaultReactionListener { guard let viewController = storyboard.instantiateViewController(withIdentifier: "DefaultReactionDetailController") as? DefaultReactionDetailController else { fatalError("Cannot instantiate DefaultReactionDetailController instance") } - viewController.listener = self + viewController.delegate = self let navController = UINavigationController(rootViewController: viewController) showDetailViewController(navController, sender: self) } @@ -299,7 +299,7 @@ NewIssueTableViewControllerDelegate, DefaultReactionListener { showDetailViewController(navigation, sender: nil) } - // MARK: DefaultReactionListener + // MARK: DefaultReactionDelegate func didUpdateDefaultReaction() { updateDefaultReaction()