add border to reacts including current user

pull/638/head
Ryan Zhao 3 years ago
parent 9ae1f3e904
commit 3239aa521e

@ -4,6 +4,7 @@ final class ReactionContainerView : UIView {
let result = UIStackView() let result = UIStackView()
result.axis = .vertical result.axis = .vertical
result.spacing = Values.smallSpacing result.spacing = Values.smallSpacing
result.alignment = .center
return result return result
}() }()
@ -28,15 +29,16 @@ final class ReactionContainerView : UIView {
containerView.pin(to: self) containerView.pin(to: self)
} }
public func update(_ reactions: [(String, Int)]) { public func update(_ reactions: [(String, (Int, Bool))]) {
for subview in containerView.arrangedSubviews { for subview in containerView.arrangedSubviews {
containerView.removeArrangedSubview(subview) containerView.removeArrangedSubview(subview)
} }
let stackView = UIStackView() let stackView = UIStackView()
stackView.axis = .horizontal stackView.axis = .horizontal
stackView.spacing = Values.smallSpacing stackView.spacing = Values.smallSpacing
stackView.alignment = .center
for reaction in reactions { for reaction in reactions {
let reactionView = ReactionView(emoji: reaction.0, number: reaction.1) let reactionView = ReactionView(emoji: reaction.0, value: reaction.1)
stackView.addArrangedSubview(reactionView) stackView.addArrangedSubview(reactionView)
} }
containerView.addArrangedSubview(stackView) containerView.addArrangedSubview(stackView)

@ -3,14 +3,16 @@ import UIKit
final class ReactionView : UIView { final class ReactionView : UIView {
private let emoji: String private let emoji: String
private let number: Int private let number: Int
private let hasCurrentUser: Bool
// MARK: Settings // MARK: Settings
private static let height: CGFloat = 22 private static let height: CGFloat = 22
// MARK: Lifecycle // MARK: Lifecycle
init(emoji: String, number: Int) { init(emoji: String, value: (Int, Bool)) {
self.emoji = emoji self.emoji = emoji
self.number = number self.number = value.0
self.hasCurrentUser = value.1
super.init(frame: CGRect.zero) super.init(frame: CGRect.zero)
setUpViewHierarchy() setUpViewHierarchy()
} }
@ -29,7 +31,7 @@ final class ReactionView : UIView {
emojiLabel.font = .systemFont(ofSize: Values.verySmallFontSize) emojiLabel.font = .systemFont(ofSize: Values.verySmallFontSize)
let numberLabel = UILabel() let numberLabel = UILabel()
numberLabel.text = self.number < 1000 ? "\(number)" : String(format: "%.2f", Float(number) / 1000) + "k" numberLabel.text = self.number < 1000 ? "\(number)" : String(format: "%.1f", Float(number) / 1000) + "k"
numberLabel.font = .systemFont(ofSize: Values.verySmallFontSize) numberLabel.font = .systemFont(ofSize: Values.verySmallFontSize)
numberLabel.textColor = Colors.text numberLabel.textColor = Colors.text
@ -45,5 +47,10 @@ final class ReactionView : UIView {
set(.height, to: ReactionView.height) set(.height, to: ReactionView.height)
backgroundColor = Colors.receivedMessageBackground backgroundColor = Colors.receivedMessageBackground
layer.cornerRadius = ReactionView.height / 2 layer.cornerRadius = ReactionView.height / 2
if hasCurrentUser {
layer.borderWidth = 1
layer.borderColor = Colors.accent.cgColor
}
} }
} }

@ -457,17 +457,17 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate {
} }
private func populateReaction(for viewItem: ConversationViewItem, message: TSMessage) { private func populateReaction(for viewItem: ConversationViewItem, message: TSMessage) {
let reactions: OrderedDictionary<String, Int> = OrderedDictionary() let reactions: OrderedDictionary<String, (Int, Bool)> = OrderedDictionary()
for reaction in message.reactions { for reaction in message.reactions {
if let reactMessage = reaction as? ReactMessage, let emoji = reactMessage.emoji { if let reactMessage = reaction as? ReactMessage, let emoji = reactMessage.emoji {
if let number = reactions.value(forKey: emoji) { let isSelfSend = (reactMessage.sender! == getUserHexEncodedPublicKey())
reactions.replace(key: emoji, value: number + 1) if let value = reactions.value(forKey: emoji) {
reactions.replace(key: emoji, value: (value.0 + 1, value.1 || isSelfSend))
} else { } else {
reactions.append(key: emoji, value: 1) reactions.append(key: emoji, value: (1, isSelfSend))
} }
} }
} }
print("Ryan Test: \(reactions.orderedKeys)")
reactionContainerView.update(reactions.orderedItems) reactionContainerView.update(reactions.orderedItems)
} }

Loading…
Cancel
Save