mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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,
|
not_null<Window::SessionController*> controller,
|
||||||
PollData::Flags chosen,
|
PollData::Flags chosen,
|
||||||
PollData::Flags disabled,
|
PollData::Flags disabled,
|
||||||
Api::SendType sendType)
|
Api::SendType sendType,
|
||||||
|
SendMenu::Type sendMenuType)
|
||||||
: _controller(controller)
|
: _controller(controller)
|
||||||
, _chosen(chosen)
|
, _chosen(chosen)
|
||||||
, _disabled(disabled)
|
, _disabled(disabled)
|
||||||
, _sendType(sendType) {
|
, _sendType(sendType)
|
||||||
|
, _sendMenuType(sendMenuType) {
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<CreatePollBox::Result> CreatePollBox::submitRequests() const {
|
rpl::producer<CreatePollBox::Result> CreatePollBox::submitRequests() const {
|
||||||
|
@ -1101,26 +1103,23 @@ object_ptr<Ui::RpWidget> CreatePollBox::setupContent() {
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
|
||||||
const auto isNormal = (_sendType == Api::SendType::Normal);
|
const auto isNormal = (_sendType == Api::SendType::Normal);
|
||||||
const auto isScheduled = (_sendType == Api::SendType::Scheduled);
|
|
||||||
|
|
||||||
const auto submit = addButton(
|
const auto submit = addButton(
|
||||||
isNormal
|
isNormal
|
||||||
? tr::lng_polls_create_button()
|
? tr::lng_polls_create_button()
|
||||||
: tr::lng_schedule_button(),
|
: tr::lng_schedule_button(),
|
||||||
[=] { isNormal ? send({}) : sendScheduled(); });
|
[=] { isNormal ? send({}) : sendScheduled(); });
|
||||||
if (isNormal || isScheduled) {
|
const auto sendMenuType = [=] {
|
||||||
const auto sendMenuType = [=] {
|
collectError();
|
||||||
collectError();
|
return (*error)
|
||||||
return (*error || isScheduled)
|
? SendMenu::Type::Disabled
|
||||||
? SendMenu::Type::Disabled
|
: _sendMenuType;
|
||||||
: SendMenu::Type::Scheduled;
|
};
|
||||||
};
|
SendMenu::SetupMenuAndShortcuts(
|
||||||
SendMenu::SetupMenuAndShortcuts(
|
submit.data(),
|
||||||
submit.data(),
|
sendMenuType,
|
||||||
sendMenuType,
|
sendSilent,
|
||||||
sendSilent,
|
sendScheduled);
|
||||||
sendScheduled);
|
|
||||||
}
|
|
||||||
addButton(tr::lng_cancel(), [=] { closeBox(); });
|
addButton(tr::lng_cancel(), [=] { closeBox(); });
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -22,6 +22,10 @@ namespace Window {
|
||||||
class SessionController;
|
class SessionController;
|
||||||
} // namespace Window
|
} // namespace Window
|
||||||
|
|
||||||
|
namespace SendMenu {
|
||||||
|
enum class Type;
|
||||||
|
} // namespace SendMenu
|
||||||
|
|
||||||
class CreatePollBox : public Ui::BoxContent {
|
class CreatePollBox : public Ui::BoxContent {
|
||||||
public:
|
public:
|
||||||
struct Result {
|
struct Result {
|
||||||
|
@ -34,7 +38,8 @@ public:
|
||||||
not_null<Window::SessionController*> controller,
|
not_null<Window::SessionController*> controller,
|
||||||
PollData::Flags chosen,
|
PollData::Flags chosen,
|
||||||
PollData::Flags disabled,
|
PollData::Flags disabled,
|
||||||
Api::SendType sendType);
|
Api::SendType sendType,
|
||||||
|
SendMenu::Type sendMenuType);
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<Result> submitRequests() const;
|
[[nodiscard]] rpl::producer<Result> submitRequests() const;
|
||||||
void submitFailed(const QString &error);
|
void submitFailed(const QString &error);
|
||||||
|
@ -66,6 +71,7 @@ private:
|
||||||
const PollData::Flags _chosen = PollData::Flags();
|
const PollData::Flags _chosen = PollData::Flags();
|
||||||
const PollData::Flags _disabled = PollData::Flags();
|
const PollData::Flags _disabled = PollData::Flags();
|
||||||
const Api::SendType _sendType = Api::SendType();
|
const Api::SendType _sendType = Api::SendType();
|
||||||
|
const SendMenu::Type _sendMenuType;
|
||||||
Fn<void()> _setInnerFocus;
|
Fn<void()> _setInnerFocus;
|
||||||
Fn<rpl::producer<bool>()> _dataIsValidValue;
|
Fn<rpl::producer<bool>()> _dataIsValidValue;
|
||||||
rpl::event_stream<Result> _submitRequests;
|
rpl::event_stream<Result> _submitRequests;
|
||||||
|
|
|
@ -632,7 +632,7 @@ bool RepliesWidget::confirmSendingFiles(
|
||||||
text,
|
text,
|
||||||
_history->peer->slowmodeApplied() ? SendLimit::One : SendLimit::Many,
|
_history->peer->slowmodeApplied() ? SendLimit::One : SendLimit::Many,
|
||||||
Api::SendType::Normal,
|
Api::SendType::Normal,
|
||||||
SendMenu::Type::Disabled); // #TODO replies schedule
|
SendMenu::Type::SilentOnly); // #TODO replies schedule
|
||||||
_composeControls->setText({});
|
_composeControls->setText({});
|
||||||
|
|
||||||
const auto replyTo = replyToId();
|
const auto replyTo = replyToId();
|
||||||
|
|
|
@ -616,6 +616,11 @@ void Filler::addPollAction(not_null<PeerData*> peer) {
|
||||||
const auto source = (_request.section == Section::Scheduled)
|
const auto source = (_request.section == Section::Scheduled)
|
||||||
? Api::SendType::Scheduled
|
? Api::SendType::Scheduled
|
||||||
: Api::SendType::Normal;
|
: 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 flag = PollData::Flags();
|
||||||
const auto replyToId = _request.currentReplyToId
|
const auto replyToId = _request.currentReplyToId
|
||||||
? _request.currentReplyToId
|
? _request.currentReplyToId
|
||||||
|
@ -627,7 +632,8 @@ void Filler::addPollAction(not_null<PeerData*> peer) {
|
||||||
replyToId,
|
replyToId,
|
||||||
flag,
|
flag,
|
||||||
flag,
|
flag,
|
||||||
source);
|
source,
|
||||||
|
sendMenuType);
|
||||||
};
|
};
|
||||||
_addAction(tr::lng_polls_create(tr::now), std::move(callback));
|
_addAction(tr::lng_polls_create(tr::now), std::move(callback));
|
||||||
}
|
}
|
||||||
|
@ -812,7 +818,8 @@ void PeerMenuCreatePoll(
|
||||||
MsgId replyToId,
|
MsgId replyToId,
|
||||||
PollData::Flags chosen,
|
PollData::Flags chosen,
|
||||||
PollData::Flags disabled,
|
PollData::Flags disabled,
|
||||||
Api::SendType sendType) {
|
Api::SendType sendType,
|
||||||
|
SendMenu::Type sendMenuType) {
|
||||||
if (peer->isChannel() && !peer->isMegagroup()) {
|
if (peer->isChannel() && !peer->isMegagroup()) {
|
||||||
chosen &= ~PollData::Flag::PublicVotes;
|
chosen &= ~PollData::Flag::PublicVotes;
|
||||||
disabled |= PollData::Flag::PublicVotes;
|
disabled |= PollData::Flag::PublicVotes;
|
||||||
|
@ -821,7 +828,8 @@ void PeerMenuCreatePoll(
|
||||||
controller,
|
controller,
|
||||||
chosen,
|
chosen,
|
||||||
disabled,
|
disabled,
|
||||||
sendType));
|
sendType,
|
||||||
|
sendMenuType));
|
||||||
const auto lock = box->lifetime().make_state<bool>(false);
|
const auto lock = box->lifetime().make_state<bool>(false);
|
||||||
box->submitRequests(
|
box->submitRequests(
|
||||||
) | rpl::start_with_next([=](const CreatePollBox::Result &result) {
|
) | rpl::start_with_next([=](const CreatePollBox::Result &result) {
|
||||||
|
|
|
@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "api/api_common.h"
|
#include "api/api_common.h"
|
||||||
|
#include "chat_helpers/send_context_menu.h"
|
||||||
#include "data/data_poll.h"
|
#include "data/data_poll.h"
|
||||||
|
|
||||||
class History;
|
class History;
|
||||||
|
@ -69,7 +70,8 @@ void PeerMenuCreatePoll(
|
||||||
MsgId replyToId = 0,
|
MsgId replyToId = 0,
|
||||||
PollData::Flags chosen = PollData::Flags(),
|
PollData::Flags chosen = PollData::Flags(),
|
||||||
PollData::Flags disabled = 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 {
|
struct ClearChat {
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue