Handle different heart emojis

This commit is contained in:
Ali 2020-05-16 14:17:56 +04:00
parent fbe83da178
commit f8d0f6a233

View File

@ -579,18 +579,18 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
var reactionItems: [ReactionContextItem] = [] var reactionItems: [ReactionContextItem] = []
var hasLike = false var hasLike = false
let heart = "❤️" let hearts: [String] = ["", "❤️"]
for attribute in messages[0].attributes { for attribute in messages[0].attributes {
if let attribute = attribute as? ReactionsMessageAttribute { if let attribute = attribute as? ReactionsMessageAttribute {
for reaction in attribute.reactions { for reaction in attribute.reactions {
if reaction.value == heart { if hearts.contains(reaction.value) {
if reaction.isSelected { if reaction.isSelected {
hasLike = true hasLike = true
} }
} }
} }
} else if let attribute = attribute as? PendingReactionsMessageAttribute { } else if let attribute = attribute as? PendingReactionsMessageAttribute {
if attribute.value == heart { if let value = attribute.value, hearts.contains(value) {
hasLike = true hasLike = true
} }
} }
@ -618,18 +618,18 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
guard let strongSelf = self, let message = updatedMessages.first else { guard let strongSelf = self, let message = updatedMessages.first else {
return return
} }
let heart = "❤️" let hearts: [String] = ["", "❤️"]
strongSelf.chatDisplayNode.historyNode.forEachItemNode { itemNode in strongSelf.chatDisplayNode.historyNode.forEachItemNode { itemNode in
if let itemNode = itemNode as? ChatMessageItemView, let item = itemNode.item { if let itemNode = itemNode as? ChatMessageItemView, let item = itemNode.item {
if item.message.id == message.id { if item.message.id == message.id {
switch value { switch value {
case .like: case .like:
itemNode.awaitingAppliedReaction = (heart, { [weak itemNode] in itemNode.awaitingAppliedReaction = (hearts[0], { [weak itemNode] in
guard let controller = controller else { guard let controller = controller else {
return return
} }
if let itemNode = itemNode, let (targetEmptyNode, targetFilledNode) = itemNode.targetReactionNode(value: heart) { if let itemNode = itemNode, let (targetEmptyNode, targetFilledNode) = itemNode.targetReactionNode(value: hearts[0]) {
controller.dismissWithReaction(value: heart, targetEmptyNode: targetEmptyNode, targetFilledNode: targetFilledNode, hideNode: true, completion: { controller.dismissWithReaction(value: hearts[0], targetEmptyNode: targetEmptyNode, targetFilledNode: targetFilledNode, hideNode: true, completion: {
}) })
} else { } else {
controller.dismiss() controller.dismiss()
@ -648,7 +648,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
} }
switch value { switch value {
case .like: case .like:
let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: message.id, reaction: heart).start() let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: message.id, reaction: hearts[0]).start()
case .unlike: case .unlike:
let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: message.id, reaction: nil).start() let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: message.id, reaction: nil).start()
} }
@ -1492,18 +1492,18 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
return .reply return .reply
} else if let channel = message.peers[message.id.peerId] as? TelegramChannel, case .broadcast = channel.info { } else if let channel = message.peers[message.id.peerId] as? TelegramChannel, case .broadcast = channel.info {
var hasLike = false var hasLike = false
let heart = "❤️" let hearts: [String] = ["", "❤️"]
for attribute in message.attributes { for attribute in message.attributes {
if let attribute = attribute as? ReactionsMessageAttribute { if let attribute = attribute as? ReactionsMessageAttribute {
for reaction in attribute.reactions { for reaction in attribute.reactions {
if reaction.value == heart { if hearts.contains(reaction.value) {
if reaction.isSelected { if reaction.isSelected {
hasLike = true hasLike = true
} }
} }
} }
} else if let attribute = attribute as? PendingReactionsMessageAttribute { } else if let attribute = attribute as? PendingReactionsMessageAttribute {
if attribute.value == heart { if let value = attribute.value, hearts.contains(value) {
hasLike = true hasLike = true
} }
} }
@ -1949,7 +1949,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
return return
} }
let heart = "" let heart = ""
if isLiked { if isLiked {
let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: messageId, reaction: heart).start() let _ = updateMessageReactionsInteractively(postbox: strongSelf.context.account.postbox, messageId: messageId, reaction: heart).start()
} else { } else {