Fix admin note updates duplicating visually across all open note windows (#15471)
This commit is contained in:
@@ -117,13 +117,19 @@ public sealed class AdminNotesEui : BaseEui
|
||||
|
||||
private void NoteModified(SharedAdminNote note)
|
||||
{
|
||||
if (note.Player != NotedPlayer)
|
||||
return;
|
||||
|
||||
Notes[note.Id] = note;
|
||||
StateDirty();
|
||||
}
|
||||
|
||||
private void NoteDeleted(int id)
|
||||
private void NoteDeleted(SharedAdminNote note)
|
||||
{
|
||||
Notes.Remove(id);
|
||||
if (note.Player != NotedPlayer)
|
||||
return;
|
||||
|
||||
Notes.Remove(note.Id);
|
||||
StateDirty();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ public static class AdminNotesExtensions
|
||||
return new SharedAdminNote(
|
||||
note.Id,
|
||||
note.RoundId,
|
||||
note.PlayerUserId,
|
||||
note.Message,
|
||||
note.CreatedBy.LastSeenUserName,
|
||||
note.LastEditedBy.LastSeenUserName,
|
||||
|
||||
@@ -22,7 +22,7 @@ public sealed class AdminNotesManager : IAdminNotesManager, IPostInjectInit
|
||||
|
||||
public event Action<SharedAdminNote>? NoteAdded;
|
||||
public event Action<SharedAdminNote>? NoteModified;
|
||||
public event Action<int>? NoteDeleted;
|
||||
public event Action<SharedAdminNote>? NoteDeleted;
|
||||
|
||||
private ISawmill _sawmill = default!;
|
||||
|
||||
@@ -66,6 +66,7 @@ public sealed class AdminNotesManager : IAdminNotesManager, IPostInjectInit
|
||||
var note = new SharedAdminNote(
|
||||
noteId,
|
||||
round,
|
||||
player,
|
||||
message,
|
||||
createdBy.Name,
|
||||
createdBy.Name,
|
||||
@@ -89,7 +90,17 @@ public sealed class AdminNotesManager : IAdminNotesManager, IPostInjectInit
|
||||
var deletedAt = DateTime.UtcNow;
|
||||
await _db.DeleteAdminNote(noteId, deletedBy.UserId, deletedAt);
|
||||
|
||||
NoteDeleted?.Invoke(noteId);
|
||||
var sharedNote = new SharedAdminNote(
|
||||
noteId,
|
||||
note.RoundId,
|
||||
note.PlayerUserId,
|
||||
note.Message,
|
||||
note.CreatedBy.LastSeenUserName,
|
||||
note.LastEditedBy.LastSeenUserName,
|
||||
note.CreatedAt,
|
||||
note.LastEditedAt
|
||||
);
|
||||
NoteDeleted?.Invoke(sharedNote);
|
||||
}
|
||||
|
||||
public async Task ModifyNote(int noteId, IPlayerSession editedBy, string message)
|
||||
@@ -110,6 +121,7 @@ public sealed class AdminNotesManager : IAdminNotesManager, IPostInjectInit
|
||||
var sharedNote = new SharedAdminNote(
|
||||
noteId,
|
||||
note.RoundId,
|
||||
note.PlayerUserId,
|
||||
message,
|
||||
note.CreatedBy.LastSeenUserName,
|
||||
editedBy.Name,
|
||||
|
||||
@@ -9,7 +9,7 @@ public interface IAdminNotesManager
|
||||
{
|
||||
event Action<SharedAdminNote>? NoteAdded;
|
||||
event Action<SharedAdminNote>? NoteModified;
|
||||
event Action<int>? NoteDeleted;
|
||||
event Action<SharedAdminNote>? NoteDeleted;
|
||||
|
||||
bool CanCreate(IPlayerSession admin);
|
||||
bool CanDelete(IPlayerSession admin);
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
namespace Content.Shared.Administration.Notes;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed record SharedAdminNote(int Id, int? Round, string Message, string CreatedByName, string EditedByName, DateTime CreatedAt, DateTime LastEditedAt);
|
||||
public sealed record SharedAdminNote(int Id, int? Round, Guid Player, string Message, string CreatedByName, string EditedByName, DateTime CreatedAt, DateTime LastEditedAt);
|
||||
|
||||
Reference in New Issue
Block a user