| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System.Linq;
- using Content.Server.Database;
- using Content.Server.EUI;
- using Content.Shared.Administration.Notes;
- using Content.Shared.CCVar;
- using Content.Shared.Eui;
- using Robust.Shared.Configuration;
- using Robust.Shared.Timing;
- using static Content.Shared.Administration.Notes.AdminMessageEuiMsg;
- namespace Content.Server.Administration.Notes;
- public sealed class AdminMessageEui : BaseEui
- {
- [Dependency] private readonly IAdminNotesManager _notesMan = default!;
- [Dependency] private readonly IConfigurationManager _cfg = default!;
- [Dependency] private readonly IGameTiming _gameTiming = default!;
- private readonly TimeSpan _closeWait;
- private readonly TimeSpan _endTime;
- private readonly AdminMessageRecord[] _messages;
- public AdminMessageEui(AdminMessageRecord[] messages)
- {
- IoCManager.InjectDependencies(this);
- _closeWait = TimeSpan.FromSeconds(_cfg.GetCVar(CCVars.MessageWaitTime));
- _endTime = _gameTiming.RealTime + _closeWait;
- _messages = messages;
- }
- public override void Opened()
- {
- StateDirty();
- }
- public override EuiStateBase GetNewState()
- {
- return new AdminMessageEuiState(
- _closeWait,
- _messages.Select(x => new AdminMessageEuiState.Message(
- x.Message,
- x.CreatedBy?.LastSeenUserName ?? Loc.GetString("admin-notes-fallback-admin-name"),
- x.CreatedAt.UtcDateTime)).ToArray()
- );
- }
- public override async void HandleMessage(EuiMessageBase msg)
- {
- base.HandleMessage(msg);
- switch (msg)
- {
- case Dismiss dismiss:
- if (_gameTiming.RealTime < _endTime)
- return;
- foreach (var message in _messages)
- {
- await _notesMan.MarkMessageAsSeen(message.Id, dismiss.Permanent);
- }
- Close();
- break;
- }
- }
- }
|