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;
_api.request(_requestId).cancel();
const auto newRequirePremiumAllowed = _session->premium()
|| _session->appConfig().newRequirePremiumFree();
const auto flags = Flag()
| (archiveAndMute
? Flag::f_archive_and_mute_new_noncontact_peers
@ -152,7 +154,7 @@ void GlobalPrivacy::update(
? Flag::f_keep_archived_folders
: Flag())
| (hideReadTime ? Flag::f_hide_read_marks : Flag())
| ((newRequirePremium && _session->premium())
| ((newRequirePremium && newRequirePremiumAllowed)
? Flag::f_new_noncontact_peers_require_premium
: Flag());
_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 "lang/lang_keys.h"
#include "apiwrap.h"
#include "main/main_app_config.h"
#include "main/main_session.h"
#include "data/data_user.h"
#include "data/data_chat.h"
@ -488,7 +489,10 @@ void EditMessagesPrivacyBox(
constexpr auto kOptionAll = 0;
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 inner = box->verticalLayout();
inner->add(object_ptr<Ui::PlainShadow>(box));
@ -550,7 +554,7 @@ void EditMessagesPrivacyBox(
}),
});
};
if (!premium) {
if (!allowed()) {
CreateRadiobuttonLock(restricted, st::messagePrivacyCheck);
group->setChangedCallback([=](int value) {
@ -562,7 +566,7 @@ void EditMessagesPrivacyBox(
}
Ui::AddDividerText(inner, tr::lng_messages_privacy_about());
if (!premium) {
if (!allowed()) {
Ui::AddSkip(inner);
Settings::AddButtonWithIcon(
inner,
@ -581,7 +585,7 @@ void EditMessagesPrivacyBox(
});
} else {
box->addButton(tr::lng_settings_save(), [=] {
if (controller->session().premium()) {
if (allowed()) {
privacy->updateNewRequirePremium(
group->current() == kOptionPremium);
box->closeBox();

View file

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