Various improvements

This commit is contained in:
Ilya Laktyushin
2023-01-23 15:48:57 +04:00
parent 443d0293f6
commit ad0fe38ba7
17 changed files with 664 additions and 519 deletions

View File

@@ -2015,6 +2015,39 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
return
}
var messageIdsToTranslate: [MessageId] = []
if let translateToLanguage {
let extendedRange: Int = 2
var wideIndexRange = (historyView.filteredEntries.count - 1 - visible.lastIndex - extendedRange, historyView.filteredEntries.count - 1 - visible.firstIndex + extendedRange)
wideIndexRange = (max(0, min(historyView.filteredEntries.count - 1, wideIndexRange.0)), max(0, min(historyView.filteredEntries.count - 1, wideIndexRange.1)))
if wideIndexRange.0 > wideIndexRange.1 {
assert(false)
return
}
if wideIndexRange.0 <= wideIndexRange.1 {
for i in (wideIndexRange.0 ... wideIndexRange.1) {
switch historyView.filteredEntries[i] {
case let .MessageEntry(message, _, _, _, _, _):
if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == translateToLanguage {
} else if !message.text.isEmpty {
messageIdsToTranslate.append(message.id)
}
case let .MessageGroupEntry(_, messages, _):
for (message, _, _, _, _) in messages {
if let translation = message.attributes.first(where: { $0 is TranslationMessageAttribute }) as? TranslationMessageAttribute, translation.toLang == translateToLanguage {
} else if !message.text.isEmpty {
messageIdsToTranslate.append(message.id)
}
}
default:
break
}
}
}
}
let readIndexRange = (0, historyView.filteredEntries.count - 1 - visible.firstIndex)
let toEarlierRange = (0, historyView.filteredEntries.count - 1 - visible.lastIndex - 1)
@@ -2027,7 +2060,6 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
var messageIdsWithUnseenPersonalMention: [MessageId] = []
var messageIdsWithUnseenReactions: [MessageId] = []
var messageIdsWithInactiveExtendedMedia = Set<MessageId>()
var messageIdsToTranslate: [MessageId] = []
var downloadableResourceIds: [(messageId: MessageId, resourceId: String)] = []
var allVisibleAnchorMessageIds: [(MessageId, Int)] = []
var visibleAdOpaqueIds: [Data] = []
@@ -2072,13 +2104,6 @@ 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
@@ -2153,12 +2178,6 @@ 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))
@@ -2407,6 +2426,8 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
}
}
}
self.isTopReplyThreadMessageShown.set(isTopReplyThreadMessageShownValue)
self.updateTopVisibleMessageRange(topVisibleMessageRange)
let _ = self.visibleMessageRange.swap(topVisibleMessageRange.flatMap { range in
@@ -2414,7 +2435,6 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
})
if let loaded = displayedRange.visibleRange, let firstEntry = historyView.filteredEntries.first, let lastEntry = historyView.filteredEntries.last {
var mathesFirst = false
if loaded.firstIndex <= 5 {
var firstHasGroups = false