summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Preston <johnprestonmail@gmail.com>2022-03-16 20:14:50 +0400
committerJohn Preston <johnprestonmail@gmail.com>2022-03-16 20:14:50 +0400
commiteec2992be5ed3a3fcb04c2506b77455668dd5b16 (patch)
tree26631d38882228de24b979385bcc1da4cb345545
parent81f9d043d012c6588d708de98a7df5301b3d3a20 (diff)
Version 3.6.1: Fix video-from-webpage-preview download.v3.6.1
-rw-r--r--Telegram/SourceFiles/data/data_download_manager.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/Telegram/SourceFiles/data/data_download_manager.cpp b/Telegram/SourceFiles/data/data_download_manager.cpp
index a127f60b87..f2d248e71b 100644
--- a/Telegram/SourceFiles/data/data_download_manager.cpp
+++ b/Telegram/SourceFiles/data/data_download_manager.cpp
@@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_photo.h"
#include "data/data_document.h"
#include "data/data_document_media.h"
+#include "data/data_web_page.h"
#include "data/data_changes.h"
#include "data/data_user.h"
#include "data/data_channel.h"
@@ -63,6 +64,28 @@ constexpr auto ByDocument = [](const auto &entry) {
return 0;
}
+[[nodiscard]] PhotoData *ItemPhoto(not_null<HistoryItem*> item) {
+ if (const auto media = item->media()) {
+ if (const auto page = media->webpage()) {
+ return page->document ? nullptr : page->photo;
+ } else if (const auto photo = media->photo()) {
+ return photo;
+ }
+ }
+ return nullptr;
+}
+
+[[nodiscard]] DocumentData *ItemDocument(not_null<HistoryItem*> item) {
+ if (const auto media = item->media()) {
+ if (const auto page = media->webpage()) {
+ return page->document;
+ } else if (const auto document = media->document()) {
+ return document;
+ }
+ }
+ return nullptr;
+}
+
struct DocumentDescriptor {
uint64 sessionUniqueId = 0;
DocumentId documentId = 0;
@@ -219,9 +242,8 @@ void DownloadManager::check(
std::vector<DownloadingId>::iterator i) {
auto &entry = *i;
- const auto media = entry.object.item->media();
- const auto photo = media ? media->photo() : nullptr;
- const auto document = media ? media->document() : nullptr;
+ const auto photo = ItemPhoto(entry.object.item);
+ const auto document = ItemDocument(entry.object.item);
if (entry.object.photo != photo || entry.object.document != document) {
cancel(data, i);
return;