Stars reactions improvements

This commit is contained in:
Isaac 2024-08-12 09:40:21 +04:00
parent cfe2953c8f
commit 0a8ba8113e
8 changed files with 31 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -36,7 +36,7 @@ final class ReactionPreviewView: UIView {
size: size,
placeholderColor: .clear,
themeColor: .white,
loopMode: .count(0)
loopMode: .forever
),
isVisibleForAnimations: true,
action: nil

View File

@ -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 {

View File

@ -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

View File

@ -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<Empty>, 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)

View File

@ -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 {