mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Attachment Menu Improvements
This commit is contained in:
@@ -10,6 +10,7 @@ public enum SearchMessagesLocation: Equatable {
|
||||
case group(groupId: PeerGroupId, tags: MessageTags?, minDate: Int32?, maxDate: Int32?)
|
||||
case peer(peerId: PeerId, fromId: PeerId?, tags: MessageTags?, topMsgId: MessageId?, minDate: Int32?, maxDate: Int32?)
|
||||
case publicForwards(messageId: MessageId, datacenterId: Int?)
|
||||
case recentDocuments
|
||||
}
|
||||
|
||||
private struct SearchMessagesPeerState: Equatable {
|
||||
@@ -337,7 +338,43 @@ func _internal_searchMessages(account: Account, location: SearchMessagesLocation
|
||||
|> `catch` { _ -> Signal<(Api.messages.Messages?, Api.messages.Messages?), NoError> in
|
||||
return .single((nil, nil))
|
||||
}
|
||||
}
|
||||
}
|
||||
case .recentDocuments:
|
||||
let filter: Api.MessagesFilter = messageFilterForTagMask(.file) ?? .inputMessagesFilterEmpty
|
||||
let peerId = account.peerId
|
||||
|
||||
remoteSearchResult = account.postbox.transaction { transaction -> Peer? in
|
||||
guard let peer = transaction.getPeer(peerId) else {
|
||||
return nil
|
||||
}
|
||||
return peer
|
||||
}
|
||||
|> mapToSignal { peer -> Signal<(Api.messages.Messages?, Api.messages.Messages?), NoError> in
|
||||
guard let peer = peer else {
|
||||
return .single((nil, nil))
|
||||
}
|
||||
let inputPeer = Api.InputPeer.inputPeerEmpty
|
||||
|
||||
var flags: Int32 = 0
|
||||
|
||||
let fromInputPeer = apiInputPeer(peer)
|
||||
flags |= (1 << 0)
|
||||
|
||||
let peerMessages: Signal<Api.messages.Messages?, NoError>
|
||||
if let completed = state?.main.completed, completed {
|
||||
peerMessages = .single(nil)
|
||||
} else {
|
||||
let lowerBound = state?.main.messages.last.flatMap({ $0.index })
|
||||
let signal = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputPeer, topMsgId: nil, filter: filter, minDate: 0, maxDate: (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0))
|
||||
|
||||
peerMessages = signal
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<Api.messages.Messages?, NoError> in
|
||||
return .single(nil)
|
||||
}
|
||||
}
|
||||
return combineLatest(peerMessages, .single(nil))
|
||||
}
|
||||
}
|
||||
|
||||
return remoteSearchResult
|
||||
|
||||
Reference in New Issue
Block a user