From 443d0293f65535fcf4bfc606463dfc65a9649e3e Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 23 Jan 2023 00:25:09 +0400 Subject: [PATCH] Translation fixes --- .../Telegram-iOS/en.lproj/Localizable.strings | 1 + .../Sources/ListMessageSnippetItemNode.swift | 2 +- .../Sources/SaveToCameraRoll.swift | 2 +- .../Sources/AvatarEditorScreen.swift | 10 ++++++++ .../Sources/ChatHistoryListNode.swift | 23 ++++++++++++------- .../ChatMessageTextBubbleContentNode.swift | 2 +- .../Sources/PeerInfo/PeerInfoScreen.swift | 4 +++- .../TranslateUI/Sources/ChatTranslation.swift | 2 +- 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 0a78104a7d..88166c7015 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -8716,6 +8716,7 @@ Sorry for the inconvenience."; "AvatarEditor.SwitchToEmoji" = "SWITCH TO EMOJI"; "AvatarEditor.SwitchToStickers" = "SWITCH TO STICKERS"; "AvatarEditor.SetProfilePhoto" = "Set as Profile Photo"; +"AvatarEditor.SuggestProfilePhoto" = "Suggest as Profile Photo"; "AvatarEditor.SetGroupPhoto" = "Set as Group Photo"; "AvatarEditor.SetChannelPhoto" = "Set as Group Photo"; "AvatarEditor.Set" = "Set"; diff --git a/submodules/ListMessageItem/Sources/ListMessageSnippetItemNode.swift b/submodules/ListMessageItem/Sources/ListMessageSnippetItemNode.swift index 59290e7027..dc0862817c 100644 --- a/submodules/ListMessageItem/Sources/ListMessageSnippetItemNode.swift +++ b/submodules/ListMessageItem/Sources/ListMessageSnippetItemNode.swift @@ -425,7 +425,7 @@ public final class ListMessageSnippetItemNode: ListMessageNode { if messageTextUrl != rawUrlString, !item.isGlobalSearchResult { var messageText = message.text - if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, !translation.text.isEmpty, item.translateToLanguage == translation.toLang { + if !messageText.isEmpty, let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, !translation.text.isEmpty, item.translateToLanguage == translation.toLang { messageText = translation.text } diff --git a/submodules/SaveToCameraRoll/Sources/SaveToCameraRoll.swift b/submodules/SaveToCameraRoll/Sources/SaveToCameraRoll.swift index 39636a9e70..9a5f64a162 100644 --- a/submodules/SaveToCameraRoll/Sources/SaveToCameraRoll.swift +++ b/submodules/SaveToCameraRoll/Sources/SaveToCameraRoll.swift @@ -22,7 +22,7 @@ public func fetchMediaData(context: AccountContext, postbox: Postbox, userLocati var userContentType: MediaResourceUserContentType = .other if let image = mediaReference.media as? TelegramMediaImage { userContentType = .image - if let video = image.videoRepresentations.first, forceVideo { + if let video = image.videoRepresentations.last, forceVideo { resource = video.resource isImage = false } else if let representation = largestImageRepresentation(image.representations) { diff --git a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift index f5fb0a9a2e..4fc342677e 100644 --- a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift +++ b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift @@ -749,6 +749,13 @@ final class AvatarEditorScreenComponent: Component { }) self.addSubview(snapshotView) } + + if let navigationDoneButton = self.navigationDoneButton.view, !navigationDoneButton.alpha.isZero, let snapshotView = self.navigationDoneButton.view?.snapshotContentTree() { + snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak snapshotView] _ in + snapshotView?.removeFromSuperview() + }) + self.addSubview(snapshotView) + } } let backgroundIsBright = UIColor(rgb: state.selectedBackground.colors.first ?? 0).lightness > 0.8 @@ -1184,6 +1191,8 @@ final class AvatarEditorScreenComponent: Component { let buttonText: String switch component.peerType { + case .suggest: + buttonText = strings.AvatarEditor_SuggestProfilePhoto case .user: buttonText = strings.AvatarEditor_SetProfilePhoto case .group, .forum: @@ -1335,6 +1344,7 @@ final class AvatarEditorScreenComponent: Component { public final class AvatarEditorScreen: ViewControllerComponentContainer { public enum PeerType { + case suggest case user case group case channel diff --git a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift index 63f927a318..39bba905d2 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift @@ -2006,6 +2006,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { var isTopReplyThreadMessageShownValue = false var topVisibleMessageRange: ChatTopVisibleMessageRange? let isLoading = historyView.originalView.isLoading + let translateToLanguage = transactionState.historyView.associatedData.translateToLanguage if let visible = displayedRange.visibleRange { let indexRange = (historyView.filteredEntries.count - 1 - visible.lastIndex, historyView.filteredEntries.count - 1 - visible.firstIndex) @@ -2070,6 +2071,14 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } } + + if let translateToLanguage { + if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == translateToLanguage { + } else if !message.text.isEmpty { + messageIdsToTranslate.append(message.id) + } + } + for media in message.media { if let _ = media as? TelegramMediaUnsupported { contentRequiredValidation = true @@ -2144,6 +2153,12 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } } + if let translateToLanguage { + if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == translateToLanguage { + } else if !message.text.isEmpty { + messageIdsToTranslate.append(message.id) + } + } for media in message.media { if let telegramFile = media as? TelegramMediaFile { downloadableResourceIds.append((message.id, telegramFile.resource.id.stringRepresentation)) @@ -2194,7 +2209,6 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } - let translateToLanguage = transactionState.historyView.associatedData.translateToLanguage var messageIdsWithPossibleReactions: [MessageId] = [] for entry in historyView.filteredEntries { switch entry { @@ -2212,13 +2226,6 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { default: break } - - if let translateToLanguage { - if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == translateToLanguage { - } else { - messageIdsToTranslate.append(message.id) - } - } } case let .MessageGroupEntry(_, messages, _): for (message, _, _, _, _) in messages { diff --git a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift index 96ec6c6b38..c05da71d8f 100644 --- a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift @@ -261,7 +261,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { messageEntities = updatingMedia.entities?.entities ?? [] } - if let translateToLanguage = item.associatedData.translateToLanguage { + if let translateToLanguage = item.associatedData.translateToLanguage, !item.message.text.isEmpty { isTranslating = true for attribute in item.message.attributes { if let attribute = attribute as? TranslationMessageAttribute, !attribute.text.isEmpty, attribute.toLang == translateToLanguage { diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index ff498f747e..0fd23a7d61 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -7273,7 +7273,9 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate return } let peerType: AvatarEditorScreen.PeerType - if case .legacyGroup = peer { + if mode == .suggest { + peerType = .suggest + } else if case .legacyGroup = peer { peerType = .group } else if case let .channel(channel) = peer { if case .group = channel.info { diff --git a/submodules/TranslateUI/Sources/ChatTranslation.swift b/submodules/TranslateUI/Sources/ChatTranslation.swift index 4a6e71ce6a..c101bddf82 100644 --- a/submodules/TranslateUI/Sources/ChatTranslation.swift +++ b/submodules/TranslateUI/Sources/ChatTranslation.swift @@ -114,7 +114,7 @@ public func translateMessageIds(context: AccountContext, messageIds: [EngineMess return context.account.postbox.transaction { transaction -> Signal in var messageIdsToTranslate: [EngineMessage.Id] = [] for messageId in messageIds { - if let message = transaction.getMessage(messageId), let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == toLang { + if let message = transaction.getMessage(messageId), !message.text.isEmpty, let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == toLang { } else { messageIdsToTranslate.append(messageId) }