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()
result.axis = .vertical
result.spacing = Values.smallSpacing
result.alignment = .center
return result
}()
@ -28,15 +29,16 @@ final class ReactionContainerView : UIView {
containerView.pin(to: self)
}
public func update(_ reactions: [(String, Int)]) {
public func update(_ reactions: [(String, (Int, Bool))]) {
for subview in containerView.arrangedSubviews {
containerView.removeArrangedSubview(subview)
}
let stackView = UIStackView()
stackView.axis = .horizontal
stackView.spacing = Values.smallSpacing
stackView.alignment = .center
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)
}
containerView.addArrangedSubview(stackView)

@ -3,14 +3,16 @@ import UIKit
final class ReactionView : UIView {
private let emoji: String
private let number: Int
private let hasCurrentUser: Bool
// MARK: Settings
private static let height: CGFloat = 22
// MARK: Lifecycle
init(emoji: String, number: Int) {
init(emoji: String, value: (Int, Bool)) {
self.emoji = emoji
self.number = number
self.number = value.0
self.hasCurrentUser = value.1
super.init(frame: CGRect.zero)
setUpViewHierarchy()
}
@ -29,7 +31,7 @@ final class ReactionView : UIView {
emojiLabel.font = .systemFont(ofSize: Values.verySmallFontSize)
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.textColor = Colors.text
@ -45,5 +47,10 @@ final class ReactionView : UIView {
set(.height, to: ReactionView.height)
backgroundColor = Colors.receivedMessageBackground
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) {
let reactions: OrderedDictionary<String, Int> = OrderedDictionary()
let reactions: OrderedDictionary<String, (Int, Bool)> = OrderedDictionary()
for reaction in message.reactions {
if let reactMessage = reaction as? ReactMessage, let emoji = reactMessage.emoji {
if let number = reactions.value(forKey: emoji) {
reactions.replace(key: emoji, value: number + 1)
let isSelfSend = (reactMessage.sender! == getUserHexEncodedPublicKey())
if let value = reactions.value(forKey: emoji) {
reactions.replace(key: emoji, value: (value.0 + 1, value.1 || isSelfSend))
} else {
reactions.append(key: emoji, value: 1)
reactions.append(key: emoji, value: (1, isSelfSend))
}
}
}
print("Ryan Test: \(reactions.orderedKeys)")
reactionContainerView.update(reactions.orderedItems)
}

Loading…
Cancel
Save