Rework default folders feature
This commit is contained in:
parent
f8f70fe828
commit
532243092b
13 changed files with 167 additions and 35 deletions
|
|
@ -32,6 +32,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "lang/lang_keys.h"
|
||||
#include "history/history.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "window/window_controller.h"
|
||||
#include "apiwrap.h"
|
||||
|
|
@ -637,7 +638,8 @@ void EditFilterBox(
|
|||
name->setFocusFast();
|
||||
});
|
||||
|
||||
const auto isCurrent = filter.id() == cDefaultFilterId();
|
||||
const auto defaultFilterId = window->session().account().defaultFilterId();
|
||||
const auto isCurrent = filter.id() == defaultFilterId;
|
||||
const auto checkboxDefault = content->add(
|
||||
object_ptr<Ui::Checkbox>(
|
||||
box,
|
||||
|
|
@ -783,10 +785,11 @@ void EditExistingFilter(
|
|||
MTP_int(id),
|
||||
tl
|
||||
)).send();
|
||||
const auto isCurrentDefault = result.id() == cDefaultFilterId();
|
||||
const auto defaultFilterId = session->account().defaultFilterId();
|
||||
const auto isCurrentDefault = result.id() == defaultFilterId;
|
||||
if ((isCurrentDefault && !result.isDefault())
|
||||
|| (!isCurrentDefault && result.isDefault())) {
|
||||
cSetDefaultFilterId(result.isDefault() ? result.id() : 0);
|
||||
session->account().setDefaultFilterId(result.isDefault() ? result.id() : 0);
|
||||
Kotato::JsonSettings::Write();
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "dialogs/dialogs_main_list.h"
|
||||
#include "ui/ui_utility.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "apiwrap.h"
|
||||
|
||||
namespace Data {
|
||||
|
|
@ -100,6 +101,7 @@ ChatFilter ChatFilter::FromTL(
|
|||
all.begin(),
|
||||
all.end()
|
||||
};
|
||||
const auto defaultFilterId = owner->session().account().defaultFilterId();
|
||||
return ChatFilter(
|
||||
data.vid().v,
|
||||
qs(data.vtitle()),
|
||||
|
|
@ -108,7 +110,7 @@ ChatFilter ChatFilter::FromTL(
|
|||
std::move(list),
|
||||
std::move(pinned),
|
||||
{ never.begin(), never.end() },
|
||||
(data.vid().v == cDefaultFilterId()));
|
||||
(data.vid().v == defaultFilterId));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -472,6 +474,7 @@ const ChatFilter &ChatFilters::applyUpdatedPinned(
|
|||
}
|
||||
}
|
||||
}
|
||||
const auto defaultFilterId = _owner->session().account().defaultFilterId();
|
||||
set(ChatFilter(
|
||||
id,
|
||||
i->title(),
|
||||
|
|
@ -480,7 +483,7 @@ const ChatFilter &ChatFilters::applyUpdatedPinned(
|
|||
std::move(always),
|
||||
std::move(pinned),
|
||||
i->never(),
|
||||
(id == cDefaultFilterId())));
|
||||
(id == defaultFilterId)));
|
||||
return *i;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "mainwindow.h"
|
||||
#include "mainwidget.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "main/main_session_settings.h"
|
||||
#include "apiwrap.h"
|
||||
#include "base/event_filter.h"
|
||||
|
|
@ -696,10 +697,11 @@ void Widget::escape() {
|
|||
if (controller()->openedFolder().current()) {
|
||||
controller()->closeFolder();
|
||||
} else if (!onCancelSearch()) {
|
||||
const auto defaultFilterId = session().account().defaultFilterId();
|
||||
if (controller()->activeChatEntryCurrent().key) {
|
||||
emit cancelled();
|
||||
} else if (controller()->activeChatsFilterCurrent() != cDefaultFilterId()) {
|
||||
controller()->setActiveChatsFilter(cDefaultFilterId());
|
||||
} else if (controller()->activeChatsFilterCurrent() != defaultFilterId) {
|
||||
controller()->setActiveChatsFilter(defaultFilterId);
|
||||
}
|
||||
} else if (!_searchInChat && !controller()->selectingPeer()) {
|
||||
if (controller()->activeChatEntryCurrent().key) {
|
||||
|
|
|
|||
|
|
@ -137,6 +137,7 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
|
|||
|
||||
auto settingsFonts = QJsonObject();
|
||||
auto settingsFolders = QJsonObject();
|
||||
auto settingsFoldersDefault = QJsonObject();
|
||||
auto settingsScales = QJsonArray();
|
||||
auto settingsReplaces = QJsonArray();
|
||||
|
||||
|
|
@ -173,6 +174,22 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
|
|||
a << i.key() << i.value();
|
||||
settingsReplaces << a;
|
||||
}
|
||||
|
||||
const auto defaultFilterIdMap = cDefaultFilterId();
|
||||
for (auto i = defaultFilterIdMap.constBegin(), e = defaultFilterIdMap.constEnd(); i != e; ++i) {
|
||||
auto value = i.value();
|
||||
if (value == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto key = QString::number(std::abs(i.key()));
|
||||
|
||||
if (i.key() < 0) {
|
||||
key.prepend("test_");
|
||||
}
|
||||
|
||||
settingsFoldersDefault.insert(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
settings.insert(qsl("sticker_height"), StickerHeight());
|
||||
|
|
@ -199,7 +216,7 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
|
|||
settingsFonts.insert(qsl("use_system_font"), cUseSystemFont());
|
||||
settingsFonts.insert(qsl("use_original_metrics"), cUseOriginalMetrics());
|
||||
|
||||
settingsFolders.insert(qsl("default"), cDefaultFilterId());
|
||||
settingsFolders.insert(qsl("default"), settingsFoldersDefault);
|
||||
settingsFolders.insert(qsl("count_unmuted_only"), cUnmutedFilterCounterOnly());
|
||||
settingsFolders.insert(qsl("hide_edit_button"), cHideFilterEditButton());
|
||||
settingsFolders.insert(qsl("hide_names"), cHideFilterNames());
|
||||
|
|
@ -443,10 +460,38 @@ bool Manager::readCustomFile() {
|
|||
});
|
||||
|
||||
ReadObjectOption(settings, "folders", [&](auto o) {
|
||||
ReadIntOption(o, "default", [&](auto v) {
|
||||
cSetDefaultFilterId(v);
|
||||
auto isDefaultFilterRead = ReadIntOption(o, "default", [&](auto v) {
|
||||
SetDefaultFilterId(0, v);
|
||||
});
|
||||
|
||||
if (!isDefaultFilterRead) {
|
||||
ReadObjectOption(o, "default", [&](auto f) {
|
||||
if (f.empty()) {
|
||||
return;
|
||||
}
|
||||
bool isInt;
|
||||
|
||||
for (auto i = f.begin(), e = f.end(); i != e; ++i) {
|
||||
auto value = i.value().toInt(0);
|
||||
|
||||
if (value == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto key = i.key();
|
||||
if (key.startsWith("test_")) {
|
||||
key = key.mid(5).prepend("-");
|
||||
}
|
||||
|
||||
auto account_id = key.toInt(&isInt, 10);
|
||||
|
||||
if (isInt) {
|
||||
SetDefaultFilterId(account_id, value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ReadBoolOption(o, "count_unmuted_only", [&](auto v) {
|
||||
cSetUnmutedFilterCounterOnly(v);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -149,7 +149,26 @@ bool gDisableTrayCounter = false;
|
|||
bool gUseTelegramPanelIcon = false;
|
||||
int gCustomAppIcon = 0;
|
||||
|
||||
int gDefaultFilterId = 0;
|
||||
DefaultFilterMap gDefaultFilterId;
|
||||
void SetDefaultFilterId(int account, int filter) {
|
||||
if (gDefaultFilterId.contains(account)) {
|
||||
gDefaultFilterId[account] = filter;
|
||||
} else {
|
||||
gDefaultFilterId.insert(account, filter);
|
||||
}
|
||||
}
|
||||
int DefaultFilterId(int account) {
|
||||
if (gDefaultFilterId.contains(account)) {
|
||||
return gDefaultFilterId[account];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
bool HasDefaultFilterId(int account) {
|
||||
return gDefaultFilterId.contains(account);
|
||||
}
|
||||
bool ClearDefaultFilterId(int account) {
|
||||
return gDefaultFilterId.remove(account);
|
||||
}
|
||||
bool gUnmutedFilterCounterOnly = false;
|
||||
bool gHideFilterEditButton = false;
|
||||
bool gHideFilterNames = false;
|
||||
|
|
|
|||
|
|
@ -105,7 +105,12 @@ DeclareSetting(bool, DisableTrayCounter);
|
|||
DeclareSetting(bool, UseTelegramPanelIcon);
|
||||
DeclareSetting(int, CustomAppIcon);
|
||||
|
||||
DeclareSetting(int, DefaultFilterId);
|
||||
using DefaultFilterMap = QMap<int, int>;
|
||||
DeclareRefSetting(DefaultFilterMap, DefaultFilterId);
|
||||
void SetDefaultFilterId(int account, int filter);
|
||||
int DefaultFilterId(int account);
|
||||
bool HasDefaultFilterId(int account);
|
||||
bool ClearDefaultFilterId(int account);
|
||||
DeclareSetting(bool, UnmutedFilterCounterOnly);
|
||||
DeclareSetting(bool, HideFilterEditButton);
|
||||
DeclareSetting(bool, HideFilterNames);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "main/main_session.h"
|
||||
#include "main/main_domain.h"
|
||||
#include "main/main_session_settings.h"
|
||||
#include "kotato/json_settings.h"
|
||||
#include "facades.h"
|
||||
|
||||
namespace Main {
|
||||
|
|
@ -188,6 +189,19 @@ void Account::createSession(
|
|||
_sessionValue = _session.get();
|
||||
|
||||
Ensures(_session != nullptr);
|
||||
|
||||
const auto defaultFilterUserId = _mtp->isTestMode()
|
||||
? -session().userId()
|
||||
: session().userId();
|
||||
|
||||
if (HasDefaultFilterId(0)) {
|
||||
const auto newDefaultFilterId = DefaultFilterId(0);
|
||||
ClearDefaultFilterId(0);
|
||||
setDefaultFilterId(newDefaultFilterId);
|
||||
Kotato::JsonSettings::Write();
|
||||
} else {
|
||||
_defaultFilterId = DefaultFilterId(defaultFilterUserId);
|
||||
}
|
||||
}
|
||||
|
||||
void Account::destroySession(DestroyReason reason) {
|
||||
|
|
@ -577,6 +591,22 @@ void Account::destroyStaleAuthorizationKeys() {
|
|||
}
|
||||
}
|
||||
|
||||
void Account::setDefaultFilterId(int id) {
|
||||
Expects(_mtp != nullptr);
|
||||
Expects(_session != nullptr);
|
||||
|
||||
_defaultFilterId = id;
|
||||
const auto defaultFilterUserId = _mtp->isTestMode()
|
||||
? -session().userId()
|
||||
: session().userId();
|
||||
|
||||
if (id == 0) {
|
||||
ClearDefaultFilterId(defaultFilterUserId);
|
||||
} else {
|
||||
SetDefaultFilterId(defaultFilterUserId, id);
|
||||
}
|
||||
}
|
||||
|
||||
void Account::resetAuthorizationKeys() {
|
||||
Expects(_mtp != nullptr);
|
||||
|
||||
|
|
|
|||
|
|
@ -107,6 +107,11 @@ public:
|
|||
return _lifetime;
|
||||
}
|
||||
|
||||
[[nodiscard]] int defaultFilterId() {
|
||||
return _defaultFilterId;
|
||||
}
|
||||
void setDefaultFilterId(int id);
|
||||
|
||||
private:
|
||||
static constexpr auto kDefaultSaveDelay = crl::time(1000);
|
||||
enum class DestroyReason {
|
||||
|
|
@ -152,6 +157,7 @@ private:
|
|||
MTP::Instance::Fields _mtpFields;
|
||||
MTP::AuthKeysList _mtpKeysToDestroy;
|
||||
bool _loggingOut = false;
|
||||
int _defaultFilterId = 0;
|
||||
|
||||
rpl::lifetime _lifetime;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "data/data_chat_filters.h"
|
||||
#include "history/history.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "window/window_controller.h"
|
||||
#include "ui/layers/generic_box.h"
|
||||
|
|
@ -312,11 +313,13 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
not_null<Window::SessionController*> controller,
|
||||
not_null<Ui::VerticalLayout*> container) {
|
||||
auto &lifetime = container->lifetime();
|
||||
const auto currentDefaultId = cDefaultFilterId();
|
||||
|
||||
const auto session = &controller->session();
|
||||
const auto account = &session->account();
|
||||
const auto currentDefaultId = account->defaultFilterId();
|
||||
localNewFilterId = kFiltersLimit;
|
||||
currentDefaultRemoved = false;
|
||||
|
||||
const auto session = &controller->session();
|
||||
AddSkip(container, st::settingsSectionSkip);
|
||||
AddSubsectionTitle(container, tr::lng_filters_subtitle());
|
||||
|
||||
|
|
@ -343,7 +346,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
button->removeRequests(
|
||||
) | rpl::start_with_next([=] {
|
||||
button->setRemoved(true);
|
||||
if (find(button)->filter.id() == cDefaultFilterId()) {
|
||||
if (find(button)->filter.id() == account->defaultFilterId()) {
|
||||
currentDefaultRemoved = true;
|
||||
}
|
||||
find(button)->removed = true;
|
||||
|
|
@ -353,7 +356,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
if (showLimitReached()) {
|
||||
return;
|
||||
}
|
||||
if (find(button)->filter.id() == cDefaultFilterId()) {
|
||||
if (find(button)->filter.id() == account->defaultFilterId()) {
|
||||
currentDefaultRemoved = false;
|
||||
}
|
||||
button->setRemoved(false);
|
||||
|
|
@ -366,10 +369,10 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
}
|
||||
const auto doneCallback = [=](const Data::ChatFilter &result) {
|
||||
find(button)->filter = result;
|
||||
const auto isCurrentDefault = result.id() == cDefaultFilterId();
|
||||
const auto isCurrentDefault = result.id() == account->defaultFilterId();
|
||||
if ((isCurrentDefault && !result.isDefault())
|
||||
|| (!isCurrentDefault && result.isDefault())) {
|
||||
cSetDefaultFilterId(result.isDefault() ? result.id() : 0);
|
||||
account->setDefaultFilterId(result.isDefault() ? result.id() : 0);
|
||||
}
|
||||
button->updateData(result);
|
||||
};
|
||||
|
|
@ -432,7 +435,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
}
|
||||
const auto doneCallback = [=](const Data::ChatFilter &result) {
|
||||
if (result.isDefault()) {
|
||||
cSetDefaultFilterId(result.id());
|
||||
account->setDefaultFilterId(result.id());
|
||||
}
|
||||
addFilter(result);
|
||||
};
|
||||
|
|
@ -528,8 +531,8 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
continue;
|
||||
} else if (!ranges::contains(list, id, &Data::ChatFilter::id)) {
|
||||
result.emplace(row.button, chooseNextId());
|
||||
if (cDefaultFilterId() == id) {
|
||||
cSetDefaultFilterId(localId);
|
||||
if (account->defaultFilterId() == id) {
|
||||
account->setDefaultFilterId(localId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -589,10 +592,10 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
realFilters.saveOrder(order, previousId);
|
||||
}
|
||||
if (currentDefaultRemoved) {
|
||||
cSetDefaultFilterId(0);
|
||||
account->setDefaultFilterId(0);
|
||||
controller->setActiveChatsFilter(0);
|
||||
}
|
||||
if (currentDefaultId != cDefaultFilterId()) {
|
||||
if (currentDefaultId != account->defaultFilterId()) {
|
||||
Kotato::JsonSettings::Write();
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "ui/emoji_config.h"
|
||||
#include "chat_helpers/emoji_sets_manager.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "window/window_filters_menu.h"
|
||||
#include "window/themes/window_theme.h"
|
||||
#include "window/themes/window_theme_editor.h"
|
||||
#include "boxes/confirm_box.h"
|
||||
|
|
@ -68,6 +69,7 @@ void Controller::showAccount(not_null<Main::Account*> account) {
|
|||
}, session->lifetime());
|
||||
}
|
||||
if (session && session->settings().dialogsFiltersEnabled()) {
|
||||
ResetFiltersFirstLoad();
|
||||
_sessionController->toggleFiltersMenu(true);
|
||||
} else {
|
||||
sideBarChanged();
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "window/window_session_controller.h"
|
||||
#include "window/window_controller.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "data/data_session.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_folder.h"
|
||||
|
|
@ -61,6 +62,10 @@ bool FiltersFirstLoad = true;
|
|||
|
||||
} // namespace
|
||||
|
||||
void ResetFiltersFirstLoad() {
|
||||
FiltersFirstLoad = true;
|
||||
}
|
||||
|
||||
FiltersMenu::FiltersMenu(
|
||||
not_null<Ui::RpWidget*> parent,
|
||||
not_null<SessionController*> session)
|
||||
|
|
@ -101,6 +106,7 @@ void FiltersMenu::setup() {
|
|||
}, _outer.lifetime());
|
||||
|
||||
const auto filters = &_session->session().data().chatsFilters();
|
||||
_activeFilterId = _session->activeChatsFilterCurrent();
|
||||
rpl::single(
|
||||
rpl::empty_value()
|
||||
) | rpl::then(
|
||||
|
|
@ -109,7 +115,6 @@ void FiltersMenu::setup() {
|
|||
refresh();
|
||||
}, _outer.lifetime());
|
||||
|
||||
_activeFilterId = _session->activeChatsFilterCurrent();
|
||||
_session->activeChatsFilter(
|
||||
) | rpl::filter([=](FilterId id) {
|
||||
return id != _activeFilterId;
|
||||
|
|
@ -200,7 +205,7 @@ void FiltersMenu::refresh() {
|
|||
}
|
||||
|
||||
if (FiltersFirstLoad) {
|
||||
_session->setActiveChatsFilter(cDefaultFilterId());
|
||||
_session->setActiveChatsFilter(_session->session().account().defaultFilterId());
|
||||
FiltersFirstLoad = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -321,11 +326,12 @@ void FiltersMenu::showMenu(QPoint position, FilterId id) {
|
|||
if (i == end(_filters)) {
|
||||
return;
|
||||
}
|
||||
const auto defaultFilterId = _session->session().account().defaultFilterId();
|
||||
_popupMenu = base::make_unique_q<Ui::PopupMenu>(i->second.get());
|
||||
_popupMenu->addAction(
|
||||
tr::lng_filters_context_edit(tr::now),
|
||||
crl::guard(&_outer, [=] { showEditBox(id); }));
|
||||
if (cDefaultFilterId() != id) {
|
||||
if (defaultFilterId != id) {
|
||||
_popupMenu->addAction(
|
||||
tr::ktg_filters_context_make_default(tr::now),
|
||||
crl::guard(&_outer, [=] { setDefaultFilter(id); }));
|
||||
|
|
@ -345,11 +351,12 @@ void FiltersMenu::showAllMenu(QPoint position) {
|
|||
_popupMenu = nullptr;
|
||||
return;
|
||||
}
|
||||
const auto defaultFilterId = _session->session().account().defaultFilterId();
|
||||
_popupMenu = base::make_unique_q<Ui::PopupMenu>(_all);
|
||||
_popupMenu->addAction(
|
||||
tr::ktg_filters_context_edit_all(tr::now),
|
||||
crl::guard(&_outer, [=] { _session->showSettings(Settings::Type::Folders); }));
|
||||
if (cDefaultFilterId() != 0) {
|
||||
if (defaultFilterId != 0) {
|
||||
_popupMenu->addAction(
|
||||
tr::ktg_filters_context_make_default(tr::now),
|
||||
crl::guard(&_outer, [=] { setDefaultFilter(0); }));
|
||||
|
|
@ -359,8 +366,9 @@ void FiltersMenu::showAllMenu(QPoint position) {
|
|||
}
|
||||
|
||||
void FiltersMenu::setDefaultFilter(FilterId id) {
|
||||
if (cDefaultFilterId() != id) {
|
||||
cSetDefaultFilterId(id);
|
||||
const auto defaultFilterId = _session->session().account().defaultFilterId();
|
||||
if (defaultFilterId != id) {
|
||||
_session->session().account().setDefaultFilterId(id);
|
||||
Kotato::JsonSettings::Write();
|
||||
}
|
||||
}
|
||||
|
|
@ -378,6 +386,7 @@ void FiltersMenu::showRemoveBox(FilterId id) {
|
|||
}
|
||||
|
||||
void FiltersMenu::remove(FilterId id) {
|
||||
const auto defaultFilterId = _session->session().account().defaultFilterId();
|
||||
_session->session().data().chatsFilters().apply(MTP_updateDialogFilter(
|
||||
MTP_flags(MTPDupdateDialogFilter::Flag(0)),
|
||||
MTP_int(id),
|
||||
|
|
@ -387,8 +396,8 @@ void FiltersMenu::remove(FilterId id) {
|
|||
MTP_int(id),
|
||||
MTPDialogFilter()
|
||||
)).send();
|
||||
if (id == cDefaultFilterId()) {
|
||||
cSetDefaultFilterId(0);
|
||||
if (id == defaultFilterId) {
|
||||
_session->session().account().setDefaultFilterId(0);
|
||||
Kotato::JsonSettings::Write();
|
||||
if (id == _session->activeChatsFilterCurrent()) {
|
||||
_session->setActiveChatsFilter(0);
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ namespace Window {
|
|||
|
||||
class SessionController;
|
||||
|
||||
void ResetFiltersFirstLoad();
|
||||
|
||||
class FiltersMenu final {
|
||||
public:
|
||||
FiltersMenu(
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "mainwidget.h"
|
||||
#include "mainwindow.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_account.h"
|
||||
#include "main/main_session_settings.h"
|
||||
#include "apiwrap.h"
|
||||
#include "support/support_helper.h"
|
||||
|
|
@ -290,8 +291,9 @@ void SessionController::checkOpenedFilter() {
|
|||
const auto &list = session().data().chatsFilters().list();
|
||||
const auto i = ranges::find(list, filterId, &Data::ChatFilter::id);
|
||||
if (i == end(list)) {
|
||||
const auto j = ranges::find(list, FilterId(cDefaultFilterId()), &Data::ChatFilter::id);
|
||||
setActiveChatsFilter(j == end(list) ? 0 : cDefaultFilterId());
|
||||
const auto defaultFilterId = session().account().defaultFilterId();
|
||||
const auto j = ranges::find(list, FilterId(defaultFilterId), &Data::ChatFilter::id);
|
||||
setActiveChatsFilter(j == end(list) ? 0 : defaultFilterId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -311,10 +313,11 @@ void SessionController::openFolder(not_null<Data::Folder*> folder) {
|
|||
}
|
||||
|
||||
void SessionController::closeFolder(bool force) {
|
||||
if (cDefaultFilterId() == 0 || force) {
|
||||
const auto defaultFilterId = session().account().defaultFilterId();
|
||||
if (defaultFilterId == 0 || force) {
|
||||
_openedFolder = nullptr;
|
||||
} else {
|
||||
setActiveChatsFilter(cDefaultFilterId());
|
||||
setActiveChatsFilter(defaultFilterId);
|
||||
checkOpenedFilter();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue