Version 10.13

This commit is contained in:
Kylmakalle
2024-07-02 19:58:37 +03:00
parent 1d1ea447ad
commit 1cfbc5b7cd
634 changed files with 30999 additions and 1244 deletions

View File

@@ -66,6 +66,7 @@ public enum SendMessageActionSheetControllerParams {
}
public func makeChatSendMessageActionSheetController(
sgTranslationContext: (outgoingMessageTranslateToLang: String?, translate: (() -> Void)?, changeTranslationLanguage: (() -> ())?) = (outgoingMessageTranslateToLang: nil, translate: nil, changeTranslationLanguage: nil),
initialData: ChatSendMessageContextScreen.InitialData,
context: AccountContext,
updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)? = nil,
@@ -87,6 +88,7 @@ public func makeChatSendMessageActionSheetController(
isPremium: Bool = false
) -> ChatSendMessageActionSheetController {
return ChatSendMessageContextScreen(
sgTranslationContext: sgTranslationContext,
initialData: initialData,
context: context,
updatedPresentationData: updatedPresentationData,

View File

@@ -53,6 +53,7 @@ public protocol ChatSendMessageContextScreenMediaPreview: AnyObject {
final class ChatSendMessageContextScreenComponent: Component {
typealias EnvironmentType = ViewControllerComponentContainer.Environment
let sgTranslationContext: (outgoingMessageTranslateToLang: String?, translate: (() -> Void)?, changeTranslationLanguage: (() -> ())?)
let initialData: ChatSendMessageContextScreen.InitialData
let context: AccountContext
let updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?
@@ -72,8 +73,9 @@ final class ChatSendMessageContextScreenComponent: Component {
let reactionItems: [ReactionItem]?
let availableMessageEffects: AvailableMessageEffects?
let isPremium: Bool
// MARK: Swiftgram
init(
sgTranslationContext: (outgoingMessageTranslateToLang: String?, translate: (() -> Void)?, changeTranslationLanguage: (() -> ())?) = (outgoingMessageTranslateToLang: nil, translate: nil, changeTranslationLanguage: nil),
initialData: ChatSendMessageContextScreen.InitialData,
context: AccountContext,
updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?,
@@ -94,6 +96,7 @@ final class ChatSendMessageContextScreenComponent: Component {
availableMessageEffects: AvailableMessageEffects?,
isPremium: Bool
) {
self.sgTranslationContext = sgTranslationContext
self.initialData = initialData
self.context = context
self.updatedPresentationData = updatedPresentationData
@@ -631,6 +634,78 @@ final class ChatSendMessageContextScreenComponent: Component {
)))
}
// MARK: Swiftgram
if !isSecret {
if let outgoingMessageTranslateToLang = component.sgTranslationContext.outgoingMessageTranslateToLang {
var languageCode = presentationData.strings.baseLanguageCode
let rawSuffix = "-raw"
if languageCode.hasSuffix(rawSuffix) {
languageCode = String(languageCode.dropLast(rawSuffix.count))
}
// Assuming, user want to send message in the same language the chat is
let toLang = outgoingMessageTranslateToLang
let key = "Translation.Language.\(toLang)"
let translateTitle: String
if let string = presentationData.strings.primaryComponent.dict[key] {
translateTitle = presentationData.strings.Conversation_Translation_TranslateTo(string).string
} else {
let languageLocale = Locale(identifier: languageCode)
let toLanguage = languageLocale.localizedString(forLanguageCode: toLang) ?? ""
translateTitle = presentationData.strings.Conversation_Translation_TranslateToOther(toLanguage).string
}
items.append(.action(ContextMenuActionItem(
id: AnyHashable("sgTranslate"),
text: translateTitle,
icon: { theme in
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Translate"), color: theme.contextMenu.primaryColor)
}, action: { [weak self] _, _ in
guard let self, let component = self.component else {
return
}
self.animateOutToEmpty = true
component.sgTranslationContext.translate?()
self.environment?.controller()?.dismiss()
}
)))
items.append(.action(ContextMenuActionItem(
id: AnyHashable("sgChangeTranslateLang"),
text: presentationData.strings.Translate_ChangeLanguage,
icon: { theme in
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Caption"), color: theme.contextMenu.primaryColor)
}, action: { [weak self] _, _ in
guard let self, let component = self.component else {
return
}
self.animateOutToEmpty = true
self.environment?.controller()?.dismiss()
component.sgTranslationContext.changeTranslationLanguage?()
}
)))
} else {
items.append(.action(ContextMenuActionItem(
id: AnyHashable("sgChangeTranslateLang"),
text: presentationData.strings.Conversation_Translation_TranslateToOther("...").string,
icon: { theme in
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Caption"), color: theme.contextMenu.primaryColor)
}, action: { [weak self] _, _ in
guard let self, let component = self.component else {
return
}
self.animateOutToEmpty = true
self.environment?.controller()?.dismiss()
component.sgTranslationContext.changeTranslationLanguage?()
}
)))
}
}
if case .separator = items.last {
items.removeLast()
}
@@ -1413,6 +1488,7 @@ public class ChatSendMessageContextScreen: ViewControllerComponentContainer, Cha
}
public init(
sgTranslationContext: (outgoingMessageTranslateToLang: String?, translate: (() -> Void)?, changeTranslationLanguage: (() -> ())?) = (outgoingMessageTranslateToLang: nil, translate: nil, changeTranslationLanguage: nil),
initialData: InitialData,
context: AccountContext,
updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?,
@@ -1438,6 +1514,7 @@ public class ChatSendMessageContextScreen: ViewControllerComponentContainer, Cha
super.init(
context: context,
component: ChatSendMessageContextScreenComponent(
sgTranslationContext: sgTranslationContext,
initialData: initialData,
context: context,
updatedPresentationData: updatedPresentationData,