mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 15:17:07 +02:00
Correctly apply editions to media-edit-in-progress.
This commit is contained in:
parent
21b06f390c
commit
dfe36f638b
4 changed files with 40 additions and 15 deletions
Telegram/SourceFiles
|
@ -456,7 +456,6 @@ void SendConfirmedFile(
|
|||
}());
|
||||
|
||||
if (itemToEdit) {
|
||||
itemToEdit->savePreviousMedia();
|
||||
auto edition = HistoryMessageEdition();
|
||||
edition.isEditHide = (flags & MessageFlag::HideEdited);
|
||||
edition.editDate = 0;
|
||||
|
@ -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();
|
||||
|
|
|
@ -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) {});
|
||||
|
|
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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)) {
|
||||
|
|
|
@ -29,6 +29,7 @@ struct HistoryMessageEdition {
|
|||
bool useSameReplies = false;
|
||||
bool useSameMarkup = false;
|
||||
bool useSameReactions = false;
|
||||
bool savePreviousMedia = false;
|
||||
TextWithEntities textWithEntities;
|
||||
HistoryMessageMarkupData replyMarkup;
|
||||
HistoryMessageRepliesData replies;
|
||||
|
|
Loading…
Add table
Reference in a new issue