Show ban and note count in ahelp window (#15328)

This commit is contained in:
DrSmugleaf
2023-04-11 17:34:25 -07:00
committed by GitHub
parent 98b4af8df0
commit 26cd16eeaa
13 changed files with 142 additions and 34 deletions

View File

@@ -124,6 +124,11 @@ public sealed class AdminNotesManager : IAdminNotesManager, IPostInjectInit
return await _db.GetAdminNotes(player);
}
public async Task<int> CountNotes(Guid player)
{
return await _db.CountAdminNotes(player);
}
public async Task<string> GetPlayerName(Guid player)
{
return (await _db.GetPlayerRecordByUserId(new NetUserId(player)))?.LastSeenUserName ?? string.Empty;

View File

@@ -20,5 +20,6 @@ public interface IAdminNotesManager
Task DeleteNote(int noteId, IPlayerSession deletedBy);
Task ModifyNote(int noteId, IPlayerSession editedBy, string message);
Task<List<AdminNote>> GetNotes(Guid player);
Task<int> CountNotes(Guid player);
Task<string> GetPlayerName(Guid player);
}

View File

@@ -1,7 +1,9 @@
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Content.Server.Administration.Managers;
using Content.Server.GameTicking.Events;
using Content.Server.Administration.Notes;
using Content.Server.Database;
using Content.Server.IdentityManagement;
using Content.Server.Players;
using Content.Server.Roles;
@@ -13,6 +15,7 @@ using Robust.Server.GameObjects;
using Robust.Server.Player;
using Robust.Shared.Enums;
using Robust.Shared.Network;
using Job = Content.Server.Roles.Job;
namespace Content.Server.Administration.Systems
{
@@ -20,6 +23,8 @@ namespace Content.Server.Administration.Systems
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IServerDbManager _db = default!;
[Dependency] private readonly IAdminNotesManager _notes = default!;
private readonly Dictionary<NetUserId, PlayerInfo> _playerList = new();
@@ -44,7 +49,7 @@ namespace Content.Server.Administration.Systems
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnRoundRestartCleanup);
}
private void OnRoundRestartCleanup(RoundRestartCleanupEvent ev)
private async void OnRoundRestartCleanup(RoundRestartCleanupEvent ev)
{
_roundActivePlayers.Clear();
@@ -57,7 +62,7 @@ namespace Content.Server.Administration.Systems
return;
_playerManager.TryGetSessionById(id, out var session);
_playerList[id] = GetPlayerInfo(playerData, session);
_playerList[id] = await GetPlayerInfo(playerData, session);
}
var updateEv = new FullPlayerListEvent() { PlayersInfo = _playerList.Values.ToList() };
@@ -68,9 +73,9 @@ namespace Content.Server.Administration.Systems
}
}
public void UpdatePlayerList(IPlayerSession player)
public async void UpdatePlayerList(IPlayerSession player)
{
_playerList[player.UserId] = GetPlayerInfo(player.Data, player);
_playerList[player.UserId] = await GetPlayerInfo(player.Data, player);
var playerInfoChangedEvent = new PlayerInfoChangedEvent
{
@@ -157,7 +162,7 @@ namespace Content.Server.Administration.Systems
RaiseNetworkEvent(ev, playerSession.ConnectedClient);
}
private PlayerInfo GetPlayerInfo(IPlayerData data, IPlayerSession? session)
private async Task<PlayerInfo> GetPlayerInfo(IPlayerData data, IPlayerSession? session)
{
var name = data.UserName;
var entityName = string.Empty;
@@ -178,8 +183,11 @@ namespace Content.Server.Administration.Systems
var connected = session != null && session.Status is SessionStatus.Connected or SessionStatus.InGame;
var bans = await _db.CountServerBansAsync(null, data.UserId, null);
var notes = await _notes.CountNotes(data.UserId);
return new PlayerInfo(name, entityName, identityName, startingRole, antag, session?.AttachedEntity, data.UserId,
connected, _roundActivePlayers.Contains(data.UserId));
connected, _roundActivePlayers.Contains(data.UserId), bans, notes);
}
}
}