Fixed crash when user reschedules already sent message.

Fixed #8867.
This commit is contained in:
23rd 2020-10-20 23:21:51 +03:00 committed by John Preston
parent 52cca98144
commit bc7975ece7

View file

@ -420,23 +420,23 @@ bool AddSendNowMessageAction(
bool AddRescheduleMessageAction( bool AddRescheduleMessageAction(
not_null<Ui::PopupMenu*> menu, not_null<Ui::PopupMenu*> menu,
const ContextMenuRequest &request) { const ContextMenuRequest &request) {
if (!HasEditMessageAction(request) if (!HasEditMessageAction(request) || !request.item->isScheduled()) {
|| !request.item->isScheduled()) {
return false; return false;
} }
const auto item = request.item; const auto owner = &request.item->history()->owner();
const auto owner = &item->history()->owner(); const auto itemId = request.item->fullId();
const auto itemId = item->fullId();
menu->addAction(tr::lng_context_reschedule(tr::now), [=] { menu->addAction(tr::lng_context_reschedule(tr::now), [=] {
const auto item = owner->message(itemId); const auto item = owner->message(itemId);
if (!item) { if (!item) {
return; return;
} }
const auto callback = [=](Api::SendOptions options) { const auto callback = [=](Api::SendOptions options) {
if (!item->media() || !item->media()->webpage()) { if (const auto item = owner->message(itemId)) {
options.removeWebPageId = true; if (!item->media() || !item->media()->webpage()) {
options.removeWebPageId = true;
}
Api::RescheduleMessage(item, options);
} }
Api::RescheduleMessage(item, options);
}; };
const auto peer = item->history()->peer; const auto peer = item->history()->peer;