mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +02:00
Fixed send options in CreatePollBox and SendFilesBox in replies.
This commit is contained in:
parent
c53d9c532f
commit
c109e35d95
5 changed files with 37 additions and 22 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue