feat: add support for broadcasting and handling channel deletions across clients

This commit is contained in:
Stone_Red
2026-07-17 16:35:59 +02:00
committed by HueByte
parent 4d25458717
commit a9519a52cc
11 changed files with 39 additions and 0 deletions
@@ -162,6 +162,8 @@ public class ChannelsController : ControllerBase
if (!result.IsSuccess)
return MapChannelError(result);
await _chatService.BroadcastChannelDeletedAsync(channel.ToLowerInvariant().Trim());
return NoContent();
}
@@ -320,6 +320,9 @@ public class ChatService : IChatService
public Task BroadcastChannelUpdatedAsync(ChannelDto channel, string? channelName = null)
=> BroadcastToAllAsync(b => b.SendChannelUpdatedAsync(channel, channelName));
public Task BroadcastChannelDeletedAsync(string channelName)
=> BroadcastToAllAsync(b => b.SendChannelDeletedAsync(channelName));
private async Task BroadcastToAllAsync(Func<IChatBroadcaster, Task> action)
{
foreach (var broadcaster in _broadcasters)
@@ -63,6 +63,9 @@ public class SignalRBroadcaster : IChatBroadcaster
public Task SendMessageDeletedAsync(string channelName, Guid messageId)
=> HubContext.Clients.Group(channelName).MessageDeleted(channelName, messageId);
public Task SendChannelDeletedAsync(string channelName)
=> HubContext.Clients.All.ChannelDeleted(channelName);
public Task SendChannelNukedAsync(string channelName)
=> HubContext.Clients.Group(channelName).ChannelNuked(channelName);