Refactored ApiWrap.

- Joined editUploadedPhoto with editUploadedDocument.
This commit is contained in:
23rd 2019-04-03 20:00:12 +03:00
parent bc03c80d8d
commit bd653dfdff
3 changed files with 73 additions and 108 deletions

View File

@ -4610,73 +4610,41 @@ void ApiWrap::sendUploadedDocument(
} }
} }
void ApiWrap::editUploadedPhoto( void ApiWrap::editUploadedFile(
FullMsgId localId, FullMsgId localId,
const MTPInputFile &file, const MTPInputFile &file,
bool silent) { const std::optional<MTPInputFile> &thumb,
if (const auto item = App::histItemById(localId)) { bool silent,
const auto media = MTP_inputMediaUploadedPhoto( bool isDocument) {
MTP_flags(0), const auto item = App::histItemById(localId);
file, if (!item) {
MTPVector<MTPInputDocument>(), return;
MTP_int(0)); }
auto sentEntities = TextUtilities::EntitiesToMTP(
item->originalText().entities,
TextUtilities::ConvertOption::SkipLocal);
auto flagsEditMsg = MTPmessages_EditMessage::Flag::f_message | 0; auto flagsEditMsg = MTPmessages_EditMessage::Flag::f_message | 0;
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_no_webpage; flagsEditMsg |= MTPmessages_EditMessage::Flag::f_no_webpage;
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_entities; flagsEditMsg |= MTPmessages_EditMessage::Flag::f_entities;
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_media; flagsEditMsg |= MTPmessages_EditMessage::Flag::f_media;
auto sentEntities = TextUtilities::EntitiesToMTP( MTPinputMedia media = MTP_inputMediaEmpty();
item->originalText().entities,
TextUtilities::ConvertOption::SkipLocal);
request(MTPmessages_EditMessage( if (isDocument) {
MTP_flags(flagsEditMsg), const auto document = item->media()->document();
item->history()->peer->input, if (!document) {
MTP_int(item->id), return;
MTP_string(item->originalText().text),
media,
MTPReplyMarkup(),
sentEntities
)).done([=](const MTPUpdates &result) {
item->clearSavedMedia();
item->setIsLocalUpdateMedia(true);
applyUpdates(result);
}).fail([=](const RPCError &error) {
QString err = error.type();
if (err == qstr("MESSAGE_NOT_MODIFIED")
|| err == qstr("MEDIA_NEW_INVALID")) {
item->returnSavedMedia();
_session->data().sendHistoryChangeNotifications();
} else {
sendMessageFail(error);
}
}).send();
}
} }
void ApiWrap::editUploadedDocument(
FullMsgId localId,
const MTPInputFile &file,
const std::optional<MTPInputFile> &thumb,
bool silent) {
if (const auto item = App::histItemById(localId)) {
QString filename = "file";
if (const auto document = item->media()->document()) {
filename = document->filename();
const auto filenameAttribute = MTP_documentAttributeFilename(
MTP_string(filename));
auto attributes = QVector<MTPDocumentAttribute>(1, filenameAttribute);
const auto groupId = item->groupId();
const auto flags = MTPDinputMediaUploadedDocument::Flags(0) const auto flags = MTPDinputMediaUploadedDocument::Flags(0)
| (thumb | (thumb
? MTPDinputMediaUploadedDocument::Flag::f_thumb ? MTPDinputMediaUploadedDocument::Flag::f_thumb
: MTPDinputMediaUploadedDocument::Flag(0)) : MTPDinputMediaUploadedDocument::Flag(0))
// Never edit video as gif. // Never edit video as gif.
| MTPDinputMediaUploadedDocument::Flag::f_nosound_video; | MTPDinputMediaUploadedDocument::Flag::f_nosound_video;
const auto media = MTP_inputMediaUploadedDocument( media = MTP_inputMediaUploadedDocument(
MTP_flags(flags), MTP_flags(flags),
file, file,
thumb ? *thumb : MTPInputFile(), thumb ? *thumb : MTPInputFile(),
@ -4684,15 +4652,17 @@ void ApiWrap::editUploadedDocument(
ComposeSendingDocumentAttributes(document), ComposeSendingDocumentAttributes(document),
MTPVector<MTPInputDocument>(), MTPVector<MTPInputDocument>(),
MTP_int(0)); MTP_int(0));
} else {
auto flagsEditMsg = MTPmessages_EditMessage::Flag::f_message | 0; const auto photo = item->media()->photo();
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_no_webpage; if (!photo) {
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_entities; return;
flagsEditMsg |= MTPmessages_EditMessage::Flag::f_media; }
media = MTP_inputMediaUploadedPhoto(
auto sentEntities = TextUtilities::EntitiesToMTP( MTP_flags(0),
item->originalText().entities, file,
TextUtilities::ConvertOption::SkipLocal); MTPVector<MTPInputDocument>(),
MTP_int(0));
}
request(MTPmessages_EditMessage( request(MTPmessages_EditMessage(
MTP_flags(flagsEditMsg), MTP_flags(flagsEditMsg),
@ -4717,8 +4687,6 @@ void ApiWrap::editUploadedDocument(
} }
}).send(); }).send();
} }
}
}
void ApiWrap::cancelLocalItem(not_null<HistoryItem*> item) { void ApiWrap::cancelLocalItem(not_null<HistoryItem*> item) {
Expects(!IsServerMsgId(item->id)); Expects(!IsServerMsgId(item->id));

View File

@ -344,15 +344,12 @@ public:
const MTPInputFile &file, const MTPInputFile &file,
const std::optional<MTPInputFile> &thumb, const std::optional<MTPInputFile> &thumb,
bool silent); bool silent);
void editUploadedDocument( void editUploadedFile(
FullMsgId localId, FullMsgId localId,
const MTPInputFile &file, const MTPInputFile &file,
const std::optional<MTPInputFile> &thumb, const std::optional<MTPInputFile> &thumb,
bool silent); bool silent,
void editUploadedPhoto( bool isDocument);
FullMsgId localId,
const MTPInputFile &file,
bool silent);
void cancelLocalItem(not_null<HistoryItem*> item); void cancelLocalItem(not_null<HistoryItem*> item);

View File

@ -4421,14 +4421,14 @@ void HistoryWidget::documentEdited(
const FullMsgId &newId, const FullMsgId &newId,
bool silent, bool silent,
const MTPInputFile &file) { const MTPInputFile &file) {
Auth().api().editUploadedDocument(newId, file, std::nullopt, silent); Auth().api().editUploadedFile(newId, file, std::nullopt, silent, true);
} }
void HistoryWidget::photoEdited( void HistoryWidget::photoEdited(
const FullMsgId &newId, const FullMsgId &newId,
bool silent, bool silent,
const MTPInputFile &file) { const MTPInputFile &file) {
Auth().api().editUploadedPhoto(newId, file, silent); Auth().api().editUploadedFile(newId, file, std::nullopt, silent, false);
} }
void HistoryWidget::thumbDocumentUploaded( void HistoryWidget::thumbDocumentUploaded(
@ -4438,7 +4438,7 @@ void HistoryWidget::thumbDocumentUploaded(
const MTPInputFile &thumb, const MTPInputFile &thumb,
bool edit) { bool edit) {
edit edit
? Auth().api().editUploadedDocument(newId, file, thumb, silent) ? Auth().api().editUploadedFile(newId, file, thumb, silent, true)
: Auth().api().sendUploadedDocument(newId, file, thumb, silent); : Auth().api().sendUploadedDocument(newId, file, thumb, silent);
} }