Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios

This commit is contained in:
Ilya Laktyushin 2024-04-30 12:58:29 +04:00
commit 330117ef3e
7 changed files with 40 additions and 29 deletions

View File

@ -143,6 +143,8 @@ genrule(
minimum_os_version = "12.0" minimum_os_version = "12.0"
minimum_watchos_version="9.0" minimum_watchos_version="9.0"
notificationServiceExtensionVersion = "v1"
empty_languages = [ empty_languages = [
"ar", "ar",
"be", "be",
@ -1712,31 +1714,12 @@ plist_fragment(
</dict> </dict>
</dict> </dict>
""".format( """.format(
telegram_bundle_id = telegram_bundle_id, telegram_bundle_id = telegram_bundle_id
) )
) )
'''genrule(
name = "SetMinOsVersionNotificationServiceExtension",
cmd_bash =
"""
name=NotificationServiceExtension.appex
cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<<MIN_OS_VERSION>>>/10\\.0/g" | sed -e "s/<<<NAME>>>/$$name/g" > $(location SetMinOsVersionNotificationServiceExtension.sh)
""",
srcs = [
"PatchMinOSVersion.source.sh",
],
outs = [
"SetMinOsVersionNotificationServiceExtension.sh",
],
executable = True,
visibility = [
"//visibility:public",
]
)'''
ios_extension( ios_extension(
name = "NotificationServiceExtension", name = "NotificationServiceExtension" + notificationServiceExtensionVersion,
bundle_id = "{telegram_bundle_id}.NotificationService".format( bundle_id = "{telegram_bundle_id}.NotificationService".format(
telegram_bundle_id = telegram_bundle_id, telegram_bundle_id = telegram_bundle_id,
), ),
@ -1752,7 +1735,6 @@ ios_extension(
":AppNameInfoPlist", ":AppNameInfoPlist",
], ],
minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions
#ipa_post_processor = ":SetMinOsVersionNotificationServiceExtension",
provisioning_profile = select({ provisioning_profile = select({
":disableProvisioningProfilesSetting": None, ":disableProvisioningProfilesSetting": None,
"//conditions:default": "@build_configuration//provisioning:NotificationService.mobileprovision", "//conditions:default": "@build_configuration//provisioning:NotificationService.mobileprovision",
@ -1997,7 +1979,7 @@ ios_application(
"//conditions:default": [ "//conditions:default": [
":ShareExtension", ":ShareExtension",
":NotificationContentExtension", ":NotificationContentExtension",
":NotificationServiceExtension", ":NotificationServiceExtension" + notificationServiceExtensionVersion,
":IntentsExtension", ":IntentsExtension",
":WidgetExtension", ":WidgetExtension",
":BroadcastUploadExtension", ":BroadcastUploadExtension",

View File

@ -905,11 +905,7 @@ open class ItemListControllerNode: ASDisplayNode, ASGestureRecognizerDelegate {
if let validLayout = self.validLayout { if let validLayout = self.validLayout {
updatedNode.updateLayout(layout: validLayout.0, navigationBarHeight: validLayout.1, transition: .immediate) updatedNode.updateLayout(layout: validLayout.0, navigationBarHeight: validLayout.1, transition: .immediate)
} }
if self.rightOverlayNode.supernode != nil { self.addSubnode(updatedNode)
self.insertSubnode(updatedNode, aboveSubnode: self.rightOverlayNode)
} else {
self.insertSubnode(updatedNode, aboveSubnode: self.listNode)
}
updatedNode.activate() updatedNode.activate()
} }
} else { } else {

View File

@ -123,7 +123,7 @@ public final class AnimatedTextComponent: Component {
color: component.color color: component.color
)), )),
environment: {}, environment: {},
containerSize: CGSize(width: 100.0, height: 100.0) containerSize: CGSize(width: availableSize.width, height: 100.0)
) )
let characterFrame = CGRect(origin: CGPoint(x: size.width, y: 0.0), size: characterSize) let characterFrame = CGRect(origin: CGPoint(x: size.width, y: 0.0), size: characterSize)
if let characterComponentView = characterView.view { if let characterComponentView = characterView.view {

View File

@ -930,6 +930,12 @@ public class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
return ChatMessageBubbleContentTapAction(content: .copy(pre)) return ChatMessageBubbleContentTapAction(content: .copy(pre))
} else if let code = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Code)] as? String { } else if let code = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Code)] as? String {
return ChatMessageBubbleContentTapAction(content: .copy(code)) return ChatMessageBubbleContentTapAction(content: .copy(code))
} else if let _ = attributes[NSAttributedString.Key(rawValue: "Attribute__Blockquote")] {
if let text = self.textNode.textNode.attributeSubstring(name: "Attribute__Blockquote", index: index) {
return ChatMessageBubbleContentTapAction(content: .copy(text.1))
} else {
return ChatMessageBubbleContentTapAction(content: .none)
}
} else if let emoji = attributes[NSAttributedString.Key(rawValue: ChatTextInputAttributes.customEmoji.rawValue)] as? ChatTextInputTextCustomEmojiAttribute, let file = emoji.file { } else if let emoji = attributes[NSAttributedString.Key(rawValue: ChatTextInputAttributes.customEmoji.rawValue)] as? ChatTextInputTextCustomEmojiAttribute, let file = emoji.file {
return ChatMessageBubbleContentTapAction(content: .customEmoji(file)) return ChatMessageBubbleContentTapAction(content: .customEmoji(file))
} else { } else {

View File

@ -268,6 +268,18 @@ private final class PeerInfoScreenLabeledValueItemNode: PeerInfoScreenItemNode {
} }
} }
self.containerNode.shouldBegin = { [weak self] point in
guard let self else {
return false
}
if self.linkItemAtPoint(point) != nil {
return false
}
return true
}
self.containerNode.activated = { [weak self] gesture, _ in self.containerNode.activated = { [weak self] gesture, _ in
guard let strongSelf = self, let item = strongSelf.item, let contextAction = item.contextAction else { guard let strongSelf = self, let item = strongSelf.item, let contextAction = item.contextAction else {
gesture.cancel() gesture.cancel()

View File

@ -2235,6 +2235,12 @@ final class PeerInfoHeaderNode: ASDisplayNode {
return result return result
} }
if self.isSettings {
if self.subtitleNodeRawContainer.bounds.contains(self.view.convert(point, to: self.subtitleNodeRawContainer.view)) {
return self.subtitleNodeRawContainer.view
}
}
if let result = self.buttonsContainerNode.view.hitTest(self.view.convert(point, to: self.buttonsContainerNode.view), with: event) { if let result = self.buttonsContainerNode.view.hitTest(self.view.convert(point, to: self.buttonsContainerNode.view), with: event) {
return result return result
} }

View File

@ -396,6 +396,15 @@ final class AuthorizedApplicationContext {
return return
} }
if firstMessage.restrictionReason(platform: "ios", contentSettings: strongSelf.context.currentContentSettings.with { $0 }) != nil {
return
}
if let chatPeer = firstMessage.peers[firstMessage.id.peerId] {
if EnginePeer(chatPeer).restrictionText(platform: "ios", contentSettings: strongSelf.context.currentContentSettings.with { $0 }) != nil {
return
}
}
if inAppNotificationSettings.displayPreviews { if inAppNotificationSettings.displayPreviews {
let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 }
strongSelf.notificationController.enqueue(ChatMessageNotificationItem(context: strongSelf.context, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, messages: messages, threadData: threadData, tapAction: { strongSelf.notificationController.enqueue(ChatMessageNotificationItem(context: strongSelf.context, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, messages: messages, threadData: threadData, tapAction: {