Allow newRequirePremium for free if server allows.

This commit is contained in:
John Preston 2024-03-29 15:50:57 +04:00
parent da7a796edb
commit 68ded1a6e0
3 changed files with 15 additions and 7 deletions

View file

@ -141,6 +141,8 @@ void GlobalPrivacy::update(
using Flag = MTPDglobalPrivacySettings::Flag; using Flag = MTPDglobalPrivacySettings::Flag;
_api.request(_requestId).cancel(); _api.request(_requestId).cancel();
const auto newRequirePremiumAllowed = _session->premium()
|| _session->appConfig().newRequirePremiumFree();
const auto flags = Flag() const auto flags = Flag()
| (archiveAndMute | (archiveAndMute
? Flag::f_archive_and_mute_new_noncontact_peers ? Flag::f_archive_and_mute_new_noncontact_peers
@ -152,7 +154,7 @@ void GlobalPrivacy::update(
? Flag::f_keep_archived_folders ? Flag::f_keep_archived_folders
: Flag()) : Flag())
| (hideReadTime ? Flag::f_hide_read_marks : Flag()) | (hideReadTime ? Flag::f_hide_read_marks : Flag())
| ((newRequirePremium && _session->premium()) | ((newRequirePremium && newRequirePremiumAllowed)
? Flag::f_new_noncontact_peers_require_premium ? Flag::f_new_noncontact_peers_require_premium
: Flag()); : Flag());
_requestId = _api.request(MTPaccount_SetGlobalPrivacySettings( _requestId = _api.request(MTPaccount_SetGlobalPrivacySettings(

View file

@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "calls/calls_instance.h" #include "calls/calls_instance.h"
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "main/main_app_config.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "data/data_user.h" #include "data/data_user.h"
#include "data/data_chat.h" #include "data/data_chat.h"
@ -488,7 +489,10 @@ void EditMessagesPrivacyBox(
constexpr auto kOptionAll = 0; constexpr auto kOptionAll = 0;
constexpr auto kOptionPremium = 1; constexpr auto kOptionPremium = 1;
const auto premium = controller->session().premium(); const auto allowed = [=] {
return controller->session().premium()
|| controller->session().appConfig().newRequirePremiumFree();
};
const auto privacy = &controller->session().api().globalPrivacy(); const auto privacy = &controller->session().api().globalPrivacy();
const auto inner = box->verticalLayout(); const auto inner = box->verticalLayout();
inner->add(object_ptr<Ui::PlainShadow>(box)); inner->add(object_ptr<Ui::PlainShadow>(box));
@ -550,7 +554,7 @@ void EditMessagesPrivacyBox(
}), }),
}); });
}; };
if (!premium) { if (!allowed()) {
CreateRadiobuttonLock(restricted, st::messagePrivacyCheck); CreateRadiobuttonLock(restricted, st::messagePrivacyCheck);
group->setChangedCallback([=](int value) { group->setChangedCallback([=](int value) {
@ -562,7 +566,7 @@ void EditMessagesPrivacyBox(
} }
Ui::AddDividerText(inner, tr::lng_messages_privacy_about()); Ui::AddDividerText(inner, tr::lng_messages_privacy_about());
if (!premium) { if (!allowed()) {
Ui::AddSkip(inner); Ui::AddSkip(inner);
Settings::AddButtonWithIcon( Settings::AddButtonWithIcon(
inner, inner,
@ -581,7 +585,7 @@ void EditMessagesPrivacyBox(
}); });
} else { } else {
box->addButton(tr::lng_settings_save(), [=] { box->addButton(tr::lng_settings_save(), [=] {
if (controller->session().premium()) { if (allowed()) {
privacy->updateNewRequirePremium( privacy->updateNewRequirePremium(
group->current() == kOptionPremium); group->current() == kOptionPremium);
box->closeBox(); box->closeBox();

View file

@ -47,6 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_chat.h" #include "data/data_chat.h"
#include "data/data_channel.h" #include "data/data_channel.h"
#include "data/data_peer_values.h" #include "data/data_peer_values.h"
#include "main/main_app_config.h"
#include "main/main_domain.h" #include "main/main_domain.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "storage/storage_domain.h" #include "storage/storage_domain.h"
@ -307,8 +308,9 @@ void AddMessagesPrivacyButton(
button->addClickHandler([=] { button->addClickHandler([=] {
controller->show(Box(EditMessagesPrivacyBox, controller)); controller->show(Box(EditMessagesPrivacyBox, controller));
}); });
if (!session->appConfig().newRequirePremiumFree()) {
AddPremiumStar(button, session, rpl::duplicate(label), st.padding); AddPremiumStar(button, session, rpl::duplicate(label), st.padding);
}
} }
rpl::producer<int> BlockedPeersCount(not_null<::Main::Session*> session) { rpl::producer<int> BlockedPeersCount(not_null<::Main::Session*> session) {