Fixed crash from feature to kick participants from common groups.

This commit is contained in:
23rd
2026-01-26 12:04:07 +03:00
parent 786b0e77b8
commit a5db6cd363
3 changed files with 13 additions and 3 deletions
@@ -352,7 +352,7 @@ void FillChooseFilterMenu(
}, menu->lifetime());
}
void FillChooseFilterWithAdminedGroupsMenu(
bool FillChooseFilterWithAdminedGroupsMenu(
not_null<Window::SessionController*> controller,
not_null<Ui::PopupMenu*> menu,
not_null<UserData*> user,
@@ -363,6 +363,7 @@ void FillChooseFilterWithAdminedGroupsMenu(
const auto session = &controller->session();
const auto &list = session->data().chatsFilters().list();
const auto showColors = session->data().chatsFilters().tagsEnabled();
auto added = 0;
for (const auto &filter : list) {
const auto id = filter.id();
if (!id) {
@@ -446,10 +447,14 @@ void FillChooseFilterWithAdminedGroupsMenu(
}));
item->setIcon(Icon(showColors ? filter : filter.withColorIndex({})));
menu->addAction(std::move(item));
added++;
}
session->data().chatsFilters().changed(
) | rpl::on_next([=] {
menu->hideMenu();
}, menu->lifetime());
return added;
}
@@ -44,7 +44,7 @@ void FillChooseFilterMenu(
not_null<Ui::PopupMenu*> menu,
not_null<History*> history);
void FillChooseFilterWithAdminedGroupsMenu(
bool FillChooseFilterWithAdminedGroupsMenu(
not_null<Window::SessionController*> controller,
not_null<Ui::PopupMenu*> menu,
not_null<UserData*> user,
@@ -254,12 +254,13 @@ void FillMenuModerateCommonGroups(
}
menu->addSeparator();
if (const auto window = Core::App().findWindow(menu->parentWidget())) {
auto hasActions = false;
Ui::Menu::CreateAddActionCallback(menu)(Ui::Menu::MenuCallback::Args{
.text = tr::lng_restrict_users_kick_from_common_group(tr::now),
.handler = nullptr,
.icon = &st::menuIconAddToFolder,
.fillSubmenu = [&](not_null<Ui::PopupMenu*> menu) {
FillChooseFilterWithAdminedGroupsMenu(
hasActions = FillChooseFilterWithAdminedGroupsMenu(
window->sessionController(),
menu,
user,
@@ -269,6 +270,10 @@ void FillMenuModerateCommonGroups(
},
.submenuSt = &st::foldersMenu,
});
if (!hasActions) {
menu->removeAction(menu->actions().size() - 1);
menu->removeAction(menu->actions().size() - 1); // Separator.
}
}
menu->addSeparator();
{