Fixed send options in CreatePollBox and SendFilesBox in replies.

This commit is contained in:
23rd 2020-11-20 20:04:50 +03:00 committed by John Preston
parent c53d9c532f
commit c109e35d95
5 changed files with 37 additions and 22 deletions

View File

@ -754,11 +754,13 @@ CreatePollBox::CreatePollBox(
not_null<Window::SessionController*> 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::Result> CreatePollBox::submitRequests() const {
@ -1101,26 +1103,23 @@ object_ptr<Ui::RpWidget> 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;

View File

@ -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<Window::SessionController*> controller,
PollData::Flags chosen,
PollData::Flags disabled,
Api::SendType sendType);
Api::SendType sendType,
SendMenu::Type sendMenuType);
[[nodiscard]] rpl::producer<Result> 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<void()> _setInnerFocus;
Fn<rpl::producer<bool>()> _dataIsValidValue;
rpl::event_stream<Result> _submitRequests;

View File

@ -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();

View File

@ -616,6 +616,11 @@ void Filler::addPollAction(not_null<PeerData*> 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<PeerData*> 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<bool>(false);
box->submitRequests(
) | rpl::start_with_next([=](const CreatePollBox::Result &result) {

View File

@ -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 {
};