Attachment Menu Improvements

This commit is contained in:
Ilya Laktyushin
2022-02-15 21:48:46 +03:00
parent 95b6b44d0a
commit 2efbb9170f
40 changed files with 875 additions and 886 deletions

View File

@@ -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