mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 13:37:47 +03:00
## Mirror of PR #26223: [Improve admin message seen/dismiss state.](https://github.com/space-wizards/space-station-14/pull/26223) from <img src="https://avatars.githubusercontent.com/u/10567778?v=4" alt="space-wizards" width="22"/> [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `d776c4b392a082dba7539d77cfa20fc904ed4091` PR opened by <img src="https://avatars.githubusercontent.com/u/8107459?v=4" width="16"/><a href="https://github.com/PJB3005"> PJB3005</a> at 2024-03-18 04:02:20 UTC --- PR changed 21 files with 3748 additions and 108 deletions. The PR had the following labels: - Changes: UI - Status: Needs Review --- <details open="true"><summary><h1>Original Body</h1></summary> > As part of this, it has become impossible for a player to play without dismissing the message in some form. Instead of a shitty popup window, the popup is now a fullscreen overlay that blocks clicks behind it, making the game unplayable. Also, if a user somehow has multiple messages they will be combined into one popup. > > ## About the PR > Admin messages now have separate "seen" and "dismissed" fields. The idea is that an admin should be able to tell whether a user pressed the "dismiss for now" button. Instead of using "seen" as "show this message to players when they join", "dismissed" is now used for this. > > ## Why / Balance > Fixes #26211 > > ## Technical details > Existing notes in the database will automatically be marked as dismissed on migration. A note cannot be dismissed without being seen (enforced via constraint in the database too, aren't I fancy). > > ## Media > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > >  > >  > > **Changelog** > <!-- > Make players aware of new features and changes that could affect how they play the game by adding a Changelog entry. Please read the Changelog guidelines located at: https://docs.spacestation14.io/en/getting-started/pr-guideline#changelog > --> > > 🆑 > ADMIN: > - tweak: Admin messages are now shown as "seen" even if the player dismisses them only temporarily. Also, it is impossible for players to play without dismissing the message (temporary or permanent). </details> Co-authored-by: SimpleStation14 <Unknown>
58 lines
2.6 KiB
C#
58 lines
2.6 KiB
C#
using System.Threading.Tasks;
|
|
using Content.Server.Database;
|
|
using Content.Shared.Administration.Notes;
|
|
using Content.Shared.Database;
|
|
using Robust.Shared.Player;
|
|
|
|
namespace Content.Server.Administration.Notes;
|
|
|
|
public interface IAdminNotesManager
|
|
{
|
|
event Action<SharedAdminNote>? NoteAdded;
|
|
event Action<SharedAdminNote>? NoteModified;
|
|
event Action<SharedAdminNote>? NoteDeleted;
|
|
|
|
bool CanCreate(ICommonSession admin);
|
|
bool CanDelete(ICommonSession admin);
|
|
bool CanEdit(ICommonSession admin);
|
|
bool CanView(ICommonSession admin);
|
|
Task OpenEui(ICommonSession admin, Guid notedPlayer);
|
|
Task OpenUserNotesEui(ICommonSession player);
|
|
Task AddAdminRemark(ICommonSession createdBy, Guid player, NoteType type, string message, NoteSeverity? severity, bool secret, DateTime? expiryTime);
|
|
Task DeleteAdminRemark(int noteId, NoteType type, ICommonSession deletedBy);
|
|
Task ModifyAdminRemark(int noteId, NoteType type, ICommonSession editedBy, string message, NoteSeverity? severity, bool secret, DateTime? expiryTime);
|
|
/// <summary>
|
|
/// Queries the database and retrieves all notes, secret and visible
|
|
/// </summary>
|
|
/// <param name="player">Desired player's <see cref="Guid"/></param>
|
|
/// <returns>ALL non-deleted notes, secret or not</returns>
|
|
Task<List<IAdminRemarksRecord>> GetAllAdminRemarks(Guid player);
|
|
/// <summary>
|
|
/// Queries the database and retrieves the notes a player should see
|
|
/// </summary>
|
|
/// <param name="player">Desired player's <see cref="Guid"/></param>
|
|
/// <returns>All player-visible notes</returns>
|
|
Task<List<IAdminRemarksRecord>> GetVisibleRemarks(Guid player);
|
|
/// <summary>
|
|
/// Queries the database and retrieves watchlists that may have been placed on the player
|
|
/// </summary>
|
|
/// <param name="player">Desired player's <see cref="Guid"/></param>
|
|
/// <returns>Active watchlists</returns>
|
|
Task<List<AdminWatchlistRecord>> GetActiveWatchlists(Guid player);
|
|
/// <summary>
|
|
/// Queries the database and retrieves new messages a player has gotten
|
|
/// </summary>
|
|
/// <param name="player">Desired player's <see cref="Guid"/></param>
|
|
/// <returns>All unread messages</returns>
|
|
Task<List<AdminMessageRecord>> GetNewMessages(Guid player);
|
|
|
|
/// <summary>
|
|
/// Mark an admin message as being seen by the target player.
|
|
/// </summary>
|
|
/// <param name="id">The database ID of the admin message.</param>
|
|
/// <param name="dismissedToo">
|
|
/// If true, the message is "permanently dismissed" and will not be shown to the player again when they join.
|
|
/// </param>
|
|
Task MarkMessageAsSeen(int id, bool dismissedToo);
|
|
}
|