From 5cfd662ab34505ae21591a951ab78c76253f8ee6 Mon Sep 17 00:00:00 2001 From: Ehud Adler Date: Tue, 31 Jul 2018 07:52:59 -0400 Subject: [PATCH 1/8] Addresses #2013 --- .../IssueCommentSectionController.swift | 2 +- .../Reactions/Defaults+Reaction.swift | 25 ++++++ .../ReactionContent+ReactionType.swift | 4 + Classes/Settings/Settings.storyboard | 33 +++++++- Classes/Settings/SettingsViewController.swift | 79 ++++++++++++++++++- Classes/Views/StyledTableCell.swift | 5 +- 6 files changed, 141 insertions(+), 7 deletions(-) create mode 100644 Classes/Issues/Comments/Reactions/Defaults+Reaction.swift diff --git a/Classes/Issues/Comments/IssueCommentSectionController.swift b/Classes/Issues/Comments/IssueCommentSectionController.swift index f802113b4..712bd74e9 100644 --- a/Classes/Issues/Comments/IssueCommentSectionController.swift +++ b/Classes/Issues/Comments/IssueCommentSectionController.swift @@ -437,7 +437,7 @@ final class IssueCommentSectionController: // MARK: IssueCommentDoubleTapDelegate func didDoubleTap(cell: IssueCommentBaseCell) { - let reaction = ReactionContent.thumbsUp + let reaction = ReactionContent.defaultReaction guard let reactions = reactionMutation ?? self.object?.reactions, !reactions.viewerDidReact(reaction: reaction) else { return } diff --git a/Classes/Issues/Comments/Reactions/Defaults+Reaction.swift b/Classes/Issues/Comments/Reactions/Defaults+Reaction.swift new file mode 100644 index 000000000..12b742a25 --- /dev/null +++ b/Classes/Issues/Comments/Reactions/Defaults+Reaction.swift @@ -0,0 +1,25 @@ +// +// Defaults+Reaction.swift +// Freetime +// +// Created by Ehud Adler on 7/30/18. +// Copyright © 2018 Ryan Nystrom. All rights reserved. +// + +extension UserDefaults { + // Stores ReactionContent in string form but + // accepts and returns in original form + static func setDefault(reaction: ReactionContent) + { + standard.set(reaction.emoji, forKey: "default.reaction") + } + + static var getDefaultReaction: ReactionContent + { + guard let reactionRaw: ReactionContent.RawValue = standard.string(forKey: "default.reaction") + else { return ReactionContent.thumbsUp} + let reaction = ReactionContent.init(rawValue: reactionRaw) + return reaction ?? ReactionContent.thumbsUp + } + +} diff --git a/Classes/Issues/Comments/Reactions/ReactionContent+ReactionType.swift b/Classes/Issues/Comments/Reactions/ReactionContent+ReactionType.swift index 86b0854d8..3f408dea2 100644 --- a/Classes/Issues/Comments/Reactions/ReactionContent+ReactionType.swift +++ b/Classes/Issues/Comments/Reactions/ReactionContent+ReactionType.swift @@ -19,4 +19,8 @@ extension ReactionContent { case .thumbsDown: return "👎" } } + + static var defaultReaction: ReactionContent { + return UserDefaults.getDefaultReaction + } } diff --git a/Classes/Settings/Settings.storyboard b/Classes/Settings/Settings.storyboard index b8dfa4a90..365352716 100644 --- a/Classes/Settings/Settings.storyboard +++ b/Classes/Settings/Settings.storyboard @@ -20,7 +20,7 @@ - + - + @@ -413,14 +413,14 @@ - + @@ -430,14 +430,14 @@ - + @@ -447,14 +447,14 @@ - + @@ -464,14 +464,14 @@ - + @@ -481,14 +481,14 @@ - + @@ -498,8 +498,8 @@ From 375f28cdd5d4292372f466365d7acd0e67024c73 Mon Sep 17 00:00:00 2001 From: Ehud Adler Date: Sun, 5 Aug 2018 13:09:09 -0400 Subject: [PATCH 7/8] UX fixes. Migrated back into GitHawk Section Removed None and replaced it with a switch --- .../DefaultReactionDetailController.swift | 38 +++-- Classes/Settings/Settings.storyboard | 144 ++++++++++-------- 2 files changed, 107 insertions(+), 75 deletions(-) diff --git a/Classes/Settings/DefaultReactionDetailController.swift b/Classes/Settings/DefaultReactionDetailController.swift index 2b6910adc..acba61aab 100644 --- a/Classes/Settings/DefaultReactionDetailController.swift +++ b/Classes/Settings/DefaultReactionDetailController.swift @@ -16,16 +16,19 @@ class DefaultReactionDetailController: UITableViewController { @IBOutlet var hoorayCell: UITableViewCell! @IBOutlet var confusedCell: UITableViewCell! @IBOutlet var heartCell: UITableViewCell! - @IBOutlet var noneCell: UITableViewCell! + @IBOutlet var enabledSwitch: UISwitch! - // let reactionList override func viewDidLoad() { super.viewDidLoad() checkCurrentDefault() + tableView.reloadData() + } + + override func numberOfSections(in tableView: UITableView) -> Int { + return enabledSwitch.isOn ? 2 : 1 } private func checkCurrentDefault() { - print(ReactionContent.defaultReaction) switch (ReactionContent.defaultReaction) { case ReactionContent.thumbsUp: @@ -41,7 +44,7 @@ class DefaultReactionDetailController: UITableViewController { case ReactionContent.heart: updateCells(cell: heartCell) case ReactionContent.__unknown("Disabled"): - updateCells(cell: noneCell) + enabledSwitch.isOn = false default: updateCells(cell: thumbsUpCell) } @@ -59,7 +62,6 @@ class DefaultReactionDetailController: UITableViewController { hoorayCell.accessoryType = .none confusedCell.accessoryType = .none heartCell.accessoryType = .none - noneCell.accessoryType = .none // Set proper cell to check cell.accessoryType = .checkmark @@ -84,17 +86,33 @@ class DefaultReactionDetailController: UITableViewController { updateDefaultReaction(.confused) case heartCell: updateDefaultReaction(.heart) - case noneCell: - updateDefaultReaction(.__unknown("Disabled")) default: break } } - - func updateDefaultReaction(_ reaction: ReactionContent) { + + @IBAction func toggleDefaultReaction(_ sender: Any) { + if(enabledSwitch.isOn) { + updateDefaultReaction(.thumbsUp) + } else { + updateDefaultReaction(.__unknown("Disabled")) + } + updateSections() + } + + private func updateDefaultReaction(_ reaction: ReactionContent) { UserDefaults.setDefault(reaction: reaction) checkCurrentDefault() } - + + private func updateSections() { + tableView.performBatchUpdates({ + if(enabledSwitch.isOn) { + self.tableView.insertSections(IndexSet(integer: 1), with: .top) + } else { + self.tableView.deleteSections(IndexSet(integer: 1), with: .top) + } + }, completion: nil) + } } diff --git a/Classes/Settings/Settings.storyboard b/Classes/Settings/Settings.storyboard index 455db5da8..c361e06cc 100644 --- a/Classes/Settings/Settings.storyboard +++ b/Classes/Settings/Settings.storyboard @@ -20,7 +20,7 @@ - + - + + + + + + + + + + + + + + + + + @@ -203,7 +231,7 @@ - + @@ -232,7 +260,7 @@ - + @@ -261,7 +289,7 @@ - + @@ -289,42 +317,10 @@ - - - - - - - - - - - - - - - - - - - - - + @@ -374,7 +370,7 @@ - + @@ -384,10 +380,45 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -404,7 +435,7 @@ - + @@ -421,7 +452,7 @@ - + @@ -438,7 +469,7 @@ - + @@ -455,7 +486,7 @@ - + @@ -472,7 +503,7 @@ - + @@ -488,23 +519,6 @@ - - - - - - - - - - - @@ -513,13 +527,13 @@ - + + - From 0f20a8642153385fa50ce41e535ba2bfc05fa064 Mon Sep 17 00:00:00 2001 From: Ehud Adler Date: Mon, 6 Aug 2018 12:52:16 -0400 Subject: [PATCH 8/8] Switched Set Double Tap Reaction -> Double Tap Reaction --- Classes/Settings/Settings.storyboard | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/Settings/Settings.storyboard b/Classes/Settings/Settings.storyboard index c361e06cc..f37226648 100644 --- a/Classes/Settings/Settings.storyboard +++ b/Classes/Settings/Settings.storyboard @@ -168,8 +168,8 @@ -