mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-04-01 23:00:58 +00:00
Fixed processing of premium limits for filters.
This commit is contained in:
parent
9e4d47dcc0
commit
a1736de977
@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "ui/filter_icon_panel.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_peer.h"
|
||||
#include "data/data_peer_values.h" // Data::AmPremiumValue.
|
||||
#include "data/data_session.h"
|
||||
#include "core/application.h"
|
||||
#include "core/core_settings.h"
|
||||
@ -504,6 +505,12 @@ void EditFilterBox(
|
||||
box->setTitle(creating ? tr::lng_filters_new() : tr::lng_filters_edit());
|
||||
box->setCloseByOutsideClick(false);
|
||||
|
||||
Data::AmPremiumValue(
|
||||
&window->session()
|
||||
) | rpl::start_with_next([=] {
|
||||
box->closeBox();
|
||||
}, box->lifetime());
|
||||
|
||||
using State = rpl::variable<Data::ChatFilter>;
|
||||
const auto data = box->lifetime().make_state<State>(filter);
|
||||
|
||||
|
@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "boxes/peer_list_controllers.h"
|
||||
#include "boxes/peers/prepare_short_info_box.h" // PrepareShortInfoBox
|
||||
#include "window/window_session_controller.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_user.h"
|
||||
#include "data/data_channel.h"
|
||||
#include "data/data_session.h"
|
||||
@ -710,6 +711,9 @@ void FiltersLimitBox(
|
||||
session,
|
||||
"dialog_filters_limit_premium",
|
||||
20);
|
||||
const auto current = float64(ranges::count_if(
|
||||
session->data().chatsFilters().list(),
|
||||
[](const Data::ChatFilter &f) { return f.id() != FilterId(); }));
|
||||
|
||||
auto text = rpl::combine(
|
||||
tr::lng_filters_limit1(
|
||||
@ -733,7 +737,7 @@ void FiltersLimitBox(
|
||||
tr::lng_filters_limit_title(),
|
||||
std::move(text),
|
||||
"dialog_filters",
|
||||
{ defaultLimit, defaultLimit, premiumLimit, &st::premiumIconFolders },
|
||||
{ defaultLimit, current, premiumLimit, &st::premiumIconFolders },
|
||||
premium);
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_folder.h"
|
||||
#include "data/data_peer.h"
|
||||
#include "data/data_peer_values.h" // Data::AmPremiumValue.
|
||||
#include "data/data_session.h"
|
||||
#include "history/history.h"
|
||||
#include "lang/lang_keys.h"
|
||||
@ -490,8 +491,11 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
||||
|
||||
auto showSuggestions = rpl::combine(
|
||||
suggested->value(),
|
||||
rowsCount->value()
|
||||
) | rpl::map(rpl::mappers::_1 > 0 && rpl::mappers::_2 < limit());
|
||||
rowsCount->value(),
|
||||
Data::AmPremiumValue(session)
|
||||
) | rpl::map([limit](int suggested, int count, bool) {
|
||||
return suggested > 0 && count < limit();
|
||||
});
|
||||
nonEmptyAbout->toggleOn(std::move(showSuggestions));
|
||||
|
||||
const auto prepareGoodIdsForNewFilters = [=] {
|
||||
|
@ -194,7 +194,8 @@ void FiltersMenu::refresh() {
|
||||
_reorder->cancel();
|
||||
|
||||
_reorder->clearPinnedIntervals();
|
||||
const auto maxLimit = CurrentPremiumFiltersLimit(&_session->session());
|
||||
const auto maxLimit = (reorderAll ? 1 : 0)
|
||||
+ CurrentPremiumFiltersLimit(&_session->session());
|
||||
const auto premiumFrom = (reorderAll ? 0 : 1) + maxLimit;
|
||||
if (!reorderAll) {
|
||||
_reorder->addPinnedInterval(0, 1);
|
||||
@ -204,8 +205,12 @@ void FiltersMenu::refresh() {
|
||||
std::max(1, int(filters->list().size()) - maxLimit));
|
||||
|
||||
auto now = base::flat_map<int, base::unique_qptr<Ui::SideBarButton>>();
|
||||
const auto ¤tFilter = _session->activeChatsFilterCurrent();
|
||||
for (const auto &filter : filters->list()) {
|
||||
const auto nextIsLocked = (now.size() >= premiumFrom);
|
||||
if (nextIsLocked && (currentFilter == filter.id())) {
|
||||
_session->setActiveChatsFilter(FilterId(0));
|
||||
}
|
||||
auto button = prepareButton(
|
||||
_list,
|
||||
filter.id(),
|
||||
|
Loading…
Reference in New Issue
Block a user