using System.Linq; using Content.Server.Administration.Managers; using Content.Shared.Administration; namespace Content.Server.Administration.Systems; /// /// Server-side of the quick info system. /// /// /// Just a simple "replies to requests from authorized clients". /// /// public sealed partial class AdminQuickInfoSystem : EntitySystem { [Dependency] private IAdminManager _adminManager = null!; public override void Initialize() { base.Initialize(); SubscribeNetworkEvent(HandleRequest); } private void HandleRequest(QuickInfoShared.Request ev, EntitySessionEventArgs args) { if (!_adminManager.HasAdminFlag(args.SenderSession, QuickInfoShared.RequiredFlag)) { Log.Warning($"{args.SenderSession} tried to fetch entity quick info without required permissions!"); return; } var responses = ev.Entities.Select(e => { if (!TryGetEntity(e, out var ent)) return new QuickInfoShared.SingleEntityInfo(e, false, "", ""); var metadata = MetaData(ent.Value); return new QuickInfoShared.SingleEntityInfo(e, true, metadata.EntityName, metadata.EntityPrototype?.ID); }) .ToArray(); RaiseNetworkEvent(new QuickInfoShared.Response { Entities = responses }, args.SenderSession); } }