MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / searchRequest

Method searchRequest

Telegram/SourceFiles/api/api_messages_search.cpp:102–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102void MessagesSearch::searchRequest() {
103 const auto nextToken = RequestToToken(_request);
104 if (!_offsetId) {
105 const auto it = _cacheOfStartByToken.find(nextToken);
106 if (it != end(_cacheOfStartByToken)) {
107 _requestId = 0;
108 searchReceived(it->second, _requestId, nextToken);
109 return;
110 }
111 }
112 auto callback = [=](Fn<void()> finish) {
113 using Flag = MTPmessages_Search::Flag;
114 const auto from = _request.from;
115 const auto fromPeer = _history->peer->isUser() ? nullptr : from;
116 const auto savedPeer = _history->peer->isSelf() ? from : nullptr;
117 _requestId = _history->session().api().request(MTPmessages_Search(
118 MTP_flags((fromPeer ? Flag::f_from_id : Flag())
119 | (savedPeer ? Flag::f_saved_peer_id : Flag())
120 | (_request.topMsgId ? Flag::f_top_msg_id : Flag())
121 | (_request.tags.empty() ? Flag() : Flag::f_saved_reaction)),
122 _history->peer->input(),
123 MTP_string(_request.query),
124 (fromPeer ? fromPeer->input() : MTP_inputPeerEmpty()),
125 (savedPeer ? savedPeer->input() : MTP_inputPeerEmpty()),
126 MTP_vector_from_range(_request.tags | ranges::views::transform(
127 Data::ReactionToMTP
128 )),
129 MTP_int(_request.topMsgId), // top_msg_id
130 PrepareFilter(_request.filter),
131 MTP_int(0), // min_date
132 MTP_int(0), // max_date
133 MTP_int(_offsetId), // offset_id
134 MTP_int(0), // add_offset
135 MTP_int(kSearchPerPage),
136 MTP_int(0), // max_id
137 MTP_int(0), // min_id
138 MTP_long(0) // hash
139 )).done([=](const TLMessages &result, mtpRequestId id) {
140 _searchInHistoryRequest = 0;
141 searchReceived(result, id, nextToken);
142 finish();
143 }).fail([=](const MTP::Error &error, mtpRequestId id) {
144 _searchInHistoryRequest = 0;
145
146 if (_requestId == id) {
147 _requestId = 0;
148 }
149 if (error.type() == u"SEARCH_QUERY_EMPTY"_q) {
150 _messagesFounds.fire({ 0, MessageIdsList(), nextToken });
151 }
152
153 finish();
154 }).send();
155 return _requestId;
156 };
157 _searchInHistoryRequest = _history->owner().histories().sendRequest(
158 _history,
159 Data::Histories::RequestType::History,

Callers

nothing calls this directly

Calls 15

RequestToTokenFunction · 0.85
MTP_flagsFunction · 0.85
MTP_stringFunction · 0.85
MTP_vector_from_rangeFunction · 0.85
PrepareFilterFunction · 0.85
MTP_longFunction · 0.85
isSelfMethod · 0.80
apiMethod · 0.80
FlagEnum · 0.50
MTP_intFunction · 0.50
finishFunction · 0.50
findMethod · 0.45

Tested by

no test coverage detected