Added handler for MESSAGE_NOT_MODIFIED error when edit media.

This commit is contained in:
23rd 2019-03-29 17:50:49 +03:00 committed by John Preston
parent 653fd1bb63
commit 0e4d85a5e5
4 changed files with 26 additions and 5 deletions

View File

@ -4640,8 +4640,17 @@ void ApiWrap::editUploadedPhoto(
media,
MTPReplyMarkup(),
sentEntities
)).done([=](const MTPUpdates &result) { LOG(("APPLY.")); applyUpdates(result);
}).fail([=](const RPCError &error) { LOG(("FAIL."));
)).done([=](const MTPUpdates &result) {
item->clearSavedMedia();
applyUpdates(result);
}).fail([=](const RPCError &error) {
QString err = error.type();
if (err == qstr("MESSAGE_NOT_MODIFIED")) {
item->returnSavedMedia();
_session->data().sendHistoryChangeNotifications();
} else {
sendMessageFail(error);
}
}).send();
}
}
@ -4694,8 +4703,17 @@ void ApiWrap::editUploadedDocument(
media,
MTPReplyMarkup(),
sentEntities
)).done([=](const MTPUpdates &result) { LOG(("APPLY.")); applyUpdates(result);
}).fail([=](const RPCError &error) { LOG(("FAIL."));
)).done([=](const MTPUpdates &result) {
item->clearSavedMedia();
applyUpdates(result);
}).fail([=](const RPCError &error) {
QString err = error.type();
if (err == qstr("MESSAGE_NOT_MODIFIED")) {
item->returnSavedMedia();
_session->data().sendHistoryChangeNotifications();
} else {
sendMessageFail(error);
}
}).send();
}
}

View File

@ -132,6 +132,7 @@ public:
// For edit media in history_message.
virtual void returnSavedMedia() {};
virtual void clearSavedMedia() {};
// Zero result means this message is not self-destructing right now.
virtual crl::time getSelfDestructIn(crl::time now) {

View File

@ -742,7 +742,6 @@ QString FormatViewsCount(int views) {
void HistoryMessage::refreshMedia(const MTPMessageMedia *media) {
_media = nullptr;
_savedMedia = nullptr;
if (media) {
setMedia(*media);
}

View File

@ -90,6 +90,9 @@ public:
void refreshMedia(const MTPMessageMedia *media);
void refreshSentMedia(const MTPMessageMedia *media);
void returnSavedMedia() override;
void clearSavedMedia() {
_savedMedia = nullptr;
}
void setMedia(const MTPMessageMedia &media);
static std::unique_ptr<Data::Media> CreateMedia(
not_null<HistoryMessage*> item,