[WIP] Quick replies

This commit is contained in:
Isaac
2024-02-23 15:26:33 +04:00
parent 4dbe7344e5
commit 6ed9cef40a
82 changed files with 2999 additions and 1149 deletions

View File

@@ -138,6 +138,15 @@ public enum EnqueueMessage {
}
}
public func withUpdatedThreadId(_ threadId: Int64?) -> EnqueueMessage {
switch self {
case let .message(text, attributes, inlineStickers, mediaReference, _, replyToMessageId, replyToStoryId, localGroupingKey, correlationId, bubbleUpEmojiOrStickersets):
return .message(text: text, attributes: attributes, inlineStickers: inlineStickers, mediaReference: mediaReference, threadId: threadId, replyToMessageId: replyToMessageId, replyToStoryId: replyToStoryId, localGroupingKey: localGroupingKey, correlationId: correlationId, bubbleUpEmojiOrStickersets: bubbleUpEmojiOrStickersets)
case let .forward(source, _, grouping, attributes, correlationId):
return .forward(source: source, threadId: threadId, grouping: grouping, attributes: attributes, correlationId: correlationId)
}
}
public var groupingKey: Int64? {
if case let .message(_, _, _, _, _, _, _, localGroupingKey, _, _) = self {
return localGroupingKey
@@ -225,6 +234,8 @@ private func filterMessageAttributesForOutgoingMessage(_ attributes: [MessageAtt
return true
case _ as OutgoingScheduleInfoMessageAttribute:
return true
case _ as OutgoingQuickReplyMessageAttribute:
return true
case _ as EmbeddedMediaStickersMessageAttribute:
return true
case _ as EmojiSearchQueryMessageAttribute:
@@ -254,6 +265,8 @@ private func filterMessageAttributesForForwardedMessage(_ attributes: [MessageAt
return true
case _ as OutgoingScheduleInfoMessageAttribute:
return true
case _ as OutgoingQuickReplyMessageAttribute:
return true
case _ as ForwardOptionsMessageAttribute:
return true
case _ as SendAsMessageAttribute:
@@ -673,6 +686,9 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
messageNamespace = Namespaces.Message.ScheduledLocal
effectiveTimestamp = attribute.scheduleTime
}
} else if attribute is OutgoingQuickReplyMessageAttribute {
messageNamespace = Namespaces.Message.QuickReplyLocal
effectiveTimestamp = 0
} else if let attribute = attribute as? SendAsMessageAttribute {
if let peer = transaction.getPeer(attribute.peerId) {
sendAsPeer = peer
@@ -698,11 +714,14 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
if messageNamespace != Namespaces.Message.ScheduledLocal {
attributes.removeAll(where: { $0 is OutgoingScheduleInfoMessageAttribute })
}
if messageNamespace != Namespaces.Message.QuickReplyLocal {
attributes.removeAll(where: { $0 is OutgoingQuickReplyMessageAttribute })
}
if let peer = peer as? TelegramChannel {
switch peer.info {
case let .broadcast(info):
if messageNamespace != Namespaces.Message.ScheduledLocal {
if messageNamespace != Namespaces.Message.ScheduledLocal && messageNamespace != Namespaces.Message.QuickReplyLocal {
attributes.append(ViewCountMessageAttribute(count: 1))
}
if info.flags.contains(.messagesShouldHaveSignatures) {
@@ -911,6 +930,9 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
messageNamespace = Namespaces.Message.ScheduledLocal
effectiveTimestamp = attribute.scheduleTime
}
} else if attribute is OutgoingQuickReplyMessageAttribute {
messageNamespace = Namespaces.Message.QuickReplyLocal
effectiveTimestamp = 0
} else if let attribute = attribute as? ReplyMessageAttribute {
if let threadMessageId = attribute.threadMessageId {
threadId = Int64(threadMessageId.id)
@@ -940,6 +962,9 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId,
if messageNamespace != Namespaces.Message.ScheduledLocal {
attributes.removeAll(where: { $0 is OutgoingScheduleInfoMessageAttribute })
}
if messageNamespace != Namespaces.Message.QuickReplyLocal {
attributes.removeAll(where: { $0 is OutgoingQuickReplyMessageAttribute })
}
let (tags, globalTags) = tagsForStoreMessage(incoming: false, attributes: attributes, media: sourceMessage.media, textEntities: entitiesAttribute?.entities, isPinned: false)