AdminMessageEui.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Linq;
  2. using Content.Server.Database;
  3. using Content.Server.EUI;
  4. using Content.Shared.Administration.Notes;
  5. using Content.Shared.CCVar;
  6. using Content.Shared.Eui;
  7. using Robust.Shared.Configuration;
  8. using Robust.Shared.Timing;
  9. using static Content.Shared.Administration.Notes.AdminMessageEuiMsg;
  10. namespace Content.Server.Administration.Notes;
  11. public sealed class AdminMessageEui : BaseEui
  12. {
  13. [Dependency] private readonly IAdminNotesManager _notesMan = default!;
  14. [Dependency] private readonly IConfigurationManager _cfg = default!;
  15. [Dependency] private readonly IGameTiming _gameTiming = default!;
  16. private readonly TimeSpan _closeWait;
  17. private readonly TimeSpan _endTime;
  18. private readonly AdminMessageRecord[] _messages;
  19. public AdminMessageEui(AdminMessageRecord[] messages)
  20. {
  21. IoCManager.InjectDependencies(this);
  22. _closeWait = TimeSpan.FromSeconds(_cfg.GetCVar(CCVars.MessageWaitTime));
  23. _endTime = _gameTiming.RealTime + _closeWait;
  24. _messages = messages;
  25. }
  26. public override void Opened()
  27. {
  28. StateDirty();
  29. }
  30. public override EuiStateBase GetNewState()
  31. {
  32. return new AdminMessageEuiState(
  33. _closeWait,
  34. _messages.Select(x => new AdminMessageEuiState.Message(
  35. x.Message,
  36. x.CreatedBy?.LastSeenUserName ?? Loc.GetString("admin-notes-fallback-admin-name"),
  37. x.CreatedAt.UtcDateTime)).ToArray()
  38. );
  39. }
  40. public override async void HandleMessage(EuiMessageBase msg)
  41. {
  42. base.HandleMessage(msg);
  43. switch (msg)
  44. {
  45. case Dismiss dismiss:
  46. if (_gameTiming.RealTime < _endTime)
  47. return;
  48. foreach (var message in _messages)
  49. {
  50. await _notesMan.MarkMessageAsSeen(message.Id, dismiss.Permanent);
  51. }
  52. Close();
  53. break;
  54. }
  55. }
  56. }