diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index cecc6945..e2a88d46 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -1892,18 +1892,19 @@ Result FileManager::from_persistent_id(CSlice persistent_id, FileType fi Result FileManager::from_persistent_id_map(Slice binary, FileType file_type) { binary.remove_suffix(1); - binary = zero_decode(binary); + auto decoded_binary = zero_decode(binary); FullGenerateFileLocation generate_location; - auto status = unserialize(generate_location, binary); + auto status = unserialize(generate_location, decoded_binary); if (status.is_error()) { return Status::Error(10, "Wrong remote file id specified: can't unserialize it"); } auto real_file_type = generate_location.file_type_; - if ((real_file_type != file_type && file_type != FileType::Temp) || real_file_type != FileType::Thumbnail) { + if ((real_file_type != file_type && file_type != FileType::Temp) || + (real_file_type != FileType::Thumbnail && real_file_type != FileType::EncryptedThumbnail)) { return Status::Error(10, "Type of file mismatch"); } if (!begins_with(generate_location.conversion_, "#map#")) { - return Status::Error(10, "Unexpected converstioion type"); + return Status::Error(10, "Unexpected conversion type"); } FileData data; data.generate_ = make_unique(std::move(generate_location)); @@ -1912,9 +1913,9 @@ Result FileManager::from_persistent_id_map(Slice binary, FileType file_t Result FileManager::from_persistent_id_v2(Slice binary, FileType file_type) { binary.remove_suffix(1); - binary = zero_decode(binary); + auto decoded_binary = zero_decode(binary); FullRemoteFileLocation remote_location; - auto status = unserialize(remote_location, binary); + auto status = unserialize(remote_location, decoded_binary); if (status.is_error()) { return Status::Error(10, "Wrong remote file id specified: can't unserialize it"); } @@ -2137,8 +2138,9 @@ Result FileManager::get_map_thumbnail_file_id(Location location, int32 z string conversion = PSTRING() << "#map#" << zoom << "#" << x << "#" << y << "#" << width << "#" << height << "#" << scale << "#"; - return register_generate(FileType::Thumbnail, FileLocationSource::FromUser, string(), std::move(conversion), - owner_dialog_id, 0); + return register_generate( + owner_dialog_id.get_type() == DialogType::SecretChat ? FileType::EncryptedThumbnail : FileType::Thumbnail, + FileLocationSource::FromUser, string(), std::move(conversion), owner_dialog_id, 0); } vector> FileManager::get_input_documents(const vector &file_ids) {