using Iceshrimp.Backend.Core.Database.Tables; using Iceshrimp.Backend.Core.Events; namespace Iceshrimp.Backend.Core.Services; public class EventService { public event EventHandler? NotePublished; public event EventHandler? NoteUpdated; public event EventHandler? NoteDeleted; public event EventHandler? NoteLiked; public event EventHandler? NoteUnliked; public event EventHandler? NoteReacted; public event EventHandler? NoteUnreacted; public event EventHandler? UserFollowed; public event EventHandler? UserUnfollowed; public event EventHandler? UserBlocked; public event EventHandler? UserUnblocked; public event EventHandler? UserMuted; public event EventHandler? UserUnmuted; public event EventHandler? Notification; public event EventHandler? FilterAdded; public event EventHandler? FilterRemoved; public event EventHandler? FilterUpdated; public event EventHandler? ListMembersUpdated; public void RaiseNotePublished(object? sender, Note note) => NotePublished?.Invoke(sender, note); public void RaiseNoteUpdated(object? sender, Note note) => NoteUpdated?.Invoke(sender, note); public void RaiseNoteDeleted(object? sender, Note note) => NoteDeleted?.Invoke(sender, note); public void RaiseNotification(object? sender, Notification notification) => Notification?.Invoke(sender, notification); public void RaiseNotifications(object? sender, IEnumerable notifications) { foreach (var notification in notifications) Notification?.Invoke(sender, notification); } public void RaiseNoteLiked(object? sender, Note note, User user) => NoteLiked?.Invoke(sender, new NoteInteraction { Note = note, User = user }); public void RaiseNoteUnliked(object? sender, Note note, User user) => NoteUnliked?.Invoke(sender, new NoteInteraction { Note = note, User = user }); public void RaiseNoteReacted(object? sender, NoteReaction reaction) => NoteReacted?.Invoke(sender, reaction); public void RaiseNoteUnreacted(object? sender, NoteReaction reaction) => NoteUnreacted?.Invoke(sender, reaction); public void RaiseUserFollowed(object? sender, User actor, User obj) => UserFollowed?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseUserUnfollowed(object? sender, User actor, User obj) => UserUnfollowed?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseUserBlocked(object? sender, User actor, User obj) => UserBlocked?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseUserUnblocked(object? sender, User actor, User obj) => UserUnblocked?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseUserMuted(object? sender, User actor, User obj) => UserMuted?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseUserUnmuted(object? sender, User actor, User obj) => UserUnmuted?.Invoke(sender, new UserInteraction { Actor = actor, Object = obj }); public void RaiseFilterAdded(object? sender, Filter filter) => FilterAdded?.Invoke(sender, filter); public void RaiseFilterRemoved(object? sender, Filter filter) => FilterRemoved?.Invoke(sender, filter); public void RaiseFilterUpdated(object? sender, Filter filter) => FilterUpdated?.Invoke(sender, filter); public void RaiseListMembersUpdated(object? sender, UserList list) => ListMembersUpdated?.Invoke(sender, list); }