mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Chat list gift icon
This commit is contained in:
parent
06defbb3f6
commit
43741a3b20
@ -13297,3 +13297,5 @@ Sorry for the inconvenience.";
|
|||||||
"WebApp.ShareMessage.PreviewTitle" = "MESSAGE PREVIEW";
|
"WebApp.ShareMessage.PreviewTitle" = "MESSAGE PREVIEW";
|
||||||
"WebApp.ShareMessage.Info" = "%@ mini app suggests you to send this message to a chat you select.";
|
"WebApp.ShareMessage.Info" = "%@ mini app suggests you to send this message to a chat you select.";
|
||||||
"WebApp.ShareMessage.Share" = "Share With...";
|
"WebApp.ShareMessage.Share" = "Share With...";
|
||||||
|
|
||||||
|
"Notification.Gift" = "Gift";
|
||||||
|
@ -2081,6 +2081,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
var currentSecretIconImage: UIImage?
|
var currentSecretIconImage: UIImage?
|
||||||
var currentForwardedIcon: UIImage?
|
var currentForwardedIcon: UIImage?
|
||||||
var currentStoryIcon: UIImage?
|
var currentStoryIcon: UIImage?
|
||||||
|
var currentGiftIcon: UIImage?
|
||||||
|
|
||||||
var selectableControlSizeAndApply: (CGFloat, (CGSize, Bool) -> ItemListSelectableControlNode)?
|
var selectableControlSizeAndApply: (CGFloat, (CGSize, Bool) -> ItemListSelectableControlNode)?
|
||||||
var reorderControlSizeAndApply: (CGFloat, (CGFloat, Bool, ContainedViewLayoutTransition) -> ItemListEditableReorderControlNode)?
|
var reorderControlSizeAndApply: (CGFloat, (CGFloat, Bool, ContainedViewLayoutTransition) -> ItemListEditableReorderControlNode)?
|
||||||
@ -2254,6 +2255,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
|
|
||||||
var displayForwardedIcon = false
|
var displayForwardedIcon = false
|
||||||
var displayStoryReplyIcon = false
|
var displayStoryReplyIcon = false
|
||||||
|
var displayGiftIcon = false
|
||||||
var ignoreForwardedIcon = false
|
var ignoreForwardedIcon = false
|
||||||
|
|
||||||
switch contentData {
|
switch contentData {
|
||||||
@ -2562,6 +2564,22 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
displayForwardedIcon = true
|
displayForwardedIcon = true
|
||||||
} else if let _ = message.attributes.first(where: { $0 is ReplyStoryAttribute }) {
|
} else if let _ = message.attributes.first(where: { $0 is ReplyStoryAttribute }) {
|
||||||
displayStoryReplyIcon = true
|
displayStoryReplyIcon = true
|
||||||
|
} else {
|
||||||
|
for media in message.media {
|
||||||
|
if let action = media as? TelegramMediaAction {
|
||||||
|
switch action.action {
|
||||||
|
case .giftPremium, .giftStars, .starGift:
|
||||||
|
displayGiftIcon = true
|
||||||
|
case let .giftCode(_, _, _, boostPeerId, _, _, _, _, _, _, _):
|
||||||
|
if boostPeerId == nil {
|
||||||
|
displayGiftIcon = true
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2716,6 +2734,10 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
currentStoryIcon = PresentationResourcesChatList.storyReplyIcon(item.presentationData.theme)
|
currentStoryIcon = PresentationResourcesChatList.storyReplyIcon(item.presentationData.theme)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if displayGiftIcon {
|
||||||
|
currentGiftIcon = PresentationResourcesChatList.giftIcon(item.presentationData.theme)
|
||||||
|
}
|
||||||
|
|
||||||
if let currentForwardedIcon {
|
if let currentForwardedIcon {
|
||||||
textLeftCutout += currentForwardedIcon.size.width
|
textLeftCutout += currentForwardedIcon.size.width
|
||||||
if !contentImageSpecs.isEmpty {
|
if !contentImageSpecs.isEmpty {
|
||||||
@ -2734,6 +2756,15 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let currentGiftIcon {
|
||||||
|
textLeftCutout += currentGiftIcon.size.width
|
||||||
|
if !contentImageSpecs.isEmpty {
|
||||||
|
textLeftCutout += forwardedIconSpacing
|
||||||
|
} else {
|
||||||
|
textLeftCutout += contentImageTrailingSpace
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for i in 0 ..< contentImageSpecs.count {
|
for i in 0 ..< contentImageSpecs.count {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
textLeftCutout += contentImageSpacing
|
textLeftCutout += contentImageSpacing
|
||||||
@ -4261,6 +4292,9 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
messageTypeIconOffset.y += 3.0
|
messageTypeIconOffset.y += 3.0
|
||||||
} else if let currentStoryIcon {
|
} else if let currentStoryIcon {
|
||||||
messageTypeIcon = currentStoryIcon
|
messageTypeIcon = currentStoryIcon
|
||||||
|
} else if let currentGiftIcon {
|
||||||
|
messageTypeIcon = currentGiftIcon
|
||||||
|
messageTypeIconOffset.y -= 2.0 - UIScreenPixel
|
||||||
}
|
}
|
||||||
|
|
||||||
if let messageTypeIcon {
|
if let messageTypeIcon {
|
||||||
|
@ -119,6 +119,7 @@ public enum PresentationResourceKey: Int32 {
|
|||||||
|
|
||||||
case chatListForwardedIcon
|
case chatListForwardedIcon
|
||||||
case chatListStoryReplyIcon
|
case chatListStoryReplyIcon
|
||||||
|
case chatListGiftIcon
|
||||||
|
|
||||||
case chatListGeneralTopicIcon
|
case chatListGeneralTopicIcon
|
||||||
case chatListGeneralTopicSmallIcon
|
case chatListGeneralTopicSmallIcon
|
||||||
|
@ -259,6 +259,12 @@ public struct PresentationResourcesChatList {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static func giftIcon(_ theme: PresentationTheme) -> UIImage? {
|
||||||
|
return theme.image(PresentationResourceKey.chatListGiftIcon.rawValue, { theme in
|
||||||
|
return generateTintedImage(image: UIImage(bundleImageName: "Chat List/GiftIcon"), color: theme.chatList.muteIconColor)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
public static func verifiedIcon(_ theme: PresentationTheme) -> UIImage? {
|
public static func verifiedIcon(_ theme: PresentationTheme) -> UIImage? {
|
||||||
return theme.image(PresentationResourceKey.chatListVerifiedIcon.rawValue, { theme in
|
return theme.image(PresentationResourceKey.chatListVerifiedIcon.rawValue, { theme in
|
||||||
if let backgroundImage = UIImage(bundleImageName: "Chat List/PeerVerifiedIconBackground"), let foregroundImage = UIImage(bundleImageName: "Chat List/PeerVerifiedIconForeground") {
|
if let backgroundImage = UIImage(bundleImageName: "Chat List/PeerVerifiedIconBackground"), let foregroundImage = UIImage(bundleImageName: "Chat List/PeerVerifiedIconForeground") {
|
||||||
|
@ -736,6 +736,9 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
case let .webViewData(text):
|
case let .webViewData(text):
|
||||||
attributedString = NSAttributedString(string: strings.Notification_WebAppSentData(text).string, font: titleFont, textColor: primaryTextColor)
|
attributedString = NSAttributedString(string: strings.Notification_WebAppSentData(text).string, font: titleFont, textColor: primaryTextColor)
|
||||||
case let .giftPremium(currency, amount, _, _, _, _, _):
|
case let .giftPremium(currency, amount, _, _, _, _, _):
|
||||||
|
if !forAdditionalServiceMessage {
|
||||||
|
attributedString = NSAttributedString(string: strings.Notification_Gift, font: titleFont, textColor: primaryTextColor)
|
||||||
|
} else {
|
||||||
let price = formatCurrencyAmount(amount, currency: currency)
|
let price = formatCurrencyAmount(amount, currency: currency)
|
||||||
if message.author?.id == accountPeerId {
|
if message.author?.id == accountPeerId {
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
||||||
@ -744,8 +747,12 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
attributes[1] = boldAttributes
|
attributes[1] = boldAttributes
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_Sent(compactAuthorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_Sent(compactAuthorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case let .giftStars(currency, amount, count, _, _, _):
|
case let .giftStars(currency, amount, count, _, _, _):
|
||||||
let _ = count
|
let _ = count
|
||||||
|
if !forAdditionalServiceMessage {
|
||||||
|
attributedString = NSAttributedString(string: strings.Notification_Gift, font: titleFont, textColor: primaryTextColor)
|
||||||
|
} else {
|
||||||
let price = formatCurrencyAmount(amount, currency: currency)
|
let price = formatCurrencyAmount(amount, currency: currency)
|
||||||
if message.author?.id == accountPeerId {
|
if message.author?.id == accountPeerId {
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_StarsGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
attributedString = addAttributesToStringWithRanges(strings.Notification_StarsGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
||||||
@ -760,6 +767,7 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
attributes[1] = boldAttributes
|
attributes[1] = boldAttributes
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_StarsGift_Sent(authorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
attributedString = addAttributesToStringWithRanges(strings.Notification_StarsGift_Sent(authorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case let .topicCreated(title, iconColor, iconFileId):
|
case let .topicCreated(title, iconColor, iconFileId):
|
||||||
if forForumOverview {
|
if forForumOverview {
|
||||||
let maybeFileId = iconFileId ?? 0
|
let maybeFileId = iconFileId ?? 0
|
||||||
@ -957,6 +965,9 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
let mutableAttributedString = NSMutableAttributedString(attributedString: stringWithAppliedEntities(text, entities: entities ?? [], baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false, message: message._asMessage()))
|
let mutableAttributedString = NSMutableAttributedString(attributedString: stringWithAppliedEntities(text, entities: entities ?? [], baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false, message: message._asMessage()))
|
||||||
attributedString = mutableAttributedString
|
attributedString = mutableAttributedString
|
||||||
} else if boostPeerId == nil, let currency, let amount {
|
} else if boostPeerId == nil, let currency, let amount {
|
||||||
|
if !forAdditionalServiceMessage {
|
||||||
|
attributedString = NSAttributedString(string: strings.Notification_Gift, font: titleFont, textColor: primaryTextColor)
|
||||||
|
} else {
|
||||||
let price = formatCurrencyAmount(amount, currency: currency)
|
let price = formatCurrencyAmount(amount, currency: currency)
|
||||||
if message.author?.id == accountPeerId {
|
if message.author?.id == accountPeerId {
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_SentYou(price)._tuple, body: bodyAttributes, argumentAttributes: [0: boldAttributes])
|
||||||
@ -965,6 +976,7 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
attributes[1] = boldAttributes
|
attributes[1] = boldAttributes
|
||||||
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_Sent(compactAuthorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
attributedString = addAttributesToStringWithRanges(strings.Notification_PremiumGift_Sent(compactAuthorName, price)._tuple, body: bodyAttributes, argumentAttributes: attributes)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
attributedString = NSAttributedString(string: strings.Notification_GiftLink, font: titleFont, textColor: primaryTextColor)
|
attributedString = NSAttributedString(string: strings.Notification_GiftLink, font: titleFont, textColor: primaryTextColor)
|
||||||
}
|
}
|
||||||
@ -1055,9 +1067,13 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
|||||||
case .prizeStars:
|
case .prizeStars:
|
||||||
attributedString = NSAttributedString(string: strings.Notification_StarsPrize, font: titleFont, textColor: primaryTextColor)
|
attributedString = NSAttributedString(string: strings.Notification_StarsPrize, font: titleFont, textColor: primaryTextColor)
|
||||||
case let .starGift(gift, _, text, entities, _, _, _):
|
case let .starGift(gift, _, text, entities, _, _, _):
|
||||||
if !forAdditionalServiceMessage, let text {
|
if !forAdditionalServiceMessage {
|
||||||
|
if let text {
|
||||||
let mutableAttributedString = NSMutableAttributedString(attributedString: stringWithAppliedEntities(text, entities: entities ?? [], baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false, message: message._asMessage()))
|
let mutableAttributedString = NSMutableAttributedString(attributedString: stringWithAppliedEntities(text, entities: entities ?? [], baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false, message: message._asMessage()))
|
||||||
attributedString = mutableAttributedString
|
attributedString = mutableAttributedString
|
||||||
|
} else {
|
||||||
|
attributedString = NSAttributedString(string: strings.Notification_Gift, font: titleFont, textColor: primaryTextColor)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let starsPrice = strings.Notification_StarsGift_Stars(Int32(gift.price))
|
let starsPrice = strings.Notification_StarsGift_Stars(Int32(gift.price))
|
||||||
var authorName = compactAuthorName
|
var authorName = compactAuthorName
|
||||||
|
12
submodules/TelegramUI/Images.xcassets/Chat List/GiftIcon.imageset/Contents.json
vendored
Normal file
12
submodules/TelegramUI/Images.xcassets/Chat List/GiftIcon.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "gift (3).pdf",
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
submodules/TelegramUI/Images.xcassets/Chat List/GiftIcon.imageset/gift (3).pdf
vendored
Normal file
BIN
submodules/TelegramUI/Images.xcassets/Chat List/GiftIcon.imageset/gift (3).pdf
vendored
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user