From d7a4ac0205d4c6ba5452ffa6ee8e04341c21c800 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 6 Nov 2023 23:17:48 +0400 Subject: [PATCH] Giveaway strings improvements --- .../Telegram-iOS/en.lproj/Localizable.strings | 18 +++++++++ .../Sources/Node/ChatListItemStrings.swift | 15 +++++-- .../ChatPinnedMessageTitlePanelNode.swift | 39 ++++++++++++++----- 3 files changed, 59 insertions(+), 13 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 120781da56..11c3bd6079 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -10433,3 +10433,21 @@ Sorry for the inconvenience."; "CountriesList.SaveCountries" = "Save Countries"; "CountriesList.SelectUpTo_1" = "select up to %@ country"; "CountriesList.SelectUpTo_any" = "select up to %@ countries"; + +"Message.GiveawayOngoing" = "Giveaway: %1$@ on %2$@"; +"Message.GiveawayOngoing.Winners_1" = "%@ winner to be selected"; +"Message.GiveawayOngoing.Winners_any" = "%@ winners to be selected"; + +"Message.GiveawayFinished" = "Giveaway: %1$@ on %2$@"; +"Message.GiveawayFinished.Winners_1" = "%@ winner was selected"; +"Message.GiveawayFinished.Winners_any" = "%@ winners were selected"; + +"Conversation.PinnedGiveaway" = "Giveaway"; + +"Conversation.PinnedGiveaway.Ongoing" = "%1$@ on %2$@"; +"Conversation.PinnedGiveaway.Ongoing.Winners_1" = "%@ winner to be selected"; +"Conversation.PinnedGiveaway.Ongoing.Winners_any" = "%@ winners to be selected"; + +"Conversation.PinnedGiveaway.Finished" = "%1$@ on %2$@"; +"Conversation.PinnedGiveaway.Finished.Winners_1" = "%@ winner was selected"; +"Conversation.PinnedGiveaway.Finished.Winners_any" = "%@ winners were selected"; diff --git a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift index 060ab6bd01..df85d40dd5 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift @@ -305,9 +305,18 @@ public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: } else { messageText = strings.Notification_Story } - case _ as TelegramMediaGiveaway: - messageText = strings.Message_Giveaway - case let webpage as TelegramMediaWebpage: + case let giveaway as TelegramMediaGiveaway: + let dateString = stringForDateWithoutYear(date: Date(timeIntervalSince1970: TimeInterval(giveaway.untilDate)), timeZone: .current, strings: strings) + let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) + let isFinished = currentTime >= giveaway.untilDate + if isFinished { + let winnersString = strings.Message_GiveawayFinished_Winners(giveaway.quantity) + messageText = strings.Message_GiveawayFinished(winnersString, dateString).string + } else { + let winnersString = strings.Message_GiveawayOngoing_Winners(giveaway.quantity) + messageText = strings.Message_GiveawayOngoing(winnersString, dateString).string + } + case let webpage as TelegramMediaWebpage: if messageText.isEmpty, case let .Loaded(content) = webpage.content { messageText = content.displayUrl } diff --git a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift index 04eda7684b..320fa27d16 100644 --- a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift @@ -583,19 +583,25 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { var updatedMediaReference: AnyMediaReference? var imageDimensions: CGSize? + let giveaway = pinnedMessage.message.media.first(where: { $0 is TelegramMediaGiveaway }) as? TelegramMediaGiveaway + var titleStrings: [AnimatedCountLabelNode.Segment] = [] - if pinnedMessage.totalCount == 2 { - if pinnedMessage.index == 0 { - titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedPreviousMessage) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + if let _ = giveaway { + titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedGiveaway) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + } else { + if pinnedMessage.totalCount == 2 { + if pinnedMessage.index == 0 { + titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedPreviousMessage) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + } else { + titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedMessage) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + } + } else if pinnedMessage.totalCount > 1 && pinnedMessage.index != pinnedMessage.totalCount - 1 { + titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedMessage)", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + titleStrings.append(.text(1, NSAttributedString(string: " #", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) + titleStrings.append(.number(pinnedMessage.index + 1, NSAttributedString(string: "\(pinnedMessage.index + 1)", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) } else { titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedMessage) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) } - } else if pinnedMessage.totalCount > 1 && pinnedMessage.index != pinnedMessage.totalCount - 1 { - titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedMessage)", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) - titleStrings.append(.text(1, NSAttributedString(string: " #", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) - titleStrings.append(.number(pinnedMessage.index + 1, NSAttributedString(string: "\(pinnedMessage.index + 1)", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) - } else { - titleStrings.append(.text(0, NSAttributedString(string: "\(strings.Conversation_PinnedMessage) ", font: Font.medium(15.0), textColor: theme.chat.inputPanel.panelControlAccentColor))) } if !message.containsSecretMedia { @@ -679,7 +685,20 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { let messageText: NSAttributedString let textFont = Font.regular(15.0) - if isText { + if let giveaway { + let dateString = stringForDateWithoutYear(date: Date(timeIntervalSince1970: TimeInterval(giveaway.untilDate)), timeZone: .current, strings: strings) + let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) + let isFinished = currentTime >= giveaway.untilDate + let text: String + if isFinished { + let winnersString = strings.Conversation_PinnedGiveaway_Finished_Winners(giveaway.quantity) + text = strings.Conversation_PinnedGiveaway_Finished(winnersString, dateString).string + } else { + let winnersString = strings.Conversation_PinnedGiveaway_Ongoing_Winners(giveaway.quantity) + text = strings.Conversation_PinnedGiveaway_Ongoing(winnersString, dateString).string + } + messageText = NSAttributedString(string: text, font: textFont, textColor: theme.chat.inputPanel.primaryTextColor) + } else if isText { var text = message.text var messageEntities = message.textEntitiesAttribute?.entities ?? []