mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Temp
This commit is contained in:
parent
5cc27e5d04
commit
6257031092
3 changed files with 51 additions and 12 deletions
|
|
@ -817,7 +817,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo
|
|||
case let .reference(reference):
|
||||
if let transitionInfo = reference.transitionInfo() {
|
||||
if let referenceView = transitionInfo.referenceView as? ContextExtractableContainer {
|
||||
if #available(iOS 26.0, *) {
|
||||
if #available(iOS 26.2, *) {
|
||||
if transitionInfo.referenceView.bounds.width == transitionInfo.referenceView.bounds.height {
|
||||
contextExtractableContainer = (referenceView, convertFrame(transitionInfo.referenceView.bounds.inset(by: transitionInfo.insets), from: transitionInfo.referenceView, to: self.view))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ final class TextProcessingContentComponent: Component {
|
|||
let styles: [TextProcessingScreen.Style]
|
||||
let inputText: TextWithEntities
|
||||
let initialEditState: TextProcessingScreen.EditState?
|
||||
let ignoredTranslationLanguages: [String]
|
||||
let shouldDisplayStyleNotice: Bool
|
||||
let copyCurrentResult: (() -> Void)?
|
||||
let translateChat: ((String) -> Void)?
|
||||
|
|
@ -55,6 +56,7 @@ final class TextProcessingContentComponent: Component {
|
|||
styles: [TextProcessingScreen.Style],
|
||||
inputText: TextWithEntities,
|
||||
initialEditState: TextProcessingScreen.EditState?,
|
||||
ignoredTranslationLanguages: [String],
|
||||
shouldDisplayStyleNotice: Bool,
|
||||
copyCurrentResult: (() -> Void)?,
|
||||
translateChat: ((String) -> Void)?,
|
||||
|
|
@ -66,6 +68,7 @@ final class TextProcessingContentComponent: Component {
|
|||
self.mode = mode
|
||||
self.inputText = inputText
|
||||
self.initialEditState = initialEditState
|
||||
self.ignoredTranslationLanguages = ignoredTranslationLanguages
|
||||
self.shouldDisplayStyleNotice = shouldDisplayStyleNotice
|
||||
self.copyCurrentResult = copyCurrentResult
|
||||
self.translateChat = translateChat
|
||||
|
|
@ -351,7 +354,7 @@ final class TextProcessingContentComponent: Component {
|
|||
styles: component.styles,
|
||||
externalState: self.translateState,
|
||||
inputText: component.inputText,
|
||||
mode: .translate,
|
||||
mode: .translate(ignoredLanguages: component.ignoredTranslationLanguages),
|
||||
copyAction: component.copyCurrentResult,
|
||||
displayLanguageSelectionMenu: component.displayLanguageSelectionMenu,
|
||||
present: { [weak self] c, a in
|
||||
|
|
@ -816,6 +819,7 @@ private final class TextProcessingSheetComponent: Component {
|
|||
styles: component.styles,
|
||||
inputText: component.inputText,
|
||||
initialEditState: component.initialEditState,
|
||||
ignoredTranslationLanguages: component.ignoredTranslationLanguages,
|
||||
shouldDisplayStyleNotice: component.shouldDisplayStyleNotice,
|
||||
copyCurrentResult: component.copyCurrentResult != nil ? {
|
||||
copyCurrentResultImpl()
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ func localizedLanguageName(strings: PresentationStrings, language: String, kind:
|
|||
}
|
||||
|
||||
final class TextProcessingTranslateContentComponent: Component {
|
||||
enum Mode {
|
||||
case translate
|
||||
enum Mode: Equatable {
|
||||
case translate(ignoredLanguages: [String])
|
||||
case stylize
|
||||
case fix
|
||||
}
|
||||
|
|
@ -280,13 +280,38 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
|
||||
if component.externalState.result == nil {
|
||||
switch component.mode {
|
||||
case .translate:
|
||||
var languageCode = component.strings.baseLanguageCode
|
||||
case let .translate(ignoredLanguages):
|
||||
var baseLang = component.strings.baseLanguageCode
|
||||
let rawSuffix = "-raw"
|
||||
if languageCode.hasSuffix(rawSuffix) {
|
||||
languageCode = String(languageCode.dropLast(rawSuffix.count))
|
||||
if baseLang.hasSuffix(rawSuffix) {
|
||||
baseLang = String(baseLang.dropLast(rawSuffix.count))
|
||||
}
|
||||
component.externalState.result = (languageCode, nil, [])
|
||||
var toLanguage = baseLang
|
||||
|
||||
let fromLanguage = component.externalState.sourceLanguage ?? ""
|
||||
if toLanguage == fromLanguage {
|
||||
if fromLanguage == "en" {
|
||||
var dontTranslateLanguages = Set<String>()
|
||||
if !ignoredLanguages.isEmpty {
|
||||
dontTranslateLanguages = Set(ignoredLanguages)
|
||||
} else {
|
||||
dontTranslateLanguages.insert(baseLang)
|
||||
for language in systemLanguageCodes() {
|
||||
dontTranslateLanguages.insert(language)
|
||||
}
|
||||
}
|
||||
toLanguage = dontTranslateLanguages.first(where: { $0 != "en" }) ?? "en"
|
||||
} else {
|
||||
toLanguage = "en"
|
||||
}
|
||||
if toLanguage == "en" && fromLanguage == "en" {
|
||||
if let anyOtherLanguage = NSLocale.preferredLanguages.first(where: { !$0.hasPrefix("en-") }) {
|
||||
toLanguage = anyOtherLanguage
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
component.externalState.result = (toLanguage, nil, [])
|
||||
self.beginTranslationIfNecessary(reset: false)
|
||||
case .stylize:
|
||||
component.externalState.result = ("", component.inputText, [])
|
||||
|
|
@ -303,6 +328,9 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
let bottomInset: CGFloat = 14.0
|
||||
let blockSpacing: CGFloat = 30.0
|
||||
|
||||
let fromLanguage = component.externalState.sourceLanguage ?? ""
|
||||
let fromTitle = localizedLanguageName(strings: component.strings, language: fromLanguage, kind: .translateFrom)
|
||||
|
||||
let fromFormat: String
|
||||
let toFormat: String
|
||||
var toTitle: String
|
||||
|
|
@ -377,7 +405,7 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
theme: component.theme,
|
||||
strings: component.strings,
|
||||
titleFormat: fromFormat,
|
||||
title: localizedLanguageName(strings: component.strings, language: component.externalState.sourceLanguage ?? "", kind: .translateFrom),
|
||||
title: fromTitle,
|
||||
titleAction: nil,
|
||||
isExpanded: (
|
||||
component.externalState.isSourceTextExpanded,
|
||||
|
|
@ -415,6 +443,13 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
}
|
||||
}
|
||||
|
||||
let isTranslate: Bool
|
||||
if case .translate = component.mode {
|
||||
isTranslate = true
|
||||
} else {
|
||||
isTranslate = false
|
||||
}
|
||||
|
||||
let targetTextSize = self.targetText.update(
|
||||
transition: transition,
|
||||
component: AnyComponent(TextProcessingTextAreaComponent(
|
||||
|
|
@ -423,7 +458,7 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
strings: component.strings,
|
||||
titleFormat: toFormat,
|
||||
title: toTitle,
|
||||
titleAction: component.mode == .translate ? { [weak self] sourceView in
|
||||
titleAction: isTranslate ? { [weak self] sourceView in
|
||||
guard let self, let component = self.component, let result = component.externalState.result else {
|
||||
return
|
||||
}
|
||||
|
|
@ -450,7 +485,7 @@ final class TextProcessingTranslateContentComponent: Component {
|
|||
}
|
||||
component.copyAction?()
|
||||
} : nil,
|
||||
emojify: (component.mode == .translate || component.mode == .stylize) ? (
|
||||
emojify: (isTranslate || component.mode == .stylize) ? (
|
||||
component.externalState.emojify,
|
||||
{ [weak self] in
|
||||
guard let self, let component = self.component else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue