diff --git a/Telegram/SourceFiles/boxes/create_poll_box.cpp b/Telegram/SourceFiles/boxes/create_poll_box.cpp index 2ac6a8fb72..07d0dd0c51 100644 --- a/Telegram/SourceFiles/boxes/create_poll_box.cpp +++ b/Telegram/SourceFiles/boxes/create_poll_box.cpp @@ -754,11 +754,13 @@ CreatePollBox::CreatePollBox( not_null controller, PollData::Flags chosen, PollData::Flags disabled, - Api::SendType sendType) + Api::SendType sendType, + SendMenu::Type sendMenuType) : _controller(controller) , _chosen(chosen) , _disabled(disabled) -, _sendType(sendType) { +, _sendType(sendType) +, _sendMenuType(sendMenuType) { } rpl::producer CreatePollBox::submitRequests() const { @@ -1101,26 +1103,23 @@ object_ptr CreatePollBox::setupContent() { }, lifetime()); const auto isNormal = (_sendType == Api::SendType::Normal); - const auto isScheduled = (_sendType == Api::SendType::Scheduled); const auto submit = addButton( isNormal ? tr::lng_polls_create_button() : tr::lng_schedule_button(), [=] { isNormal ? send({}) : sendScheduled(); }); - if (isNormal || isScheduled) { - const auto sendMenuType = [=] { - collectError(); - return (*error || isScheduled) - ? SendMenu::Type::Disabled - : SendMenu::Type::Scheduled; - }; - SendMenu::SetupMenuAndShortcuts( - submit.data(), - sendMenuType, - sendSilent, - sendScheduled); - } + const auto sendMenuType = [=] { + collectError(); + return (*error) + ? SendMenu::Type::Disabled + : _sendMenuType; + }; + SendMenu::SetupMenuAndShortcuts( + submit.data(), + sendMenuType, + sendSilent, + sendScheduled); addButton(tr::lng_cancel(), [=] { closeBox(); }); return result; diff --git a/Telegram/SourceFiles/boxes/create_poll_box.h b/Telegram/SourceFiles/boxes/create_poll_box.h index f88de54182..3622139876 100644 --- a/Telegram/SourceFiles/boxes/create_poll_box.h +++ b/Telegram/SourceFiles/boxes/create_poll_box.h @@ -22,6 +22,10 @@ namespace Window { class SessionController; } // namespace Window +namespace SendMenu { +enum class Type; +} // namespace SendMenu + class CreatePollBox : public Ui::BoxContent { public: struct Result { @@ -34,7 +38,8 @@ public: not_null controller, PollData::Flags chosen, PollData::Flags disabled, - Api::SendType sendType); + Api::SendType sendType, + SendMenu::Type sendMenuType); [[nodiscard]] rpl::producer submitRequests() const; void submitFailed(const QString &error); @@ -66,6 +71,7 @@ private: const PollData::Flags _chosen = PollData::Flags(); const PollData::Flags _disabled = PollData::Flags(); const Api::SendType _sendType = Api::SendType(); + const SendMenu::Type _sendMenuType; Fn _setInnerFocus; Fn()> _dataIsValidValue; rpl::event_stream _submitRequests; diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index ea9818aefc..47d6aae4f1 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -632,7 +632,7 @@ bool RepliesWidget::confirmSendingFiles( text, _history->peer->slowmodeApplied() ? SendLimit::One : SendLimit::Many, Api::SendType::Normal, - SendMenu::Type::Disabled); // #TODO replies schedule + SendMenu::Type::SilentOnly); // #TODO replies schedule _composeControls->setText({}); const auto replyTo = replyToId(); diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 02218bd024..9e5f7653f2 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -616,6 +616,11 @@ void Filler::addPollAction(not_null peer) { const auto source = (_request.section == Section::Scheduled) ? Api::SendType::Scheduled : Api::SendType::Normal; + const auto sendMenuType = (_request.section == Section::Scheduled) + ? SendMenu::Type::Disabled + : (_request.section == Section::Replies) + ? SendMenu::Type::SilentOnly + : SendMenu::Type::Scheduled; const auto flag = PollData::Flags(); const auto replyToId = _request.currentReplyToId ? _request.currentReplyToId @@ -627,7 +632,8 @@ void Filler::addPollAction(not_null peer) { replyToId, flag, flag, - source); + source, + sendMenuType); }; _addAction(tr::lng_polls_create(tr::now), std::move(callback)); } @@ -812,7 +818,8 @@ void PeerMenuCreatePoll( MsgId replyToId, PollData::Flags chosen, PollData::Flags disabled, - Api::SendType sendType) { + Api::SendType sendType, + SendMenu::Type sendMenuType) { if (peer->isChannel() && !peer->isMegagroup()) { chosen &= ~PollData::Flag::PublicVotes; disabled |= PollData::Flag::PublicVotes; @@ -821,7 +828,8 @@ void PeerMenuCreatePoll( controller, chosen, disabled, - sendType)); + sendType, + sendMenuType)); const auto lock = box->lifetime().make_state(false); box->submitRequests( ) | rpl::start_with_next([=](const CreatePollBox::Result &result) { diff --git a/Telegram/SourceFiles/window/window_peer_menu.h b/Telegram/SourceFiles/window/window_peer_menu.h index fdaf603633..939f52a390 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.h +++ b/Telegram/SourceFiles/window/window_peer_menu.h @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #pragma once #include "api/api_common.h" +#include "chat_helpers/send_context_menu.h" #include "data/data_poll.h" class History; @@ -69,7 +70,8 @@ void PeerMenuCreatePoll( MsgId replyToId = 0, PollData::Flags chosen = PollData::Flags(), PollData::Flags disabled = PollData::Flags(), - Api::SendType sendType = Api::SendType::Normal); + Api::SendType sendType = Api::SendType::Normal, + SendMenu::Type sendMenuType = SendMenu::Type::Scheduled); struct ClearChat { };