Fix crash

This commit is contained in:
Andrea Cavalli 2021-01-17 12:44:07 +01:00
parent 919711d003
commit c3a9f9fe2d
2 changed files with 49 additions and 44 deletions

View File

@ -15,6 +15,7 @@
#include "td/telegram/VideosManager.h"
#include "td/utils/algorithm.h"
#include "Document.hpp"
namespace td {
@ -36,24 +37,26 @@ void Document::append_file_ids(const Td *td, vector<FileId> &file_ids) const {
file_ids.push_back(file_id);
FileId thumbnail_file_id = [&] {
switch (type) {
case Type::Animation:
return td->animations_manager_->get_animation_thumbnail_file_id(file_id);
case Type::Audio:
return td->audios_manager_->get_audio_thumbnail_file_id(file_id);
case Type::General:
return td->documents_manager_->get_document_thumbnail_file_id(file_id);
case Type::Video:
return td->videos_manager_->get_video_thumbnail_file_id(file_id);
case Type::VideoNote:
return td->video_notes_manager_->get_video_note_thumbnail_file_id(file_id);
default:
return FileId();
if (!G()->shared_config().get_option_boolean("disable_minithumbnails")) {
FileId thumbnail_file_id = [&] {
switch (type) {
case Type::Animation:
return td->animations_manager_->get_animation_thumbnail_file_id(file_id);
case Type::Audio:
return td->audios_manager_->get_audio_thumbnail_file_id(file_id);
case Type::General:
return td->documents_manager_->get_document_thumbnail_file_id(file_id);
case Type::Video:
return td->videos_manager_->get_video_thumbnail_file_id(file_id);
case Type::VideoNote:
return td->video_notes_manager_->get_video_note_thumbnail_file_id(file_id);
default:
return FileId();
}
}();
if (thumbnail_file_id.is_valid()) {
file_ids.push_back(thumbnail_file_id);
}
}();
if (thumbnail_file_id.is_valid()) {
file_ids.push_back(thumbnail_file_id);
}
FileId animated_thumbnail_file_id = [&] {

View File

@ -4943,34 +4943,36 @@ void update_message_content_file_id_remote(MessageContent *content, FileId file_
}
FileId get_message_content_thumbnail_file_id(const MessageContent *content, const Td *td) {
switch (content->get_type()) {
case MessageContentType::Animation:
return td->animations_manager_->get_animation_thumbnail_file_id(
static_cast<const MessageAnimation *>(content)->file_id);
case MessageContentType::Audio:
return td->audios_manager_->get_audio_thumbnail_file_id(static_cast<const MessageAudio *>(content)->file_id);
case MessageContentType::Document:
return td->documents_manager_->get_document_thumbnail_file_id(
static_cast<const MessageDocument *>(content)->file_id);
case MessageContentType::Photo:
for (auto &size : static_cast<const MessagePhoto *>(content)->photo.photos) {
if (size.type == 't') {
return size.file_id;
if (!G()->shared_config().get_option_boolean("disable_minithumbnails")) {
switch (content->get_type()) {
case MessageContentType::Animation:
return td->animations_manager_->get_animation_thumbnail_file_id(
static_cast<const MessageAnimation *>(content)->file_id);
case MessageContentType::Audio:
return td->audios_manager_->get_audio_thumbnail_file_id(static_cast<const MessageAudio *>(content)->file_id);
case MessageContentType::Document:
return td->documents_manager_->get_document_thumbnail_file_id(
static_cast<const MessageDocument *>(content)->file_id);
case MessageContentType::Photo:
for (auto &size : static_cast<const MessagePhoto *>(content)->photo.photos) {
if (size.type == 't') {
return size.file_id;
}
}
}
break;
case MessageContentType::Sticker:
return td->stickers_manager_->get_sticker_thumbnail_file_id(
static_cast<const MessageSticker *>(content)->file_id);
case MessageContentType::Video:
return td->videos_manager_->get_video_thumbnail_file_id(static_cast<const MessageVideo *>(content)->file_id);
case MessageContentType::VideoNote:
return td->video_notes_manager_->get_video_note_thumbnail_file_id(
static_cast<const MessageVideoNote *>(content)->file_id);
case MessageContentType::VoiceNote:
return FileId();
default:
break;
break;
case MessageContentType::Sticker:
return td->stickers_manager_->get_sticker_thumbnail_file_id(
static_cast<const MessageSticker *>(content)->file_id);
case MessageContentType::Video:
return td->videos_manager_->get_video_thumbnail_file_id(static_cast<const MessageVideo *>(content)->file_id);
case MessageContentType::VideoNote:
return td->video_notes_manager_->get_video_note_thumbnail_file_id(
static_cast<const MessageVideoNote *>(content)->file_id);
case MessageContentType::VoiceNote:
return FileId();
default:
break;
}
}
return FileId();
}