- reaction count limit API

- my profile stories improvements
- recommended channels
This commit is contained in:
Isaac
2024-04-05 22:51:46 +04:00
parent 3689a8a07d
commit fa0929ef95
41 changed files with 2139 additions and 678 deletions

View File

@@ -6,7 +6,7 @@ import MtProtoKit
public enum SearchMessagesLocation: Equatable {
case general(tags: MessageTags?, minDate: Int32?, maxDate: Int32?)
case general(scope: TelegramSearchPeersScope, tags: MessageTags?, minDate: Int32?, maxDate: Int32?)
case group(groupId: PeerGroupId, tags: MessageTags?, minDate: Int32?, maxDate: Int32?)
case peer(peerId: PeerId, fromId: PeerId?, tags: MessageTags?, reactions: [MessageReaction.Reaction]?, threadId: Int64?, minDate: Int32?, maxDate: Int32?)
case sentMedia(tags: MessageTags?)
@@ -401,7 +401,7 @@ func _internal_searchMessages(account: Account, location: SearchMessagesLocation
}
return combineLatest(peerMessages, additionalPeerMessages)
}
case let .general(tags, minDate, maxDate), let .group(_, tags, minDate, maxDate):
case let .general(_, tags, minDate, maxDate), let .group(_, tags, minDate, maxDate):
var flags: Int32 = 0
let folderId: Int32?
if case let .group(groupId, _, _, _) = location {
@@ -410,6 +410,16 @@ func _internal_searchMessages(account: Account, location: SearchMessagesLocation
} else {
folderId = nil
}
if case let .general(scope, _, _, _) = location {
switch scope {
case .everywhere:
break
case .channels:
flags |= (1 << 1)
}
}
let filter: Api.MessagesFilter = tags.flatMap { messageFilterForTagMask($0) } ?? .inputMessagesFilterEmpty
remoteSearchResult = account.postbox.transaction { transaction -> (Int32, MessageIndex?, Api.InputPeer) in
var lowerBound: MessageIndex?
@@ -454,8 +464,14 @@ func _internal_searchMessages(account: Account, location: SearchMessagesLocation
if state?.additional == nil {
switch location {
case let .general(tags, minDate, maxDate), let .group(_, tags, minDate, maxDate):
let secretMessages = transaction.searchMessages(peerId: nil, query: query, tags: tags)
case let .general(_, tags, minDate, maxDate), let .group(_, tags, minDate, maxDate):
let secretMessages: [Message]
if case let .general(scope, _, _, _) = location, case .channels = scope {
secretMessages = []
} else {
secretMessages = transaction.searchMessages(peerId: nil, query: query, tags: tags)
}
var filteredMessages: [Message] = []
var readStates: [PeerId: CombinedPeerReadState] = [:]
var threadInfo:[MessageId : MessageHistoryThreadData] = [:]