From 4309eb36af727b245c49c1af39adc9952218d2d5 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 23 Nov 2021 15:12:25 +0400 Subject: [PATCH] Various Fixes --- Telegram/Telegram-iOS/Resources/Devices.tgs | Bin 0 -> 18319 bytes .../Sources/LegacyAttachmentMenu.swift | 3 +- .../RecentSessionsController.swift | 2 +- .../RecentSessionsHeaderItem.swift | 2 +- .../PendingMessages/EnqueueMessage.swift | 35 +++++++++++------- .../ChatInterfaceStateContextMenus.swift | 2 + .../Sources/ChatMessageBubbleItemNode.swift | 11 ++++-- 7 files changed, 35 insertions(+), 20 deletions(-) create mode 100644 Telegram/Telegram-iOS/Resources/Devices.tgs diff --git a/Telegram/Telegram-iOS/Resources/Devices.tgs b/Telegram/Telegram-iOS/Resources/Devices.tgs new file mode 100644 index 0000000000000000000000000000000000000000..45402511fd657884d5440aa51254a2b871d82839 GIT binary patch literal 18319 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 literal 0 HcmV?d00001 diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift index 1df5636265..ed26ab5e29 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift @@ -240,7 +240,8 @@ public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocati allItems.append(currentItem) } for item in allItems { - if let asset = item as? TGMediaAsset, asset.uniformTypeIdentifier.contains("heic") { + if item is TGCameraCapturedVideo { + } else if let asset = item as? TGMediaAsset, asset.uniformTypeIdentifier.contains("heic") { hasHeic = true break } diff --git a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift index 01dece6d67..baebc3bbba 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift @@ -316,7 +316,7 @@ private enum RecentSessionsEntry: ItemListNodeEntry { let arguments = arguments as! RecentSessionsControllerArguments switch self { case let .header(_, text): - return RecentSessionsHeaderItem(context: arguments.context, theme: presentationData.theme, text: text, animationName: "Requests", sectionId: self.section, buttonAction: { + return RecentSessionsHeaderItem(context: arguments.context, theme: presentationData.theme, text: text, animationName: "Devices", sectionId: self.section, buttonAction: { arguments.addDevice() }, linkAction: { action in if case let .tap(link) = action { diff --git a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsHeaderItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsHeaderItem.swift index 40964505c3..2b3fd5c41f 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsHeaderItem.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsHeaderItem.swift @@ -139,7 +139,7 @@ class RecentSessionsHeaderItemNode: ListViewItemNode { return (layout, { [weak self] in if let strongSelf = self { if strongSelf.item == nil { - strongSelf.animationNode.setup(source: AnimatedStickerNodeLocalFileSource(name: item.animationName), width: 192, height: 192, playbackMode: .loop, mode: .direct(cachePathPrefix: nil)) + strongSelf.animationNode.setup(source: AnimatedStickerNodeLocalFileSource(name: item.animationName), width: 192, height: 192, playbackMode: .once, mode: .direct(cachePathPrefix: nil)) strongSelf.animationNode.visibility = true } strongSelf.item = item diff --git a/submodules/TelegramCore/Sources/PendingMessages/EnqueueMessage.swift b/submodules/TelegramCore/Sources/PendingMessages/EnqueueMessage.swift index 2506a26b1d..30d5e33023 100644 --- a/submodules/TelegramCore/Sources/PendingMessages/EnqueueMessage.swift +++ b/submodules/TelegramCore/Sources/PendingMessages/EnqueueMessage.swift @@ -682,23 +682,11 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, } else { attributes.append(contentsOf: filterMessageAttributesForOutgoingMessage(sourceMessage.attributes)) } - - let authorId: PeerId? - if let peer = peer as? TelegramChannel { - if case .broadcast = peer.info { - authorId = peer.id - } else if case .group = peer.info, peer.hasPermission(.canBeAnonymous) { - authorId = peer.id - } else { - authorId = account.peerId - } - } else { - authorId = account.peerId - } - + var messageNamespace = Namespaces.Message.Local var entitiesAttribute: TextEntitiesMessageAttribute? var effectiveTimestamp = timestamp + var sendAsPeer: Peer? var threadId: Int64? for attribute in attributes { if let attribute = attribute as? TextEntitiesMessageAttribute { @@ -713,9 +701,28 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, if let threadMessageId = attribute.threadMessageId { threadId = makeMessageThreadId(threadMessageId) } + } else if let attribute = attribute as? SendAsMessageAttribute { + if let peer = transaction.getPeer(attribute.peerId) { + sendAsPeer = peer + } } } + let authorId: PeerId? + if let sendAsPeer = sendAsPeer { + authorId = sendAsPeer.id + } else if let peer = peer as? TelegramChannel { + if case .broadcast = peer.info { + authorId = peer.id + } else if case .group = peer.info, peer.hasPermission(.canBeAnonymous) { + authorId = peer.id + } else { + authorId = account.peerId + } + } else { + authorId = account.peerId + } + if messageNamespace != Namespaces.Message.ScheduledLocal { attributes.removeAll(where: { $0 is OutgoingScheduleInfoMessageAttribute }) } diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift index f51039a1e5..fa5fdfa92a 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift @@ -57,6 +57,8 @@ private func canEditMessage(accountPeerId: PeerId, limitsConfiguration: LimitsCo } } else if message.id.peerId.namespace == Namespaces.Peer.SecretChat || message.id.namespace != Namespaces.Message.Cloud { hasEditRights = false + } else if let author = message.author, author.id.namespace == Namespaces.Peer.CloudChannel && message.id.peerId.namespace == Namespaces.Peer.CloudChannel, !message.flags.contains(.Incoming) { + hasEditRights = true } else if let author = message.author, author.id == accountPeerId, let peer = message.peers[message.id.peerId] { hasEditRights = true if let peer = peer as? TelegramChannel { diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index 57b0965554..c85b7d6dfe 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -993,7 +993,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode var allowAuthor = incoming - if let author = firstMessage.author, author is TelegramChannel, author.id == firstMessage.id.peerId, !incoming { + if let author = firstMessage.author, author is TelegramChannel, !incoming { allowAuthor = true } @@ -2168,14 +2168,19 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode if let nameNode = nameNodeSizeApply.1() { strongSelf.nameNode = nameNode + nameNode.displaysAsynchronously = !item.presentationData.isPreview && !item.presentationData.theme.theme.forceSync + + let previousNameNodeFrame = nameNode.frame + let nameNodeFrame = CGRect(origin: CGPoint(x: contentOrigin.x + layoutConstants.text.bubbleInsets.left, y: layoutConstants.bubble.contentInsets.top + nameNodeOriginY), size: nameNodeSizeApply.0) + nameNode.frame = nameNodeFrame if nameNode.supernode == nil { if !nameNode.isNodeLoaded { nameNode.isUserInteractionEnabled = false } strongSelf.clippingNode.addSubnode(nameNode) + } else { + transition.animatePositionAdditive(node: nameNode, offset: CGPoint(x: previousNameNodeFrame.maxX - nameNodeFrame.maxX, y: 0.0)) } - nameNode.frame = CGRect(origin: CGPoint(x: contentOrigin.x + layoutConstants.text.bubbleInsets.left, y: layoutConstants.bubble.contentInsets.top + nameNodeOriginY), size: nameNodeSizeApply.0) - nameNode.displaysAsynchronously = !item.presentationData.isPreview && !item.presentationData.theme.theme.forceSync if let credibilityIconImage = currentCredibilityIconImage { let credibilityIconNode: ASImageNode