From e7fbcce9d9f0a8944eb2c34e74bd01b8776cb891 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 26 Jan 2020 21:32:19 +0300 Subject: [PATCH] Added handler for SCHEDULE_STATUS_PRIVATE error when send file. --- Telegram/SourceFiles/apiwrap.cpp | 7 +++++++ .../data/data_scheduled_messages.cpp | 21 +++++++++++++++++++ .../data/data_scheduled_messages.h | 1 + 3 files changed, 29 insertions(+) diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 59334123dc..121dccca27 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -579,6 +579,13 @@ void ApiWrap::sendMessageFail( requestFullPeer(peer); } } + } else if (error.type() == qstr("SCHEDULE_STATUS_PRIVATE")) { + auto &scheduled = _session->data().scheduledMessages(); + Assert(peer->isUser()); + if (const auto item = scheduled.lookupItem(peer->id, itemId.msg)) { + scheduled.removeSending(item); + Ui::show(Box(tr::lng_cant_do_this(tr::now))); + } } if (const auto item = _session->data().message(itemId)) { Assert(randomId != 0); diff --git a/Telegram/SourceFiles/data/data_scheduled_messages.cpp b/Telegram/SourceFiles/data/data_scheduled_messages.cpp index e0ee4c8355..7bbce72fa8 100644 --- a/Telegram/SourceFiles/data/data_scheduled_messages.cpp +++ b/Telegram/SourceFiles/data/data_scheduled_messages.cpp @@ -112,6 +112,27 @@ MsgId ScheduledMessages::lookupId(not_null item) const { return j->second; } +HistoryItem *ScheduledMessages::lookupItem(PeerId peer, MsgId msg) const { + const auto history = _session->data().historyLoaded(peer); + if (!history) { + return nullptr; + } + + const auto i = _data.find(history); + if (i == end(_data)) { + return nullptr; + } + + const auto &items = i->second.items; + const auto j = ranges::find_if(items, [&](auto &item) { + return item->id == msg; + }); + if (j == end(items)) { + return nullptr; + } + return (*j).get(); +} + int ScheduledMessages::count(not_null history) const { const auto i = _data.find(history); return (i != end(_data)) ? i->second.items.size() : 0; diff --git a/Telegram/SourceFiles/data/data_scheduled_messages.h b/Telegram/SourceFiles/data/data_scheduled_messages.h index 73e683d84c..57b7b74eb4 100644 --- a/Telegram/SourceFiles/data/data_scheduled_messages.h +++ b/Telegram/SourceFiles/data/data_scheduled_messages.h @@ -29,6 +29,7 @@ public: ~ScheduledMessages(); [[nodiscard]] MsgId lookupId(not_null item) const; + [[nodiscard]] HistoryItem *lookupItem(PeerId peer, MsgId msg) const; [[nodiscard]] int count(not_null history) const; void checkEntitiesAndUpdate(const MTPDmessage &data);