|
16 | 16 | #include "td/telegram/DialogParticipant.h" |
17 | 17 | #include "td/telegram/DialogParticipantManager.h" |
18 | 18 | #include "td/telegram/FactCheck.h" |
| 19 | +#include "td/telegram/FileReferenceManager.h" |
19 | 20 | #include "td/telegram/files/FileManager.h" |
20 | 21 | #include "td/telegram/FolderId.h" |
21 | 22 | #include "td/telegram/ForumTopicManager.h" |
@@ -86,7 +87,6 @@ class GetRichMessageQuery final : public Td::ResultHandler { |
86 | 87 | return on_error(Status::Error(400, "Chat not found")); |
87 | 88 | } |
88 | 89 | message_id_ = message_full_id.get_message_id(); |
89 | | - CHECK(message_id_.is_server()); |
90 | 90 | send_query(G()->net_query_creator().create( |
91 | 91 | telegram_api::messages_getRichMessage(std::move(input_peer), message_id_.get_server_message_id().get()))); |
92 | 92 | } |
@@ -2145,9 +2145,42 @@ void MessageQueryManager::on_get_affected_history(DialogId dialog_id, AffectedHi |
2145 | 2145 |
|
2146 | 2146 | void MessageQueryManager::get_full_rich_message(MessageFullId message_full_id, |
2147 | 2147 | Promise<td_api::object_ptr<td_api::richMessage>> &&promise) { |
| 2148 | + if (!message_full_id.get_message_id().is_server()) { |
| 2149 | + return promise.set_error(400, "Invalid message specified"); |
| 2150 | + } |
2148 | 2151 | td_->create_handler<GetRichMessageQuery>(std::move(promise))->send(message_full_id); |
2149 | 2152 | } |
2150 | 2153 |
|
| 2154 | +void MessageQueryManager::reload_full_rich_message(MessageFullId message_full_id, Promise<Unit> &&promise) { |
| 2155 | + return get_full_rich_message( |
| 2156 | + message_full_id, PromiseCreator::lambda([promise = std::move(promise)]( |
| 2157 | + Result<td_api::object_ptr<td_api::richMessage>> result) mutable { |
| 2158 | + if (result.is_error()) { |
| 2159 | + promise.set_error(result.move_as_error()); |
| 2160 | + } else { |
| 2161 | + promise.set_value(Unit()); |
| 2162 | + } |
| 2163 | + })); |
| 2164 | +} |
| 2165 | + |
| 2166 | +FileSourceId MessageQueryManager::get_rich_message_file_source_id(MessageFullId message_full_id) { |
| 2167 | + if (td_->auth_manager_->is_bot()) { |
| 2168 | + return FileSourceId(); |
| 2169 | + } |
| 2170 | + |
| 2171 | + auto dialog_id = message_full_id.get_dialog_id(); |
| 2172 | + auto message_id = message_full_id.get_message_id(); |
| 2173 | + if (!dialog_id.is_valid() || dialog_id.get_type() == DialogType::SecretChat || !message_id.is_server()) { |
| 2174 | + return FileSourceId(); |
| 2175 | + } |
| 2176 | + |
| 2177 | + auto &file_source_id = rich_message_full_id_to_file_source_id_[message_full_id]; |
| 2178 | + if (!file_source_id.is_valid()) { |
| 2179 | + file_source_id = td_->file_reference_manager_->create_rich_message_file_source(message_full_id); |
| 2180 | + } |
| 2181 | + return file_source_id; |
| 2182 | +} |
| 2183 | + |
2151 | 2184 | void MessageQueryManager::upload_message_covers(BusinessConnectionId business_connection_id, DialogId dialog_id, |
2152 | 2185 | vector<MessageCover> covers, Promise<Unit> &&promise) { |
2153 | 2186 | TRY_STATUS_PROMISE(promise, G()->close_status()); |
|
0 commit comments