From c9bd0ab7255691ccdb8cfcb0f5ee9c300b2272b3 Mon Sep 17 00:00:00 2001
From: 23rd <23rd@vivaldi.net>
Date: Mon, 16 May 2022 12:20:31 +0300
Subject: [PATCH] Replaced MTP types with type aliases for shared media api.

---
 Telegram/CMakeLists.txt                       |  4 ++--
 Telegram/SourceFiles/apiwrap.cpp              | 20 +++++++++----------
 Telegram/SourceFiles/apiwrap.h                |  6 +++---
 .../data/data_search_controller.cpp           |  9 +++++----
 .../SourceFiles/data/data_search_controller.h |  8 +++++---
 5 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt
index 65075973d..40817933d 100644
--- a/Telegram/CMakeLists.txt
+++ b/Telegram/CMakeLists.txt
@@ -477,8 +477,8 @@ PRIVATE
     data/data_media_rotation.h
     data/data_media_types.cpp
     data/data_media_types.h
-    data/data_messages.cpp
-    data/data_messages.h
+    # data/data_messages.cpp
+    # data/data_messages.h
     data/data_message_reactions.cpp
     data/data_message_reactions.h
     data/data_msg_id.h
diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp
index 65e7e3d96..18ae93278 100644
--- a/Telegram/SourceFiles/apiwrap.cpp
+++ b/Telegram/SourceFiles/apiwrap.cpp
@@ -2906,10 +2906,16 @@ void ApiWrap::requestSharedMedia(
 	histories.sendRequest(history, requestType, [=](Fn<void()> finish) {
 		return request(
 			std::move(*prepared)
-		).done([=](const MTPmessages_Messages &result) {
+		).done([=](const Api::SearchRequestResult &result) {
 			const auto key = std::make_tuple(peer, type, messageId, slice);
 			_sharedMediaRequests.remove(key);
-			sharedMediaDone(peer, type, messageId, slice, result);
+			auto parsed = Api::ParseSearchResult(
+				peer,
+				type,
+				messageId,
+				slice,
+				result);
+			sharedMediaDone(peer, type, std::move(parsed));
 			finish();
 		}).fail([=] {
 			_sharedMediaRequests.remove(key);
@@ -2922,15 +2928,7 @@ void ApiWrap::requestSharedMedia(
 void ApiWrap::sharedMediaDone(
 		not_null<PeerData*> peer,
 		SharedMediaType type,
-		MsgId messageId,
-		SliceType slice,
-		const MTPmessages_Messages &result) {
-	auto parsed = Api::ParseSearchResult(
-		peer,
-		type,
-		messageId,
-		slice,
-		result);
+		Api::SearchResult &&parsed) {
 	_session->storage().add(Storage::SharedMediaAddSlice(
 		peer->id,
 		type,
diff --git a/Telegram/SourceFiles/apiwrap.h b/Telegram/SourceFiles/apiwrap.h
index ab234b19c..be4b9f1c4 100644
--- a/Telegram/SourceFiles/apiwrap.h
+++ b/Telegram/SourceFiles/apiwrap.h
@@ -53,6 +53,8 @@ struct PreparedList;
 
 namespace Api {
 
+struct SearchResult;
+
 class Updates;
 class Authorizations;
 class AttachedStickers;
@@ -450,9 +452,7 @@ private:
 	void sharedMediaDone(
 		not_null<PeerData*> peer,
 		SharedMediaType type,
-		MsgId messageId,
-		SliceType slice,
-		const MTPmessages_Messages &result);
+		Api::SearchResult &&parsed);
 
 	void sendSharedContact(
 		const QString &phone,
diff --git a/Telegram/SourceFiles/data/data_search_controller.cpp b/Telegram/SourceFiles/data/data_search_controller.cpp
index 76c2182f0..6dc598e49 100644
--- a/Telegram/SourceFiles/data/data_search_controller.cpp
+++ b/Telegram/SourceFiles/data/data_search_controller.cpp
@@ -20,11 +20,12 @@ namespace Api {
 namespace {
 
 constexpr auto kSharedMediaLimit = 100;
+constexpr auto kFirstSharedMediaLimit = 0;
 constexpr auto kDefaultSearchTimeoutMs = crl::time(200);
 
 } // namespace
 
-std::optional<MTPmessages_Search> PrepareSearchRequest(
+std::optional<SearchRequest> PrepareSearchRequest(
 		not_null<PeerData*> peer,
 		Storage::SharedMediaType type,
 		const QString &query,
@@ -66,7 +67,7 @@ std::optional<MTPmessages_Search> PrepareSearchRequest(
 
 	const auto minId = 0;
 	const auto maxId = 0;
-	const auto limit = messageId ? kSharedMediaLimit : 0;
+	const auto limit = messageId ? kSharedMediaLimit : kFirstSharedMediaLimit;
 	const auto offsetId = [&] {
 		switch (direction) {
 		case Data::LoadDirection::Before:
@@ -111,7 +112,7 @@ SearchResult ParseSearchResult(
 		Storage::SharedMediaType type,
 		MsgId messageId,
 		Data::LoadDirection direction,
-		const MTPmessages_Messages &data) {
+		const SearchRequestResult &data) {
 	auto result = SearchResult();
 	result.noSkipRange = MsgRange{ messageId, messageId };
 
@@ -382,7 +383,7 @@ void SearchController::requestMore(
 	auto requestId = histories.sendRequest(history, type, [=](Fn<void()> finish) {
 		return _session->api().request(
 			std::move(*prepared)
-		).done([=](const MTPmessages_Messages &result) {
+		).done([=](const SearchRequestResult &result) {
 			listData->requests.remove(key);
 			auto parsed = ParseSearchResult(
 				listData->peer,
diff --git a/Telegram/SourceFiles/data/data_search_controller.h b/Telegram/SourceFiles/data/data_search_controller.h
index ba98c1af4..27f0904d2 100644
--- a/Telegram/SourceFiles/data/data_search_controller.h
+++ b/Telegram/SourceFiles/data/data_search_controller.h
@@ -7,7 +7,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 */
 #pragma once
 
-#include "mtproto/sender.h"
 #include "data/data_sparse_ids.h"
 #include "storage/storage_sparse_ids_list.h"
 #include "storage/storage_shared_media.h"
@@ -30,7 +29,10 @@ struct SearchResult {
 	int fullCount = 0;
 };
 
-std::optional<MTPmessages_Search> PrepareSearchRequest(
+using SearchRequest = MTPmessages_Search;
+using SearchRequestResult = MTPmessages_Messages;
+
+std::optional<SearchRequest> PrepareSearchRequest(
 	not_null<PeerData*> peer,
 	Storage::SharedMediaType type,
 	const QString &query,
@@ -42,7 +44,7 @@ SearchResult ParseSearchResult(
 	Storage::SharedMediaType type,
 	MsgId messageId,
 	Data::LoadDirection direction,
-	const MTPmessages_Messages &data);
+	const SearchRequestResult &data);
 
 class SearchController final {
 public: