From a6d0fa433e0478d74e4bd9302a5b8c2469cc7db8 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 4 Apr 2019 13:22:59 +0300 Subject: [PATCH] Refactored variables for edit media in HistoryItem. - Replaced _isLocalUpdateMedia with client flag. - Removed _isEditingMedia. --- Telegram/SourceFiles/apiwrap.cpp | 1 + Telegram/SourceFiles/app.cpp | 1 - Telegram/SourceFiles/history/history_item.h | 29 +++++++++---------- .../SourceFiles/history/history_message.cpp | 10 ++----- .../SourceFiles/history/history_widget.cpp | 1 - Telegram/SourceFiles/mtproto/type_utils.h | 5 ++-- 6 files changed, 20 insertions(+), 27 deletions(-) diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index bc0a63a9e..4db98063d 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -4676,6 +4676,7 @@ void ApiWrap::editUploadedFile( item->clearSavedMedia(); item->setIsLocalUpdateMedia(true); applyUpdates(result); + item->setIsLocalUpdateMedia(false); }).fail([=](const RPCError &error) { QString err = error.type(); if (err == qstr("MESSAGE_NOT_MODIFIED")) { diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index c03825277..5ebfd63c2 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -174,7 +174,6 @@ namespace App { checkEntitiesAndViewsUpdate(m.c_message()); } existing->applyEdition(message); - existing->setIsLocalUpdateMedia(false); } }); } diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 731b8460a..a006a6f8b 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -123,27 +123,16 @@ public: bool hasUnreadMediaFlag() const; void markMediaRead(); - bool isEditingMedia() const { - return _isEditingMedia; - } - void setIsEditingMedia(bool edit) { - _isEditingMedia = edit; - } - - bool isLocalUpdateMedia() const { - return _isLocalUpdateMedia; - } - void setIsLocalUpdateMedia(bool flag) { - _isLocalUpdateMedia = flag; - } // For edit media in history_message. virtual void returnSavedMedia() {}; void savePreviousMedia() { _savedMedia = _media->clone(this); } + bool isEditingMedia() const { + return _savedMedia != nullptr; + } void clearSavedMedia() { - _isEditingMedia = false; _savedMedia = nullptr; } @@ -164,6 +153,16 @@ public: bool isGroupEssential() const { return _flags & MTPDmessage_ClientFlag::f_is_group_essential; } + bool isLocalUpdateMedia() const { + return _flags & MTPDmessage_ClientFlag::f_is_local_update_media; + } + void setIsLocalUpdateMedia(bool flag) { + if (flag) { + _flags |= MTPDmessage_ClientFlag::f_is_local_update_media; + } else { + _flags &= ~MTPDmessage_ClientFlag::f_is_local_update_media; + } + } bool isGroupMigrate() const { return isGroupEssential() && isEmpty(); } @@ -335,8 +334,6 @@ protected: int _textWidth = -1; int _textHeight = 0; - bool _isEditingMedia = false; - bool _isLocalUpdateMedia = false; std::unique_ptr _savedMedia; std::unique_ptr _media; diff --git a/Telegram/SourceFiles/history/history_message.cpp b/Telegram/SourceFiles/history/history_message.cpp index 4a1c6d5bb..fb8c1cbee 100644 --- a/Telegram/SourceFiles/history/history_message.cpp +++ b/Telegram/SourceFiles/history/history_message.cpp @@ -620,7 +620,7 @@ bool HistoryMessage::allowsEdit(TimeId now) const { && !isTooOldForEdit(now) && (!_media || _media->allowsEdit()) && !isUnsupportedMessage() - && !_isEditingMedia; + && !isEditingMedia(); } bool HistoryMessage::uploading() const { @@ -769,7 +769,6 @@ void HistoryMessage::returnSavedMedia() { } else { history()->owner().requestItemViewRefresh(this); } - _isEditingMedia = false; } void HistoryMessage::setMedia(const MTPMessageMedia &media) { @@ -928,7 +927,7 @@ void HistoryMessage::applyEdition(const MTPDmessage &message) { textWithEntities.entities = TextUtilities::EntitiesFromMTP(message.ventities.v); } setReplyMarkup(message.has_reply_markup() ? (&message.vreply_markup) : nullptr); - if (!_isLocalUpdateMedia) { + if (!isLocalUpdateMedia()) { refreshMedia(message.has_media() ? (&message.vmedia) : nullptr); } setViewsCount(message.has_views() ? message.vviews.v : -1); @@ -959,10 +958,7 @@ void HistoryMessage::updateSentMedia(const MTPMessageMedia *media) { } _flags &= ~MTPDmessage_ClientFlag::f_from_inline_bot; } else { - if (_isEditingMedia) { - _savedMedia = _media->clone(this); - refreshSentMedia(media); - } else if (!media || !_media || !_media->updateSentMedia(*media)) { + if (!media || !_media || !_media->updateSentMedia(*media)) { refreshSentMedia(media); } } diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index ac19b48b9..ab23314bf 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -4263,7 +4263,6 @@ void HistoryWidget::sendFileConfirmed( auto localEntities = TextUtilities::EntitiesToMTP(caption.entities); if (itemToEdit) { - itemToEdit->setIsEditingMedia(true); if (const auto id = itemToEdit->groupId()) { groupId = id.value; } diff --git a/Telegram/SourceFiles/mtproto/type_utils.h b/Telegram/SourceFiles/mtproto/type_utils.h index 74c9ad790..802560212 100644 --- a/Telegram/SourceFiles/mtproto/type_utils.h +++ b/Telegram/SourceFiles/mtproto/type_utils.h @@ -53,8 +53,9 @@ enum class MTPDmessage_ClientFlag : uint32 { //// message is attached to previous one when displaying the history //f_attach_to_previous = (1U << 25), - //// message is attached to next one when displaying the history - //f_attach_to_next = (1U << 24), + // message's edited media is generated on the client + // and should not update media from server + f_is_local_update_media = (1U << 24), // message was sent from inline bot, need to re-set media when sent f_from_inline_bot = (1U << 23),