fish-station/Content.Client/_Sunrise/CartridgeLoader/Cartridges/AddUserDialog.xaml.cs
Vigers Ray 95d7d4d348
ыыыыы, месенжер макс, ихихяхя (#3789)
Co-authored-by: Daniel <77834935+Orvex07@users.noreply.github.com>
2026-01-26 22:44:54 +03:00

71 lines
1.8 KiB
C#

using System.Linq;
using Content.Shared._Sunrise.Messenger;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client._Sunrise.CartridgeLoader.Cartridges;
[GenerateTypedNameReferences]
public sealed partial class AddUserDialog : DefaultWindow
{
public event Action<string>? OnUserSelected;
public event Action? OnClose;
private List<MessengerUser> _availableUsers = new();
public AddUserDialog()
{
RobustXamlLoader.Load(this);
Title = Loc.GetString("messenger-add-user-title");
SearchInput.OnTextChanged += _ => UpdateUsersList();
CloseButton.OnPressed += _ =>
{
OnClose?.Invoke();
Close();
};
}
public void SetTitle(string title)
{
Title = title;
}
public void SetAvailableUsers(List<MessengerUser> users)
{
_availableUsers = users;
UpdateUsersList();
}
private void UpdateUsersList()
{
UsersList.RemoveAllChildren();
var searchText = SearchInput.Text.ToLowerInvariant();
var filteredUsers = _availableUsers.Where(u =>
string.IsNullOrEmpty(searchText) ||
(u.Name?.ToLowerInvariant().Contains(searchText) ?? false))
.ToList();
foreach (var user in filteredUsers)
{
var userButton = new Button
{
Text = user.Name,
HorizontalExpand = true,
Margin = new Thickness(2)
};
var userId = user.UserId;
userButton.OnPressed += _ =>
{
OnUserSelected?.Invoke(userId);
Close();
};
UsersList.AddChild(userButton);
}
}
}