mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Various fixes
This commit is contained in:
parent
fc57219d1c
commit
22df2dbdb9
27 changed files with 480 additions and 237 deletions
|
|
@ -475,6 +475,8 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
private var credibilityIconComponent: EmojiStatusComponent?
|
||||
private var verifiedIconView: ComponentHostView<Empty>?
|
||||
private var verifiedIconComponent: EmojiStatusComponent?
|
||||
private var emojiStatusIconView: ComponentHostView<Empty>?
|
||||
private var emojiStatusIconComponent: EmojiStatusComponent?
|
||||
public let statusNode: TextNodeWithEntities
|
||||
private var statusIconNode: ASImageNode?
|
||||
private var badgeBackgroundNode: ASImageNode?
|
||||
|
|
@ -552,6 +554,14 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
containerSize: verifiedIconView.bounds.size
|
||||
)
|
||||
}
|
||||
if let emojiStatusIconView = self.emojiStatusIconView, let emojiStatusIconComponent = self.emojiStatusIconComponent {
|
||||
let _ = emojiStatusIconView.update(
|
||||
transition: .immediate,
|
||||
component: AnyComponent(emojiStatusIconComponent.withVisibleForAnimations(self.visibilityStatus)),
|
||||
environment: {},
|
||||
containerSize: emojiStatusIconView.bounds.size
|
||||
)
|
||||
}
|
||||
if let avatarIconView = self.avatarIconView, let avatarIconComponent = self.avatarIconComponent {
|
||||
let _ = avatarIconView.update(
|
||||
transition: .immediate,
|
||||
|
|
@ -840,27 +850,29 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
|
||||
let premiumConfiguration = PremiumConfiguration.with(appConfiguration: item.context.currentAppConfiguration.with { $0 })
|
||||
|
||||
var credibilityIcon: EmojiStatusComponent.Content?
|
||||
var credibilityParticleColor: UIColor?
|
||||
var credibilityStatusIcon: EmojiStatusComponent.Content?
|
||||
var verifiedIcon: EmojiStatusComponent.Content?
|
||||
var emojiStatusIcon: EmojiStatusComponent.Content?
|
||||
var emojiStatusParticleColor: UIColor?
|
||||
|
||||
switch item.peer {
|
||||
case let .peer(peer, _):
|
||||
if let peer = peer, (peer.id != item.context.account.peerId || item.peerMode == .memberList || item.aliasHandling == .standard) {
|
||||
if peer.isScam {
|
||||
credibilityIcon = .text(color: item.presentationData.theme.chat.message.incoming.scamColor, string: item.presentationData.strings.Message_ScamAccount.uppercased())
|
||||
credibilityStatusIcon = .text(color: item.presentationData.theme.chat.message.incoming.scamColor, string: item.presentationData.strings.Message_ScamAccount.uppercased())
|
||||
} else if peer.isFake {
|
||||
credibilityIcon = .text(color: item.presentationData.theme.chat.message.incoming.scamColor, string: item.presentationData.strings.Message_FakeAccount.uppercased())
|
||||
credibilityStatusIcon = .text(color: item.presentationData.theme.chat.message.incoming.scamColor, string: item.presentationData.strings.Message_FakeAccount.uppercased())
|
||||
} else if let emojiStatus = peer.emojiStatus, !item.isAd {
|
||||
credibilityIcon = .animation(content: .customEmoji(fileId: emojiStatus.fileId), size: CGSize(width: 20.0, height: 20.0), placeholderColor: item.presentationData.theme.list.mediaPlaceholderColor, themeColor: item.presentationData.theme.list.itemAccentColor, loopMode: .count(2))
|
||||
emojiStatusIcon = .animation(content: .customEmoji(fileId: emojiStatus.fileId), size: CGSize(width: 20.0, height: 20.0), placeholderColor: item.presentationData.theme.list.mediaPlaceholderColor, themeColor: item.presentationData.theme.list.itemAccentColor, loopMode: .count(2))
|
||||
if let color = emojiStatus.color {
|
||||
credibilityParticleColor = UIColor(rgb: UInt32(bitPattern: color))
|
||||
emojiStatusParticleColor = UIColor(rgb: UInt32(bitPattern: color))
|
||||
}
|
||||
} else if peer.isPremium && !premiumConfiguration.isPremiumDisabled {
|
||||
credibilityIcon = .premium(color: item.presentationData.theme.list.itemAccentColor)
|
||||
credibilityStatusIcon = .premium(color: item.presentationData.theme.list.itemAccentColor)
|
||||
}
|
||||
|
||||
if peer.isVerified {
|
||||
credibilityIcon = .verified(fillColor: item.presentationData.theme.list.itemCheckColors.fillColor, foregroundColor: item.presentationData.theme.list.itemCheckColors.foregroundColor, sizeType: .compact)
|
||||
credibilityStatusIcon = .verified(fillColor: item.presentationData.theme.list.itemCheckColors.fillColor, foregroundColor: item.presentationData.theme.list.itemCheckColors.foregroundColor, sizeType: .compact)
|
||||
}
|
||||
if let verificationIconFileId = peer.verificationIconFileId {
|
||||
verifiedIcon = .animation(content: .customEmoji(fileId: verificationIconFileId), size: CGSize(width: 32.0, height: 32.0), placeholderColor: item.presentationData.theme.list.mediaPlaceholderColor, themeColor: item.presentationData.theme.list.itemAccentColor, loopMode: .count(0))
|
||||
|
|
@ -1105,9 +1117,9 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
additionalTitleInset += 16.0
|
||||
}
|
||||
}
|
||||
if let credibilityIcon {
|
||||
if let credibilityStatusIcon {
|
||||
additionalTitleInset += 3.0
|
||||
switch credibilityIcon {
|
||||
switch credibilityStatusIcon {
|
||||
case let .text(_, string):
|
||||
let textString = NSAttributedString(string: string, font: Font.bold(10.0), textColor: .black, paragraphAlignment: .center)
|
||||
let stringRect = textString.boundingRect(with: CGSize(width: 100.0, height: 16.0), options: .usesLineFragmentOrigin, context: nil)
|
||||
|
|
@ -1116,6 +1128,10 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
additionalTitleInset += 16.0
|
||||
}
|
||||
}
|
||||
if let _ = emojiStatusIcon {
|
||||
additionalTitleInset += 3.0
|
||||
additionalTitleInset += 16.0
|
||||
}
|
||||
if let actionButtons = actionButtons {
|
||||
additionalTitleInset += 3.0
|
||||
for actionButton in actionButtons {
|
||||
|
|
@ -1587,7 +1603,7 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
}
|
||||
}
|
||||
|
||||
if let credibilityIcon {
|
||||
if let credibilityStatusIcon {
|
||||
let animationCache = item.context.animationCache
|
||||
let animationRenderer = item.context.animationRenderer
|
||||
|
||||
|
|
@ -1604,8 +1620,8 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
context: item.context,
|
||||
animationCache: animationCache,
|
||||
animationRenderer: animationRenderer,
|
||||
content: credibilityIcon,
|
||||
particleColor: credibilityParticleColor,
|
||||
content: credibilityStatusIcon,
|
||||
particleColor: nil,
|
||||
isVisibleForAnimations: strongSelf.visibilityStatus,
|
||||
action: nil,
|
||||
emojiFileUpdated: nil
|
||||
|
|
@ -1627,6 +1643,46 @@ public class ContactsPeerItemNode: ItemListRevealOptionsItemNode {
|
|||
credibilityIconView.removeFromSuperview()
|
||||
}
|
||||
|
||||
if let emojiStatusIcon {
|
||||
let animationCache = item.context.animationCache
|
||||
let animationRenderer = item.context.animationRenderer
|
||||
|
||||
let emojiStatusIconView: ComponentHostView<Empty>
|
||||
if let current = strongSelf.emojiStatusIconView {
|
||||
emojiStatusIconView = current
|
||||
} else {
|
||||
emojiStatusIconView = ComponentHostView<Empty>()
|
||||
strongSelf.offsetContainerNode.view.addSubview(emojiStatusIconView)
|
||||
strongSelf.emojiStatusIconView = emojiStatusIconView
|
||||
}
|
||||
|
||||
let emojiStatusIconComponent = EmojiStatusComponent(
|
||||
context: item.context,
|
||||
animationCache: animationCache,
|
||||
animationRenderer: animationRenderer,
|
||||
content: emojiStatusIcon,
|
||||
particleColor: emojiStatusParticleColor,
|
||||
isVisibleForAnimations: strongSelf.visibilityStatus,
|
||||
action: nil,
|
||||
emojiFileUpdated: nil
|
||||
)
|
||||
strongSelf.emojiStatusIconComponent = emojiStatusIconComponent
|
||||
|
||||
let iconSize = emojiStatusIconView.update(
|
||||
transition: .immediate,
|
||||
component: AnyComponent(emojiStatusIconComponent),
|
||||
environment: {},
|
||||
containerSize: CGSize(width: 16.0, height: 16.0)
|
||||
)
|
||||
|
||||
nextIconX += 4.0
|
||||
transition.updateFrame(view: emojiStatusIconView, frame: CGRect(origin: CGPoint(x: nextIconX, y: floorToScreenPixels(titleFrame.midY - iconSize.height / 2.0)), size: iconSize))
|
||||
nextIconX += iconSize.width
|
||||
} else if let emojiStatusIconView = strongSelf.emojiStatusIconView {
|
||||
strongSelf.emojiStatusIconView = nil
|
||||
emojiStatusIconView.removeFromSuperview()
|
||||
}
|
||||
|
||||
if let (titleBadgeLayout, titleBadgeApply) = titleBadgeLayoutAndApply {
|
||||
let titleBadgeNode = titleBadgeApply()
|
||||
let backgroundView: UIImageView
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue