Skip to content

Commit

Permalink
Correctly apply editions to media-edit-in-progress.
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Aug 10, 2023
1 parent 21b06f3 commit dfe36f6
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 15 deletions.
2 changes: 1 addition & 1 deletion Telegram/SourceFiles/api/api_sending.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,6 @@ void SendConfirmedFile(
}());

if (itemToEdit) {
itemToEdit->savePreviousMedia();
auto edition = HistoryMessageEdition();
edition.isEditHide = (flags & MessageFlag::HideEdited);
edition.editDate = 0;
Expand All @@ -468,6 +467,7 @@ void SendConfirmedFile(
edition.useSameMarkup = true;
edition.useSameReplies = true;
edition.useSameReactions = true;
edition.savePreviousMedia = true;
itemToEdit->applyEdition(std::move(edition));
} else {
const auto viaBotId = UserId();
Expand Down
19 changes: 10 additions & 9 deletions Telegram/SourceFiles/data/data_scheduled_messages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -467,16 +467,17 @@ HistoryItem *ScheduledMessages::append(
// probably this message was edited.
if (data.is_edit_hide()) {
existing->applyEdition(HistoryMessageEdition(_session, data));
} else {
existing->updateSentContent({
qs(data.vmessage()),
Api::EntitiesFromMTP(
_session,
data.ventities().value_or_empty())
}, data.vmedia());
existing->updateReplyMarkup(
HistoryMessageMarkupData(data.vreply_markup()));
existing->updateForwardedInfo(data.vfwd_from());
}
existing->updateSentContent({
qs(data.vmessage()),
Api::EntitiesFromMTP(
_session,
data.ventities().value_or_empty())
}, data.vmedia());
existing->updateReplyMarkup(
HistoryMessageMarkupData(data.vreply_markup()));
existing->updateForwardedInfo(data.vfwd_from());
existing->updateDate(data.vdate().v);
history->owner().requestItemTextRefresh(existing);
}, [&](const auto &data) {});
Expand Down
33 changes: 28 additions & 5 deletions Telegram/SourceFiles/history/history_item.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1467,6 +1467,12 @@ void HistoryItem::applyEdition(HistoryMessageEdition &&edition) {
// }
//}

const auto updatingSavedLocalEdit = !edition.savePreviousMedia
&& (_savedLocalEditMediaData != nullptr);
if (!_savedLocalEditMediaData && edition.savePreviousMedia) {
savePreviousMedia();
}

if (edition.isEditHide) {
_flags |= MessageFlag::HideEdited;
} else {
Expand All @@ -1486,8 +1492,14 @@ void HistoryItem::applyEdition(HistoryMessageEdition &&edition) {
setReplyMarkup(base::take(edition.replyMarkup));
}
if (!isLocalUpdateMedia()) {
removeFromSharedMediaIndex();
refreshMedia(edition.mtpMedia);
if (updatingSavedLocalEdit) {
_savedLocalEditMediaData->media = edition.mtpMedia
? CreateMedia(this, *edition.mtpMedia)
: nullptr;
} else {
removeFromSharedMediaIndex();
refreshMedia(edition.mtpMedia);
}
}
if (!edition.useSameReactions) {
updateReactions(edition.mtpReactions);
Expand All @@ -1498,10 +1510,18 @@ void HistoryItem::applyEdition(HistoryMessageEdition &&edition) {
if (!edition.useSameForwards) {
setForwardsCount(edition.forwards);
}
setText(_media
const auto &checkedMedia = updatingSavedLocalEdit
? _savedLocalEditMediaData->media
: _media;
auto updatedText = checkedMedia
? edition.textWithEntities
: EnsureNonEmpty(edition.textWithEntities));
if (!isLocalUpdateMedia()) {
: EnsureNonEmpty(edition.textWithEntities);
if (updatingSavedLocalEdit) {
_savedLocalEditMediaData->text = std::move(updatedText);
} else {
setText(std::move(updatedText));
}
if (!isLocalUpdateMedia() && !updatingSavedLocalEdit) {
indexAsNewItem();
}
if (!edition.useSameReplies) {
Expand Down Expand Up @@ -1650,6 +1670,9 @@ void HistoryItem::applySentMessage(
void HistoryItem::updateSentContent(
const TextWithEntities &textWithEntities,
const MTPMessageMedia *media) {
if (_savedLocalEditMediaData) {
return;
}
setText(textWithEntities);
if (_flags & MessageFlag::FromInlineBot) {
if (!media || !_media || !_media->updateInlineResultMedia(*media)) {
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/history/history_item_edition.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ struct HistoryMessageEdition {
bool useSameReplies = false;
bool useSameMarkup = false;
bool useSameReactions = false;
bool savePreviousMedia = false;
TextWithEntities textWithEntities;
HistoryMessageMarkupData replyMarkup;
HistoryMessageRepliesData replies;
Expand Down

0 comments on commit dfe36f6

Please sign in to comment.