Fix message translation in comments

This commit is contained in:
Ilya Laktyushin 2024-05-07 00:23:22 +04:00
parent e236672d01
commit 6a9ce9ab6e
3 changed files with 14 additions and 9 deletions

View File

@ -512,7 +512,7 @@ public extension TelegramEngine {
return _internal_translate_texts(network: self.account.network, texts: texts, toLang: toLang) return _internal_translate_texts(network: self.account.network, texts: texts, toLang: toLang)
} }
public func translateMessages(messageIds: [EngineMessage.Id], toLang: String) -> Signal<Void, TranslationError> { public func translateMessages(messageIds: [EngineMessage.Id], toLang: String) -> Signal<Never, TranslationError> {
return _internal_translateMessages(account: self.account, messageIds: messageIds, toLang: toLang) return _internal_translateMessages(account: self.account, messageIds: messageIds, toLang: toLang)
} }

View File

@ -84,13 +84,18 @@ func _internal_translate_texts(network: Network, texts: [(String, [MessageTextEn
} }
} }
func _internal_translateMessages(account: Account, messageIds: [EngineMessage.Id], toLang: String) -> Signal<Never, TranslationError> {
func _internal_translateMessages(account: Account, messageIds: [EngineMessage.Id], toLang: String) -> Signal<Void, TranslationError> { var signals: [Signal<Void, TranslationError>] = []
guard let peerId = messageIds.first?.peerId else { for (peerId, messageIds) in messagesIdsGroupedByPeerId(messageIds) {
return .never() signals.append(_internal_translateMessagesByPeerId(account: account, peerId: peerId, messageIds: messageIds, toLang: toLang))
} }
return combineLatest(signals)
|> ignoreValues
}
private func _internal_translateMessagesByPeerId(account: Account, peerId: EnginePeer.Id, messageIds: [EngineMessage.Id], toLang: String) -> Signal<Void, TranslationError> {
return account.postbox.transaction { transaction -> (Api.InputPeer?, [Message]) in return account.postbox.transaction { transaction -> (Api.InputPeer?, [Message]) in
return (transaction.getPeer(peerId).flatMap(apiInputPeer), messageIds.compactMap({ transaction.getMessage($0) })) return (transaction.getPeer(peerId).flatMap(apiInputPeer), messageIds.compactMap({ transaction.getMessage($0) }))
} }
|> castError(TranslationError.self) |> castError(TranslationError.self)
|> mapToSignal { (inputPeer, messages) -> Signal<Void, TranslationError> in |> mapToSignal { (inputPeer, messages) -> Signal<Void, TranslationError> in

View File

@ -109,8 +109,8 @@ public func updateChatTranslationStateInteractively(engine: TelegramEngine, peer
@available(iOS 12.0, *) @available(iOS 12.0, *)
private let languageRecognizer = NLLanguageRecognizer() private let languageRecognizer = NLLanguageRecognizer()
public func translateMessageIds(context: AccountContext, messageIds: [EngineMessage.Id], toLang: String) -> Signal<Void, NoError> { public func translateMessageIds(context: AccountContext, messageIds: [EngineMessage.Id], toLang: String) -> Signal<Never, NoError> {
return context.account.postbox.transaction { transaction -> Signal<Void, NoError> in return context.account.postbox.transaction { transaction -> Signal<Never, NoError> in
var messageIdsToTranslate: [EngineMessage.Id] = [] var messageIdsToTranslate: [EngineMessage.Id] = []
var messageIdsSet = Set<EngineMessage.Id>() var messageIdsSet = Set<EngineMessage.Id>()
for messageId in messageIds { for messageId in messageIds {
@ -152,7 +152,7 @@ public func translateMessageIds(context: AccountContext, messageIds: [EngineMess
} }
} }
return context.engine.messages.translateMessages(messageIds: messageIdsToTranslate, toLang: toLang) return context.engine.messages.translateMessages(messageIds: messageIdsToTranslate, toLang: toLang)
|> `catch` { _ -> Signal<Void, NoError> in |> `catch` { _ -> Signal<Never, NoError> in
return .complete() return .complete()
} }
} |> switchToLatest } |> switchToLatest