Fixed multiple attempts to send request to edit message.

This commit is contained in:
23rd 2020-06-06 16:25:50 +03:00
parent 46cce57f6b
commit 22f16caa89
2 changed files with 15 additions and 5 deletions

View file

@ -176,11 +176,12 @@ void ScheduledWidget::setupComposeControls() {
send();
}, lifetime());
const auto saveEditMsgRequestId = lifetime().make_state<mtpRequestId>(0);
_composeControls->editRequests(
) | rpl::start_with_next([=](auto data) {
if (const auto item = session().data().message(data.fullId)) {
if (item->isScheduled()) {
edit(item, data.options);
edit(item, data.options, saveEditMsgRequestId);
}
}
}, lifetime());
@ -555,8 +556,11 @@ void ScheduledWidget::send(Api::SendOptions options) {
void ScheduledWidget::edit(
not_null<HistoryItem*> item,
Api::SendOptions options) {
Api::SendOptions options,
mtpRequestId *const saveEditMsgRequestId) {
if (*saveEditMsgRequestId) {
return;
}
const auto textWithTags = _composeControls->getTextWithAppliedMarkdown();
const auto prepareFlags = Ui::ItemTextOptions(
_history,
@ -579,7 +583,12 @@ void ScheduledWidget::edit(
return;
}
const auto saveEditMsgRequestId = lifetime().make_state<mtpRequestId>(0);
lifetime().add([=] {
if (!*saveEditMsgRequestId) {
return;
}
session().api().request(base::take(*saveEditMsgRequestId)).cancel();
});
const auto done = [=](const MTPUpdates &result, mtpRequestId requestId) {
if (requestId == *saveEditMsgRequestId) {

View file

@ -143,7 +143,8 @@ private:
void send(Api::SendOptions options);
void edit(
not_null<HistoryItem*> item,
Api::SendOptions options);
Api::SendOptions options,
mtpRequestId *const saveEditMsgRequestId);
void highlightSingleNewMessage(const Data::MessagesSlice &slice);
void chooseAttach();
[[nodiscard]] SendMenuType sendMenuType() const;