Iceshrimp.NET/Iceshrimp.Frontend/Core/Services/NoteStore/StateSynchronizer.cs
2025-01-19 22:53:25 +01:00

37 lines
882 B
C#

using Iceshrimp.Shared.Schemas.Web;
namespace Iceshrimp.Frontend.Core.Services.NoteStore;
internal class StateSynchronizer: IAsyncDisposable
{
private readonly StreamingService _streamingService;
public event EventHandler<NoteBase>? NoteChanged;
public event EventHandler<NoteBase>? NoteDeleted;
public StateSynchronizer(StreamingService streamingService)
{
_streamingService = streamingService;
_streamingService.NoteUpdated += NoteUpdated;
}
public void Broadcast(NoteBase note)
{
NoteChanged?.Invoke(this, note);
}
public void Delete(NoteBase note)
{
NoteDeleted?.Invoke(this, note);
}
private void NoteUpdated(object? sender, NoteResponse noteResponse)
{
NoteChanged?.Invoke(this, noteResponse);
}
public async ValueTask DisposeAsync()
{
_streamingService.NoteUpdated -= NoteUpdated;
await _streamingService.DisposeAsync();
}
}