Files
tbd-station-14/Content.Client/Administration/UI/BanList/BanListLine.xaml.cs

60 lines
1.6 KiB
C#

using Content.Shared.Administration.BanList;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.Administration.UI.BanList;
[GenerateTypedNameReferences]
public sealed partial class BanListLine : BoxContainer
{
public readonly SharedServerBan Ban;
public event Func<BanListLine, bool>? OnIdsClicked;
public BanListLine(SharedServerBan ban)
{
RobustXamlLoader.Load(this);
Ban = ban;
IdsHidden.OnPressed += IdsPressed;
Reason.Text = ban.Reason;
BanTime.Text = FormatDate(ban.BanTime);
Expires.Text = ban.ExpirationTime == null
? Loc.GetString("ban-list-permanent")
: FormatDate(ban.ExpirationTime.Value);
if (ban.Unban is { } unban)
{
var unbanned = Loc.GetString("ban-list-unbanned", ("date", FormatDate(unban.UnbanTime)));
var unbannedBy = unban.UnbanningAdmin == null
? string.Empty
: $"\n{Loc.GetString("ban-list-unbanned-by", ("unbanner", unban.UnbanningAdmin))}";
Expires.Text += $"\n{unbanned}{unbannedBy}";
}
BanningAdmin.Text = ban.BanningAdminName;
}
private static string FormatDate(DateTimeOffset date)
{
return date.ToString("MM/dd/yyyy h:mm tt");
}
private void IdsPressed(BaseButton.ButtonEventArgs buttonEventArgs)
{
OnIdsClicked?.Invoke(this);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
IdsHidden.OnPressed -= IdsPressed;
OnIdsClicked = null;
}
}