Iceshrimp.NET/Iceshrimp.Frontend/Core/Services/MessageService.cs
2024-07-11 03:07:28 +02:00

44 lines
No EOL
1 KiB
C#

using Iceshrimp.Shared.Schemas.Web;
namespace Iceshrimp.Frontend.Core.Services;
internal class MessageService
{
public event EventHandler<NoteResponse>? AnyNoteChanged;
public Dictionary<string, EventHandler<NoteResponse>> NoteChangedHandlers = new();
public void Register(string id, EventHandler<NoteResponse> func)
{
if (NoteChangedHandlers.ContainsKey(id))
{
NoteChangedHandlers[id] += func;
}
else
{
NoteChangedHandlers.Add(id, func);
}
}
public void Unregister(string id, EventHandler<NoteResponse> func)
{
if (NoteChangedHandlers.ContainsKey(id))
{
#pragma warning disable CS8601
NoteChangedHandlers[id] -= func;
#pragma warning restore CS8601
}
else
{
throw new ArgumentException("Tried to unregister from callback that doesn't exist");
}
}
public Task UpdateNote(NoteResponse note)
{
AnyNoteChanged?.Invoke(this, note);
NoteChangedHandlers.TryGetValue(note.Id, out var xHandler);
xHandler?.Invoke(this, note);
return Task.CompletedTask;
}
}