Fix toggling chatbot replying, fix saving.

This commit is contained in:
John Preston 2024-04-09 11:55:38 +04:00
parent 72770aa76d
commit 29dd574e22
7 changed files with 22 additions and 10 deletions

View file

@ -125,8 +125,10 @@ void Chatbots::togglePaused(not_null<PeerData*> peer, bool paused) {
return;
} else if (const auto settings = peer->barSettings()) {
peer->setBarSettings(paused
? (*settings | PeerBarSetting::BusinessBotPaused)
: (*settings & ~PeerBarSetting::BusinessBotPaused));
? ((*settings | PeerBarSetting::BusinessBotPaused)
& ~PeerBarSetting::BusinessBotCanReply)
: ((*settings & ~PeerBarSetting::BusinessBotPaused)
| PeerBarSetting::BusinessBotCanReply));
} else {
api->requestPeerSettings(peer);
}

View file

@ -71,6 +71,13 @@ auto RecipientsFlags(const BusinessRecipients &data) {
} // namespace
BusinessRecipients BusinessRecipients::MakeValid(BusinessRecipients value) {
if (value.included.empty()) {
value.allButExcluded = true;
}
return value;
}
MTPInputBusinessRecipients ForMessagesToMTP(const BusinessRecipients &data) {
using Flag = MTPDinputBusinessRecipients::Flag;
const auto &chats = data.allButExcluded ? data.excluded : data.included;

View file

@ -44,6 +44,9 @@ struct BusinessRecipients {
BusinessChats excluded;
bool allButExcluded = false;
[[nodiscard]] static BusinessRecipients MakeValid(
BusinessRecipients value);
friend inline bool operator==(
const BusinessRecipients &a,
const BusinessRecipients &b) = default;

View file

@ -902,15 +902,15 @@ void BusinessBotStatus::Bar::showState(State state) {
_userpic->setAttribute(Qt::WA_TransparentForMouseEvents);
_userpic->show();
_name->setText(state.bot->name());
_status->setText(!state.canReply
? tr::lng_chatbot_status_views(tr::now)
: state.paused
_status->setText(state.paused
? tr::lng_chatbot_status_paused(tr::now)
: tr::lng_chatbot_status_can_reply(tr::now));
: state.canReply
? tr::lng_chatbot_status_can_reply(tr::now)
: tr::lng_chatbot_status_views(tr::now));
_togglePaused->setText(state.paused
? tr::lng_chatbot_button_resume()
: tr::lng_chatbot_button_pause());
_togglePaused->setVisible(state.canReply);
_togglePaused->setVisible(state.canReply || state.paused);
_paused = state.paused;
resizeToWidth(width());
}

View file

@ -220,7 +220,7 @@ void AwayMessage::setupContent(
_recipients = disabled
? Data::BusinessRecipients{ .allButExcluded = true }
: current.recipients;
: Data::BusinessRecipients::MakeValid(current.recipients);
auto initialSchedule = disabled ? AwaySchedule{
.type = AwayScheduleType::Always,
} : current.schedule;

View file

@ -408,7 +408,7 @@ void Chatbots::setupContent(
const auto content = Ui::CreateChild<Ui::VerticalLayout>(this);
const auto current = controller->session().data().chatbots().current();
_recipients = current.recipients;
_recipients = Data::BusinessRecipients::MakeValid(current.recipients);
_repliesAllowed = current.repliesAllowed;
AddDividerTextWithLottie(content, {

View file

@ -125,7 +125,7 @@ void Greeting::setupContent(
_recipients = disabled
? Data::BusinessRecipients{ .allButExcluded = true }
: current.recipients;
: Data::BusinessRecipients::MakeValid(current.recipients);
_noActivityDays = disabled
? kDefaultNoActivityDays
: current.noActivityDays;