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

View file

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