diff --git a/submodules/AvatarNode/Sources/AvatarNode.swift b/submodules/AvatarNode/Sources/AvatarNode.swift index 3c0704b3f8..709b9b880a 100644 --- a/submodules/AvatarNode/Sources/AvatarNode.swift +++ b/submodules/AvatarNode/Sources/AvatarNode.swift @@ -94,8 +94,12 @@ private func calculateColors(context: AccountContext?, explicitColorIndex: Int?, colors = AvatarNode.repostColors } else if case .repliesIcon = icon { colors = AvatarNode.savedMessagesColors - } else if case .anonymousSavedMessagesIcon = icon { - colors = AvatarNode.savedMessagesColors + } else if case let .anonymousSavedMessagesIcon(isColored) = icon { + if isColored { + colors = AvatarNode.savedMessagesColors + } else { + colors = AvatarNode.grayscaleColors + } } else if case .myNotesIcon = icon { colors = AvatarNode.savedMessagesColors } else if case .editAvatarIcon = icon, let theme { @@ -178,7 +182,7 @@ private enum AvatarNodeIcon: Equatable { case none case savedMessagesIcon case repliesIcon - case anonymousSavedMessagesIcon + case anonymousSavedMessagesIcon(isColored: Bool) case myNotesIcon case archivedChatsIcon(hiddenByDefault: Bool) case editAvatarIcon @@ -192,7 +196,7 @@ public enum AvatarNodeImageOverride: Equatable { case image(TelegramMediaImageRepresentation) case savedMessagesIcon case repliesIcon - case anonymousSavedMessagesIcon + case anonymousSavedMessagesIcon(isColored: Bool) case myNotesIcon case archivedChatsIcon(hiddenByDefault: Bool) case editAvatarIcon(forceNone: Bool) @@ -506,9 +510,9 @@ public final class AvatarNode: ASDisplayNode { case .repliesIcon: representation = nil icon = .repliesIcon - case .anonymousSavedMessagesIcon: + case let .anonymousSavedMessagesIcon(isColored): representation = nil - icon = .anonymousSavedMessagesIcon + icon = .anonymousSavedMessagesIcon(isColored: isColored) case .myNotesIcon: representation = nil icon = .myNotesIcon @@ -681,9 +685,9 @@ public final class AvatarNode: ASDisplayNode { case .repliesIcon: representation = nil icon = .repliesIcon - case .anonymousSavedMessagesIcon: + case let .anonymousSavedMessagesIcon(isColored): representation = nil - icon = .anonymousSavedMessagesIcon + icon = .anonymousSavedMessagesIcon(isColored: isColored) case .myNotesIcon: representation = nil icon = .myNotesIcon diff --git a/submodules/ChatListUI/Sources/Node/ChatListItem.swift b/submodules/ChatListUI/Sources/Node/ChatListItem.swift index cdd46823e7..201658521d 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItem.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItem.swift @@ -1661,7 +1661,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode { } else if peer.id.isReplies { overrideImage = .repliesIcon } else if peer.id.isAnonymousSavedMessages { - overrideImage = .anonymousSavedMessagesIcon + overrideImage = .anonymousSavedMessagesIcon(isColored: true) } else if peer.id == item.context.account.peerId && !displayAsMessage { if case .savedMessagesChats = item.chatListLocation { overrideImage = .myNotesIcon diff --git a/submodules/ContactsPeerItem/Sources/ContactsPeerItem.swift b/submodules/ContactsPeerItem/Sources/ContactsPeerItem.swift index b6e72f5525..966d2d5a2e 100644 --- a/submodules/ContactsPeerItem/Sources/ContactsPeerItem.swift +++ b/submodules/ContactsPeerItem/Sources/ContactsPeerItem.swift @@ -1093,7 +1093,7 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode { } else if peer.id.isReplies, case .generalSearch = item.peerMode { overrideImage = .repliesIcon } else if peer.id.isAnonymousSavedMessages, case .generalSearch = item.peerMode { - overrideImage = .anonymousSavedMessagesIcon + overrideImage = .anonymousSavedMessagesIcon(isColored: true) } else if peer.isDeleted { overrideImage = .deletedIcon } diff --git a/submodules/ContextUI/Sources/ReactionPreviewView.swift b/submodules/ContextUI/Sources/ReactionPreviewView.swift index 753087581c..1e12087af3 100644 --- a/submodules/ContextUI/Sources/ReactionPreviewView.swift +++ b/submodules/ContextUI/Sources/ReactionPreviewView.swift @@ -36,7 +36,7 @@ final class ReactionPreviewView: UIView { size: size, placeholderColor: .clear, themeColor: .white, - loopMode: .count(0) + loopMode: .forever ), isVisibleForAnimations: true, action: nil diff --git a/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift index 7d6291b9aa..9ae8bce77c 100644 --- a/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift +++ b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift @@ -85,7 +85,7 @@ private final class DeleteChatPeerActionSheetItemNode: ActionSheetItemNode { } else if chatPeer.id.isReplies { self.avatarNode.setPeer(context: context, theme: (context.sharedContext.currentPresentationData.with { $0 }).theme, peer: peer, overrideImage: .repliesIcon) } else if chatPeer.id.isAnonymousSavedMessages { - self.avatarNode.setPeer(context: context, theme: (context.sharedContext.currentPresentationData.with { $0 }).theme, peer: peer, overrideImage: .anonymousSavedMessagesIcon) + self.avatarNode.setPeer(context: context, theme: (context.sharedContext.currentPresentationData.with { $0 }).theme, peer: peer, overrideImage: .anonymousSavedMessagesIcon(isColored: true)) } else { var overrideImage: AvatarNodeImageOverride? if chatPeer.isDeleted { diff --git a/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift b/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift index 9ee8da783b..f087707497 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift @@ -211,10 +211,16 @@ public func mergedMessageReactions(attributes: [MessageAttribute], isTags: Bool) updatedCount += reactions[index].count reactions.remove(at: index) } + var topPeers = result.topPeers + if let index = topPeers.firstIndex(where: { $0.isMy }) { + topPeers[index].count += pendingStars.count + } else { + topPeers.append(ReactionsMessageAttribute.TopPeer(peerId: pendingStars.accountPeerId, count: pendingStars.count, isTop: false, isMy: true, isAnonymous: pendingStars.isAnonymous)) + } reactions.insert(MessageReaction(value: .stars, count: updatedCount, chosenOrder: -1), at: 0) - return ReactionsMessageAttribute(canViewList: current?.canViewList ?? false, isTags: current?.isTags ?? isTags, reactions: reactions, recentPeers: result.recentPeers, topPeers: result.topPeers) + return ReactionsMessageAttribute(canViewList: current?.canViewList ?? false, isTags: current?.isTags ?? isTags, reactions: reactions, recentPeers: result.recentPeers, topPeers: topPeers) } else { - return ReactionsMessageAttribute(canViewList: current?.canViewList ?? false, isTags: current?.isTags ?? isTags, reactions: [MessageReaction(value: .stars, count: pendingStars.count, chosenOrder: -1)], recentPeers: [], topPeers: []) + return ReactionsMessageAttribute(canViewList: current?.canViewList ?? false, isTags: current?.isTags ?? isTags, reactions: [MessageReaction(value: .stars, count: pendingStars.count, chosenOrder: -1)], recentPeers: [], topPeers: [ReactionsMessageAttribute.TopPeer(peerId: pendingStars.accountPeerId, count: pendingStars.count, isTop: false, isMy: true, isAnonymous: pendingStars.isAnonymous)]) } } else { return result diff --git a/submodules/TelegramUI/Components/Chat/ChatSendStarsScreen/Sources/ChatSendStarsScreen.swift b/submodules/TelegramUI/Components/Chat/ChatSendStarsScreen/Sources/ChatSendStarsScreen.swift index d6d7acc397..54b2a5f8b2 100644 --- a/submodules/TelegramUI/Components/Chat/ChatSendStarsScreen/Sources/ChatSendStarsScreen.swift +++ b/submodules/TelegramUI/Components/Chat/ChatSendStarsScreen/Sources/ChatSendStarsScreen.swift @@ -537,9 +537,9 @@ private final class PeerComponent: Component { let avatarFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: avatarSize) avatarNode.frame = avatarFrame if let peer = component.peer { - avatarNode.setPeer(context: component.context, theme: component.theme, peer: peer) + avatarNode.setPeer(context: component.context, theme: component.theme, peer: peer, synchronousLoad: true) } else { - avatarNode.setPeer(context: component.context, theme: component.theme, peer: nil, overrideImage: .anonymousSavedMessagesIcon) + avatarNode.setPeer(context: component.context, theme: component.theme, peer: nil, overrideImage: .anonymousSavedMessagesIcon(isColored: false), synchronousLoad: true) } avatarNode.updateSize(size: avatarFrame.size) @@ -657,7 +657,7 @@ private final class SliderBackgroundComponent: Component { } func update(component: SliderBackgroundComponent, availableSize: CGSize, state: EmptyComponentState, environment: Environment, transition: ComponentTransition) -> CGSize { - self.sliderBackground.backgroundColor = UIColor(rgb: 0xEEEEEF) + self.sliderBackground.backgroundColor = component.theme.list.itemPrimaryTextColor.withMultipliedAlpha(component.theme.overallDarkAppearance ? 0.2 : 0.07) self.sliderForeground.backgroundColor = UIColor(rgb: 0xFFB10D) self.topForegroundLine.backgroundColor = component.theme.list.plainBackgroundColor.cgColor self.topBackgroundLine.backgroundColor = component.theme.list.plainBackgroundColor.cgColor @@ -687,7 +687,7 @@ private final class SliderBackgroundComponent: Component { let topTextSize = self.topForegroundText.update( transition: .immediate, component: AnyComponent(MultilineTextComponent( - text: .plain(NSAttributedString(string: "TOP", font: Font.medium(17.0), textColor: UIColor(white: 1.0, alpha: 0.4))) + text: .plain(NSAttributedString(string: "TOP", font: Font.semibold(15.0), textColor: UIColor(white: 1.0, alpha: 0.4))) )), environment: {}, containerSize: CGSize(width: availableSize.width, height: 100.0) @@ -695,7 +695,7 @@ private final class SliderBackgroundComponent: Component { let _ = self.topBackgroundText.update( transition: .immediate, component: AnyComponent(MultilineTextComponent( - text: .plain(NSAttributedString(string: "TOP", font: Font.medium(17.0), textColor: UIColor(white: 0.0, alpha: 0.1))) + text: .plain(NSAttributedString(string: "TOP", font: Font.semibold(15.0), textColor: component.theme.overallDarkAppearance ? UIColor(white: 1.0, alpha: 0.22) : UIColor(white: 0.0, alpha: 0.2))) )), environment: {}, containerSize: CGSize(width: availableSize.width, height: 100.0) diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 1b4f8bd829..67fcd3ba70 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -5094,7 +5094,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else if peer.id.isReplies { imageOverride = .repliesIcon } else if peer.id.isAnonymousSavedMessages { - imageOverride = .anonymousSavedMessagesIcon + imageOverride = .anonymousSavedMessagesIcon(isColored: true) } else if peer.isDeleted { imageOverride = .deletedIcon } else { @@ -5890,7 +5890,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else if savedMessagesPeerId.isReplies { imageOverride = .repliesIcon } else if savedMessagesPeerId.isAnonymousSavedMessages { - imageOverride = .anonymousSavedMessagesIcon + imageOverride = .anonymousSavedMessagesIcon(isColored: true) } else if let peer = savedMessagesPeer?.peer, peer.isDeleted { imageOverride = .deletedIcon } else {