diff --git a/Telegram/SourceFiles/api/api_sending.cpp b/Telegram/SourceFiles/api/api_sending.cpp index a3003bab4..d0b897a07 100644 --- a/Telegram/SourceFiles/api/api_sending.cpp +++ b/Telegram/SourceFiles/api/api_sending.cpp @@ -456,6 +456,7 @@ void SendConfirmedFile( not_null<Main::Session*> session, const std::shared_ptr<FilePrepareResult> &file) { const auto isEditing = (file->type != SendMediaType::Audio) + && (file->type != SendMediaType::Round) && (file->to.replaceMediaOf != 0); const auto newId = FullMsgId( file->to.peer, @@ -525,7 +526,8 @@ void SendConfirmedFile( // Shortcut messages have no 'edited' badge. flags |= MessageFlag::HideEdited; } - if (file->type == SendMediaType::Audio) { + if (file->type == SendMediaType::Audio + || file->type == SendMediaType::Round) { if (!peer->isChannel() || peer->isMegagroup()) { flags |= MessageFlag::MediaIsUnread; } @@ -551,29 +553,25 @@ void SendConfirmedFile( MTPint()); } else if (file->type == SendMediaType::Audio) { const auto ttlSeconds = file->to.options.ttlSeconds; - const auto isVoice = [&] { - return file->document.match([](const MTPDdocumentEmpty &d) { - return false; - }, [](const MTPDdocument &d) { - return ranges::any_of(d.vattributes().v, [&]( - const MTPDocumentAttribute &attribute) { - using Att = MTPDdocumentAttributeAudio; - return attribute.match([](const Att &data) -> bool { - return data.vflags().v & Att::Flag::f_voice; - }, [](const auto &) { - return false; - }); - }); - }); - }(); using Flag = MTPDmessageMediaDocument::Flag; return MTP_messageMediaDocument( MTP_flags(Flag::f_document - | (isVoice ? Flag::f_voice : Flag()) + | Flag::f_voice | (ttlSeconds ? Flag::f_ttl_seconds : Flag())), file->document, MTPVector<MTPDocument>(), // alt_documents MTP_int(ttlSeconds)); + } else if (file->type == SendMediaType::Round) { + using Flag = MTPDmessageMediaDocument::Flag; + const auto ttlSeconds = file->to.options.ttlSeconds; + return MTP_messageMediaDocument( + MTP_flags(Flag::f_document + | Flag::f_round + | (ttlSeconds ? Flag::f_ttl_seconds : Flag()) + | (file->spoiler ? Flag::f_spoiler : Flag())), + file->document, + MTPVector<MTPDocument>(), // alt_documents + MTP_int(ttlSeconds)); } else { Unexpected("Type in sendFilesConfirmed."); } diff --git a/Telegram/SourceFiles/storage/file_upload.cpp b/Telegram/SourceFiles/storage/file_upload.cpp index 95c4b0a1b..eef376b74 100644 --- a/Telegram/SourceFiles/storage/file_upload.cpp +++ b/Telegram/SourceFiles/storage/file_upload.cpp @@ -124,7 +124,8 @@ Uploader::Entry::Entry( : file->thumbId) { if (file->type == SendMediaType::File || file->type == SendMediaType::ThemeFile - || file->type == SendMediaType::Audio) { + || file->type == SendMediaType::Audio + || file->type == SendMediaType::Round) { setDocSize(file->filesize); } } @@ -294,7 +295,8 @@ void Uploader::upload( file->partssize); } else if (file->type == SendMediaType::File || file->type == SendMediaType::ThemeFile - || file->type == SendMediaType::Audio) { + || file->type == SendMediaType::Audio + || file->type == SendMediaType::Round) { const auto document = file->thumb.isNull() ? session().data().processDocument(file->document) : session().data().processDocument( @@ -356,7 +358,8 @@ void Uploader::notifyFailed(const Entry &entry) { _photoFailed.fire_copy(entry.itemId); } else if (type == SendMediaType::File || type == SendMediaType::ThemeFile - || type == SendMediaType::Audio) { + || type == SendMediaType::Audio + || type == SendMediaType::Round) { const auto document = session().data().document(entry.file->id); if (document->uploading()) { document->status = FileUploadFailed; @@ -385,7 +388,8 @@ QByteArray Uploader::readDocPart(not_null<Entry*> entry) { const auto checked = [&](QByteArray result) { if ((entry->file->type == SendMediaType::File || entry->file->type == SendMediaType::ThemeFile - || entry->file->type == SendMediaType::Audio) + || entry->file->type == SendMediaType::Audio + || entry->file->type == SendMediaType::Round) && entry->docSize <= kUseBigFilesFrom) { entry->md5Hash.feed(result.data(), result.size()); } @@ -756,7 +760,8 @@ void Uploader::partLoaded(const MTPBool &result, mtpRequestId requestId) { _photoProgress.fire_copy(itemId); } else if (entry.file->type == SendMediaType::File || entry.file->type == SendMediaType::ThemeFile - || entry.file->type == SendMediaType::Audio) { + || entry.file->type == SendMediaType::Audio + || entry.file->type == SendMediaType::Round) { const auto document = session().data().document(entry.file->id); if (document->uploading()) { document->uploadingData->offset = std::min( @@ -856,7 +861,8 @@ void Uploader::finishFront() { }); } else if (entry.file->type == SendMediaType::File || entry.file->type == SendMediaType::ThemeFile - || entry.file->type == SendMediaType::Audio) { + || entry.file->type == SendMediaType::Audio + || entry.file->type == SendMediaType::Round) { QByteArray docMd5(32, Qt::Uninitialized); hashMd5Hex(entry.md5Hash.result(), docMd5.data()); diff --git a/Telegram/SourceFiles/storage/localimageloader.cpp b/Telegram/SourceFiles/storage/localimageloader.cpp index 9daeaecdd..8a9869139 100644 --- a/Telegram/SourceFiles/storage/localimageloader.cpp +++ b/Telegram/SourceFiles/storage/localimageloader.cpp @@ -1014,7 +1014,7 @@ void FileLoadTask::process(Args &&args) { MTPVector<MTPVideoSize>(), MTP_int(_dcId), MTP_vector<MTPDocumentAttribute>(attributes)); - _type = SendMediaType::File; + _type = isRound ? SendMediaType::Round : SendMediaType::File; } if (_information) {