Use new next_rate field for global search.
This commit is contained in:
		
							parent
							
								
									6b80ff4bcc
								
							
						
					
					
						commit
						f5c79cb1b6
					
				
					 2 changed files with 18 additions and 9 deletions
				
			
		| 
						 | 
					@ -721,6 +721,7 @@ bool Widget::onSearchMessages(bool searchCache) {
 | 
				
			||||||
		if (i != _searchCache.cend()) {
 | 
							if (i != _searchCache.cend()) {
 | 
				
			||||||
			_searchQuery = q;
 | 
								_searchQuery = q;
 | 
				
			||||||
			_searchQueryFrom = _searchFromUser;
 | 
								_searchQueryFrom = _searchFromUser;
 | 
				
			||||||
 | 
								_searchNextRate = 0;
 | 
				
			||||||
			_searchFull = _searchFullMigrated = false;
 | 
								_searchFull = _searchFullMigrated = false;
 | 
				
			||||||
			MTP::cancel(base::take(_searchRequest));
 | 
								MTP::cancel(base::take(_searchRequest));
 | 
				
			||||||
			searchReceived(
 | 
								searchReceived(
 | 
				
			||||||
| 
						 | 
					@ -734,6 +735,7 @@ bool Widget::onSearchMessages(bool searchCache) {
 | 
				
			||||||
	} else if (_searchQuery != q || _searchQueryFrom != _searchFromUser) {
 | 
						} else if (_searchQuery != q || _searchQueryFrom != _searchFromUser) {
 | 
				
			||||||
		_searchQuery = q;
 | 
							_searchQuery = q;
 | 
				
			||||||
		_searchQueryFrom = _searchFromUser;
 | 
							_searchQueryFrom = _searchFromUser;
 | 
				
			||||||
 | 
							_searchNextRate = 0;
 | 
				
			||||||
		_searchFull = _searchFullMigrated = false;
 | 
							_searchFull = _searchFullMigrated = false;
 | 
				
			||||||
		MTP::cancel(base::take(_searchRequest));
 | 
							MTP::cancel(base::take(_searchRequest));
 | 
				
			||||||
		if (const auto peer = _searchInChat.peer()) {
 | 
							if (const auto peer = _searchInChat.peer()) {
 | 
				
			||||||
| 
						 | 
					@ -869,7 +871,6 @@ void Widget::searchMessages(
 | 
				
			||||||
void Widget::onSearchMore() {
 | 
					void Widget::onSearchMore() {
 | 
				
			||||||
	if (!_searchRequest) {
 | 
						if (!_searchRequest) {
 | 
				
			||||||
		if (!_searchFull) {
 | 
							if (!_searchFull) {
 | 
				
			||||||
			auto offsetDate = _inner->lastSearchDate();
 | 
					 | 
				
			||||||
			auto offsetPeer = _inner->lastSearchPeer();
 | 
								auto offsetPeer = _inner->lastSearchPeer();
 | 
				
			||||||
			auto offsetId = _inner->lastSearchId();
 | 
								auto offsetId = _inner->lastSearchId();
 | 
				
			||||||
			if (const auto peer = _searchInChat.peer()) {
 | 
								if (const auto peer = _searchInChat.peer()) {
 | 
				
			||||||
| 
						 | 
					@ -912,7 +913,7 @@ void Widget::onSearchMore() {
 | 
				
			||||||
				_searchRequest = MTP::send(
 | 
									_searchRequest = MTP::send(
 | 
				
			||||||
					MTPmessages_SearchGlobal(
 | 
										MTPmessages_SearchGlobal(
 | 
				
			||||||
						MTP_string(_searchQuery),
 | 
											MTP_string(_searchQuery),
 | 
				
			||||||
						MTP_int(offsetDate),
 | 
											MTP_int(_searchNextRate),
 | 
				
			||||||
						offsetPeer
 | 
											offsetPeer
 | 
				
			||||||
							? offsetPeer->input
 | 
												? offsetPeer->input
 | 
				
			||||||
							: MTP_inputPeerEmpty(),
 | 
												: MTP_inputPeerEmpty(),
 | 
				
			||||||
| 
						 | 
					@ -977,12 +978,11 @@ void Widget::searchReceived(
 | 
				
			||||||
				session().data().processChats(d.vchats);
 | 
									session().data().processChats(d.vchats);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			auto &msgs = d.vmessages.v;
 | 
								auto &msgs = d.vmessages.v;
 | 
				
			||||||
			if (!_inner->searchReceived(msgs, type, msgs.size())) {
 | 
								_inner->searchReceived(msgs, type, msgs.size());
 | 
				
			||||||
				if (type == SearchRequestType::MigratedFromStart || type == SearchRequestType::MigratedFromOffset) {
 | 
								if (type == SearchRequestType::MigratedFromStart || type == SearchRequestType::MigratedFromOffset) {
 | 
				
			||||||
					_searchFullMigrated = true;
 | 
									_searchFullMigrated = true;
 | 
				
			||||||
				} else {
 | 
								} else {
 | 
				
			||||||
					_searchFull = true;
 | 
									_searchFull = true;
 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} break;
 | 
							} break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -994,7 +994,15 @@ void Widget::searchReceived(
 | 
				
			||||||
				session().data().processChats(d.vchats);
 | 
									session().data().processChats(d.vchats);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			auto &msgs = d.vmessages.v;
 | 
								auto &msgs = d.vmessages.v;
 | 
				
			||||||
			if (!_inner->searchReceived(msgs, type, d.vcount.v)) {
 | 
								const auto someAdded = _inner->searchReceived(msgs, type, d.vcount.v);
 | 
				
			||||||
 | 
								const auto rateUpdated = d.has_next_rate() && (d.vnext_rate.v != _searchNextRate);
 | 
				
			||||||
 | 
								const auto finished = (type == SearchRequestType::FromStart || type == SearchRequestType::FromOffset)
 | 
				
			||||||
 | 
									? !rateUpdated
 | 
				
			||||||
 | 
									: !someAdded;
 | 
				
			||||||
 | 
								if (rateUpdated) {
 | 
				
			||||||
 | 
									_searchNextRate = d.vnext_rate.v;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (finished) {
 | 
				
			||||||
				if (type == SearchRequestType::MigratedFromStart || type == SearchRequestType::MigratedFromOffset) {
 | 
									if (type == SearchRequestType::MigratedFromStart || type == SearchRequestType::MigratedFromOffset) {
 | 
				
			||||||
					_searchFullMigrated = true;
 | 
										_searchFullMigrated = true;
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -210,6 +210,7 @@ private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QString _searchQuery;
 | 
						QString _searchQuery;
 | 
				
			||||||
	UserData *_searchQueryFrom = nullptr;
 | 
						UserData *_searchQueryFrom = nullptr;
 | 
				
			||||||
 | 
						int32 _searchNextRate = 0;
 | 
				
			||||||
	bool _searchFull = false;
 | 
						bool _searchFull = false;
 | 
				
			||||||
	bool _searchFullMigrated = false;
 | 
						bool _searchFullMigrated = false;
 | 
				
			||||||
	mtpRequestId _searchRequest = 0;
 | 
						mtpRequestId _searchRequest = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue