do not show number when there is only 1 react per emoji in 1-1 convos

pull/638/head
Ryan Zhao 3 years ago
parent a572c4274b
commit c33680fe70

@ -18,6 +18,7 @@ final class ReactionContainerView : UIView {
private var showingAllReactions = false private var showingAllReactions = false
private var isOutgoingMessage = false private var isOutgoingMessage = false
private var showNumbers = true
private var maxEmojisPerLine = isIPhone6OrSmaller ? 5 : 6 private var maxEmojisPerLine = isIPhone6OrSmaller ? 5 : 6
var reactions: [(String, (Int, Bool))] = [] var reactions: [(String, (Int, Bool))] = []
@ -57,9 +58,10 @@ final class ReactionContainerView : UIView {
mainStackView.pin(to: self) mainStackView.pin(to: self)
} }
public func update(_ reactions: [(String, (Int, Bool))], isOutgoingMessage: Bool) { public func update(_ reactions: [(String, (Int, Bool))], isOutgoingMessage: Bool, showNumbers: Bool) {
self.reactions = reactions self.reactions = reactions
self.isOutgoingMessage = isOutgoingMessage self.isOutgoingMessage = isOutgoingMessage
self.showNumbers = showNumbers
prepareForUpdate() prepareForUpdate()
if showingAllReactions { if showingAllReactions {
updateAllReactions() updateAllReactions()
@ -93,7 +95,7 @@ final class ReactionContainerView : UIView {
} }
for reaction in displayedReactions { for reaction in displayedReactions {
let reactionView = ReactionButton(emoji: reaction.0, value: reaction.1.0, showBorder: reaction.1.1) let reactionView = ReactionButton(emoji: reaction.0, value: reaction.1.0, showBorder: reaction.1.1, showNumber: showNumbers)
stackView.addArrangedSubview(reactionView) stackView.addArrangedSubview(reactionView)
reactionViews.append(reactionView) reactionViews.append(reactionView)
} }
@ -131,13 +133,13 @@ final class ReactionContainerView : UIView {
public func showAllEmojis() { public func showAllEmojis() {
guard !showingAllReactions else { return } guard !showingAllReactions else { return }
showingAllReactions = true showingAllReactions = true
update(reactions, isOutgoingMessage: isOutgoingMessage) update(reactions, isOutgoingMessage: isOutgoingMessage, showNumbers: showNumbers)
} }
public func showLessEmojis() { public func showLessEmojis() {
guard showingAllReactions else { return } guard showingAllReactions else { return }
showingAllReactions = false showingAllReactions = false
update(reactions, isOutgoingMessage: isOutgoingMessage) update(reactions, isOutgoingMessage: isOutgoingMessage, showNumbers: showNumbers)
} }
} }

@ -4,6 +4,7 @@ final class ReactionButton : UIView {
let emoji: String let emoji: String
let number: Int let number: Int
let showBorder: Bool let showBorder: Bool
let showNumber: Bool
// MARK: Settings // MARK: Settings
private var height: CGFloat = 22 private var height: CGFloat = 22
@ -12,10 +13,11 @@ final class ReactionButton : UIView {
private var spacing: CGFloat = Values.verySmallSpacing private var spacing: CGFloat = Values.verySmallSpacing
// MARK: Lifecycle // MARK: Lifecycle
init(emoji: String, value: Int, showBorder: Bool = false) { init(emoji: String, value: Int, showBorder: Bool = false, showNumber: Bool = true) {
self.emoji = emoji self.emoji = emoji
self.number = value self.number = value
self.showBorder = showBorder self.showBorder = showBorder
self.showNumber = showNumber
super.init(frame: CGRect.zero) super.init(frame: CGRect.zero)
setUpViewHierarchy() setUpViewHierarchy()
} }
@ -33,12 +35,7 @@ final class ReactionButton : UIView {
emojiLabel.text = emoji emojiLabel.text = emoji
emojiLabel.font = .systemFont(ofSize: fontSize) emojiLabel.font = .systemFont(ofSize: fontSize)
let numberLabel = UILabel() let stackView = UIStackView(arrangedSubviews: [ emojiLabel ])
numberLabel.text = self.number < 1000 ? "\(number)" : String(format: "%.1f", Float(number) / 1000) + "k"
numberLabel.font = .systemFont(ofSize: fontSize)
numberLabel.textColor = Colors.text
let stackView = UIStackView(arrangedSubviews: [ emojiLabel, numberLabel ])
stackView.axis = .horizontal stackView.axis = .horizontal
stackView.spacing = spacing stackView.spacing = spacing
stackView.alignment = .center stackView.alignment = .center
@ -54,6 +51,14 @@ final class ReactionButton : UIView {
if showBorder { if showBorder {
self.addBorder(with: Colors.accent) self.addBorder(with: Colors.accent)
} }
if showNumber || self.number > 1 {
let numberLabel = UILabel()
numberLabel.text = self.number < 1000 ? "\(number)" : String(format: "%.1f", Float(number) / 1000) + "k"
numberLabel.font = .systemFont(ofSize: fontSize)
numberLabel.textColor = Colors.text
stackView.addArrangedSubview(numberLabel)
}
} }
} }

@ -467,7 +467,7 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate {
} }
} }
} }
reactionContainerView.update(reactions.orderedItems, isOutgoingMessage: direction == .outgoing) reactionContainerView.update(reactions.orderedItems, isOutgoingMessage: direction == .outgoing, showNumbers: thread!.isGroupThread())
} }
override func layoutSubviews() { override func layoutSubviews() {

Loading…
Cancel
Save